403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.216.202
Web Server : Microsoft-IIS/10.0
System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64
User : IUSR ( 0)
PHP Version : 8.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Python313/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python313/Lib/test/__pycache__/test__interpchannels.cpython-313.pyc
�

��i����SSKJr SSKrSSKrSSKJr SSKrSSKrSSKrSSK	J
r
 \
R"S5rSSK
Jr SSKJrJrJr \R&\R(rSrS	S
.SjrSr04S
jr"SS\"SS55r\R6S5r"SS\"SS55r"SS\"SS55rSS.SjrSr Sr!"SS\RD5r#"SS \#5r$"S!S"\#5r%"S#S$\#5r&"S%S&\"S&S'55r'\RP"S(5"S)S*\#55r)\*S+:Xa\RV"5 gg),�)�
namedtupleN)�dedent)�
import_helper�_interpchannels)�_crossinterp)�
_interpreters�_run_output�clean_up_interpretersc���[RU5upUb[U55eU$![Ra [R
"S5 Of=fM_)N皙�����?)�	_channels�recv�repr�ChannelEmptyError�time�sleep)�cid�obj�	unboundops   �.C:\Python313\\Lib\test\test__interpchannels.py�	recv_waitrs]��
�	�&�^�^�C�0�N�C��$�5�d�9�o�5�$��J��	�*�*�	��J�J�s�O�	��s�/�*A�AF��unboundc�h�[R"U/UQ76up4USLU:wd[U55eU$�N)r
rr)rr�argsrrs     r�recv_nowaitr*s8���^�^�C�/�$�/�N�C����'�)�:�4�	�?�:�)��J�c��[XU5 gr)�_run_interp)�id�source�shareds   r�
run_interpr$:s����F�#rc���[U5n[R"5tpEX@:Xa-[R"5tpeXd:wa[e[X5 g[R"XU5 gr)rr�get_main�get_current�RuntimeError�exec�
run_string)r!r"r#�_mainns�main�_�curs       rr r >sS��
�F�^�F��%�%�'�H�D��z��+�+�-����;����V��� � ��V�4rc�<^�\rSrSr\S5rSU4SjjrSrU=r$)�Interpreter�Kc�l�[X5(aU$[U[5(aU"U5$[er)�
isinstance�str�NotImplementedError)�cls�raws  r�from_raw�Interpreter.from_rawMs.���c����J�
��S�
!�
!��s�8�O�%�%rc�>�[R"5tp4X#:Xa-U(dSnO US:wa[SRU55eUnOkUbAU(dSnOUS:Xa[S5e[	U[
5(d[
U55eO'U(aUS:XaSnUnO[R"5n[TU]%XU5nU$)Nr,z)name mismatch (expected "main", got "{}")�interpz!name mismatch (unexpected "main"))
rr&�
ValueError�formatr3�intr�create�super�__new__)r6�namer!r,r-�self�	__class__s      �rrA�Interpreter.__new__Vs���� �)�)�+���
�:������� �?�F�F�t�L�N�N��B�
�^������� �!D�E�E��b�#�&�&�0��R��0�&������D��B��%�%�'�B��w��s�"�-���r��NN)	�__name__�
__module__�__qualname__�__firstlineno__�classmethodr8rA�__static_attributes__�
__classcell__�rDs@rr0r0Ks����&��&��rr0zname idc#�V# �Sv� S5e![Ra gf=f7f)Nzchannel not closed)r
�ChannelClosedErrorrFrr�expect_channel_closedrRps3���+�
�	+�*�*�u���'�'�
��
�s�)��)�&�)�&�)c�>^�\rSrSrSU4SjjrSrSrSrSrU=r	$)�
ChannelAction�zc�L>�U(dSnU(dSn[TU]XX#5nU$)N�bothr,�r@rA)r6�action�endr;rCrDs     �rrA�ChannelAction.__new__|s(�����C���F��w��s�C�8���rc�P�URS:Xa&URS;a[UR5eOKURS;a&URS;a[UR5eO[UR5eURS;a[UR5eg)N�use)�same�opposite�sendr��close�force-close)rWr^r_r`r)r,r^�other�extra)rYrZr<r;)rCr�kwargss   r�__init__�ChannelAction.__init__�s����;�;�%���x�x�C�C� ����*�*�D�
�[�[�4�
4��x�x�K�K� ����*�*�L��T�[�[�)�)��;�;�@�@��T�[�[�)�)�Arc�r�URS:XaU$URS:Xa
US:XaS$S$UR$)Nr^r_r`r�rZ�rCrZs  r�resolve_end�ChannelAction.resolve_end�s9���8�8�v���J�
�X�X��
#� �F�]�6�6��6��8�8�Orc��URS:XaU$URS:XaUc[eU$URS:XaUc[eU$URS:Xa1URS:XaU$U(aURS:XaU$[eg)Nr^rdrer,)r;r(rB)rCr;rdres    r�resolve_interp�ChannelAction.resolve_interp�s����;�;�&� ��M�
�[�[�G�
#��}�"�"��L�
�[�[�G�
#��}�"�"��L�
�[�[�F�
"��{�{�f�$��
��5�:�:��/���"�"�
#rrFrG)
rHrIrJrKrArgrlrorMrNrOs@rrTrTzs����
*��#�#rrTzaction end interpc�N^�\rSrSrSSS.U4SjjjrSrSrSS.S	jrS
rU=r	$)�ChannelState�F��closedc�(>�[TU]XU5nU$rrX)r6�pendingrurCrDs    �rrA�ChannelState.__new__�s����w��s�V�4���rc�P�[U5"URS-URS9$�N�rt��typerwru�rCs r�incr�ChannelState.incr�� ���D�z�$�,�,��*�4�;�;�?�?rc�P�[U5"URS-
URS9$rzr|r~s r�decr�ChannelState.decr�r�rT��forcec��UR(aU(aURS:XaU$[U5"U(aSSS9$URSS9$)NrTrt)rurwr})rCr�s  rrb�ChannelState.close�s=���;�;��D�L�L�A�-����D�z�u�!�t�D�D�$�,�,�t�D�DrrF)r)
rHrIrJrKrArr�rbrMrNrOs@rrrrr�s1����%���@�@�"�E�Errrzpending closedT��
hideclosedc��UR(a#US:XaUS:XaUR(aSnOSnOSn[XX#5nU(aSeU$![Ra# U(dU(deUR5nU$f=f)Nr]rFT.)rurw�_run_actionr
rQrb)rrYrZ�stater��
expectfail�results       r�
run_actionr��s����|�|��U�?�s�f�}�����J��J��
���S�#�5����I���M���'�'���*��������M��s�A�3B�Bc�T�US:Xa�US:Xa%[RUSSS9 UR5$US:XaMUR(d![R	U5 [S5e[U5 UR5$[U5eUS:Xa30nUS	;aS
XB'[R"U40UD6 UR5$US:Xa4SS
0nUS	;aS
XB'[R"U40UD6 URS
S
9$[U5e![Ra Us$f=f)Nr]r`�spamF��blockingrzexpected ChannelEmptyErrorrb�rr`Trcr�r�)r
r`rrwr�	Exceptionrrr�r<rb)rrYrZr�rfs     rr�r��s#��
����&�=��N�N�3��%�N�8��:�:�<��
�F�]��=�=�B��N�N�3�'�$�$@�A�A��C� ��z�z�|�#��S�/�!�	�7�	����"�"��F�K�����&�v�&��{�{�}��	�=�	 ��T����"�"��F�K�����&�v�&��{�{��{�&�&��� � ��1!�2�2�!� �L�!�s�
D�D'�&D'c��[R5Hup[RU5 M g![Ra M7f=fr)r
�list_all�destroy�ChannelNotFoundError)rr-s  r�clean_up_channelsr��sD���$�$�&���	����c�"�'���-�-�	��	�s�5�A
�A
c��\rSrSrSrSrg)�TestBaseic�,�[5 [5 gr)r�r
r~s r�tearDown�TestBase.tearDowns�����rrFN)rHrIrJrKr�rMrFrrr�r�s�� rr�c�P�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
Srg
)�ChannelIDTestsic��[RSSS9nUR[U5S5 URURS5 g)N�
Tr�rW)r
�_channel_id�assertEqualr>rZ�rCrs  r�test_default_kwargs�"ChannelIDTests.test_default_kwargs
s?���#�#�B�d�#�3������S��2�&�������&�)rc���[RSSSS9nURURS5 [RSSSSS9nURURS5 [RSSSS9nURURS5 [RSSSSS	9nURURS5 [RSSSSS9nURURS
5 g)Nr�T�r`r�r`F�r`rr��rr�r)rr`r�rW)r
r�r�rZr�s  r�test_with_kwargs�ChannelIDTests.test_with_kwargss����#�#�B�T��#�>��������&�)��#�#�B�T��T�#�J��������&�)��#�#�B�T��#�>��������&�)��#�#�B�T��T�#�J��������&�)��#�#�B�T��D�#�I��������&�)rc��"SS[5n[RU"5SS9nUR[	U5S5 g)Nc��\rSrSrSrSrg)�*ChannelIDTests.test_coerce_id.<locals>.Inti$c��g�Nr�rFr~s r�	__index__�4ChannelIDTests.test_coerce_id.<locals>.Int.__index__%s��rrFN)rHrIrJrKr�rMrFrr�Intr�$s��
rr�Tr�r�)r4r
r�r�r>)rCr�rs   r�test_coerce_id�ChannelIDTests.test_coerce_id#s;��	�#�	��#�#�C�E��#�6������S��2�&rc���UR[[R[	55 UR[[RS5 UR[[RS5 UR[[RS5 UR[
[RS5 UR[[RS5 g)Ng$@�10s10���l)�assertRaises�	TypeErrorr
r��objectr<�
OverflowErrorr~s r�test_bad_id�ChannelIDTests.test_bad_id+s������)�Y�%:�%:�F�H�E����)�Y�%:�%:�D�A����)�Y�%:�%:�D�A����)�Y�%:�%:�E�B����*�i�&;�&;�R�@����-��)>�)>��Frc��UR[5 [RSSSS9 SSS5 g!,(df   g=f)Nr�F�r`r)r�r<r
r�r~s r�test_bad_kwargs�ChannelIDTests.test_bad_kwargs3s1��
�
�
�z�
*��!�!�"�5�u�!�=�+�
*�
*�s	�5�
Ac���[R[5nUR[R5 [R[
U5S-5 SSS5 g!,(df   g=f�Nr{)r
r?�REPLACEr�r�r�r>r�s  r�test_does_not_exist�"ChannelIDTests.test_does_not_exist7sH�����w�'��
�
�
�y�=�=�
>��!�!�#�c�(�Q�,�/�?�
>�
>�s�"A$�$
A2c�b�[RSSS9nUR[U5S5 g)Nr�Tr�r�)r
r�r�r4r�s  r�test_str�ChannelIDTests.test_str<s+���#�#�B�d�#�3������S��4�(rc��[RSSS9nUR[U5S5 [RSSSS9nUR[U5S5 [RSSSS9nUR[U5S5 [RSSSSS	9nUR[U5S5 g)
Nr�Tr�z
ChannelID(10)r�zChannelID(10, send=True)r�zChannelID(10, recv=True)r�)r
r�r�rr�s  r�	test_repr�ChannelIDTests.test_repr@s����#�#�B�d�#�3������c��O�4��#�#�B�T��#�>������c��$>�?��#�#�B�T��#�>������c��$>�?��#�#�B�T��D�#�I������c��O�4rc���[R[5n[R[	U55n[R[5nURX:H5 URX:H5 URU[	U5:H5 UR[	U5U:H5 URU[
[	U55:H5 UR[
[	U55U:H5 URU[
[	U55S-:H5 URU[[	U55:H5 URUSS-:H5 URU[
S5:H5 URUS:H5 URX:H5 URX:g5 URX:g5 URX:g5 g)Nr����inf�spam)	r
r?r�r�r>�
assertTrue�float�assertFalser4)rC�cid1�cid2�cid3s    r�
test_equality�ChannelIDTests.test_equalityMsi������(���$�$�S��Y�/������(�������%������%������D�	�)�*�����D�	�T�)�*������c�$�i� 0�0�1�����c�$�i�(�D�0�1������s�4�y�!1�C�!7�7�8������S��Y��/�0������D���)������u��-�.�������(������&������&������&������%rc��[R[5n[R[5n[RXSS9 [	U5nURX25 UR
[U5[U55 g)NFr�)r
r?r�r`rr��assertIsr})rC�chanr�gots    r�test_shareable�ChannelIDTests.test_shareablecs`������(�����w�'�����t�5��1��$�������"��
�
�d�3�i��c��+rrFN)rHrIrJrKr�r�r�r�r�r�r�r�r�r�rMrFrrr�r�s5��*�*� '�G�>�0�
)�5�&�,,rr�c�~�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSr\R("S5S5rSrSrSrSrSrSrSrSrSrSrSr SS.S jr!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/r0S0r1S1r2S2r3S3r4S4r5S5r6S6r7S7r8S8r9S9r:g:);�ChannelTestsipc�v�[R[5nURU[R5 gr)r
r?r��assertIsInstance�	ChannelIDr�s  r�test_create_cid�ChannelTests.test_create_cidrs(�����w�'�����c�9�#6�#6�7rc��[R5VVs/sHupUPM	 nnn[R[5n[R[5n[R[5n[R5VVs/sHupUPM	 nnnUR	U[U5S-5 UR	U[U5S-5 UR	[
U5[
U5-
XEU15 gs snnfs snnfr�)r
r�r?r�r�r>�set)rCrr-�before�id1�id2�id3�afters        r�test_sequential_ids� ChannelTests.test_sequential_idsvs���$-�$6�$6�$8�9�$8�&�#�#�$8��9����w�'�����w�'�����w�'��#,�#5�#5�#7�8�#7����#7��8�����c�#�h��l�+�����c�#�h��l�+�����U��c�&�k�1�C�c�?�C��:��9s�D�Dc���[R[5n[R[5n[R[5n[R5nUVs/sHoUSU:wdM
UPM nn[R	USS9 [R5nUR[
U5[
U55 UR[U5[U5S-
5 gs snf)NrTr�r{)r
r?r�r�rbr�r��len�rCr�r�r�r��info�expectedr�s        r�test_channel_list_all_closed�)ChannelTests.test_channel_list_all_closed�s������w�'�����w�'�����w�'���#�#�%��%+�>�V�T�A�w�#�~�D�V��>�����4��(��"�"�$������U��S��]�3�����U��S��[�1�_�5��	?s�$C0�4C0c���[R[5n[R[5n[R[5n[R5nUVs/sHoUSU:wdM
UPM nn[R	U5 [R5nUR[
U5[
U55 UR[U5[U5S-
5 gs snf)Nrr{)r
r?r�r�r�r�r�r�r�s        r�test_channel_list_all_destroyed�,ChannelTests.test_channel_list_all_destroyed�s������w�'�����w�'�����w�'���#�#�%��%+�>�V�T�A�w�#�~�D�V��>����#���"�"�$������U��S��]�3�����U��S��[�1�_�5��	?s�$C1�4C1c��[R[5n[R[5n[R[5n[R5n[R	USSS9 [R5nUR[
U5[
U55 UR[U5[U55 g)NTr�)r
r?r�r��releaser�r�r�)rCr�r�r�r�r�s      r�test_channel_list_all_released�+ChannelTests.test_channel_list_all_released�s������w�'�����w�'�����w�'���#�#�%�����#�D�t��4��"�"�$������U��S��[�1�����U��S��[�1rc�L�[R"5n[U[S55n[	UR55n[R"5n[U[S55n[	UR55nUR
U[	U5S-5 g)Nzz
            import _interpchannels as _channels
            cid = _channels.create(3)
            print(cid)
            r{)rr?r	rr>�stripr�)rCr��outr�r�r�s      r�test_ids_global�ChannelTests.test_ids_global�s����"�"�$���#�v�'� ���
�3�9�9�;����"�"�$���#�v�'� ���
�3�9�9�;�������s�4�y�1�}�-rc���[R[5n[RUSS9n[RUSS9nUR	U/5 UR	U/5 g)z=Test listing interpreters for a channel with no associations.T�r`FN)r
r?r��list_interpretersr�)rCr�send_interps�recv_interpss    r�#test_channel_list_interpreters_none�0ChannelTests.test_channel_list_interpreters_none�s^�����w�'�� �2�2�3�T�2�B�� �2�2�3�U�2�C������r�*�����r�*rc��[R"5tp[R[5n[RUSSS9 [R
USS9n[R
USS9nURXA/5 URU/5 [R"5n[U[SUS355 [R
USS9n[R
USS9nURXA/5 URXV/5 g)	z)Test basic listing channel _interpreters.r`Fr�Tr	�L
            import _interpchannels as _channels
            _channels.recv(�)
            N)
rr&r
r?r�r`r
r�r	r)rC�interp0r-rrr�interp1s       r�$test_channel_list_interpreters_basic�1ChannelTests.test_channel_list_interpreters_basic�s���#�,�,�.������w�'�����s�F�U��3� �2�2�3�T�2�B�� �2�2�3�U�2�C������y�1�����r�*��&�&�(���G�V�)��5�!
�%��	�
!�2�2�3�T�2�B�� �2�2�3�U�2�C������y�1�����y�1rc�`�[R"5tp[R"5n[R"5n[R"5n[R[5n[RUSSS9 [
U[SUS355 [
U[SUS355 [
U[SUS355 [RUSS	9n[RUSS	9nUR[U5X15 UR[U5XE15 g
)z?Test listing interpreters for a channel with many associations.r`Fr��L
            import _interpchannels as _channels
            _channels.send(z&, "send", blocking=False)
            rrTr	N)rr&r?r
r�r`r	rr
r�r�)	rCrr-r�interp2�interp3rrrs	         r�'test_channel_list_interpreters_multiple�4ChannelTests.test_channel_list_interpreters_multiple�s-��#�,�,�.����&�&�(���&�&�(���&�&�(�����w�'�����s�F�U��3��G�V�)��5�!
�%��	�	�G�V�)��5�!
�%��	�	�G�V�)��5�!
�%��	�!�2�2�3�T�2�B�� �2�2�3�U�2�C������\�*�W�,>�?�����\�*�W�,>�?rc�D�[R"5tp[R"5n[R[5n[RUSSS9 [
U[SUS355 [RUSS9n[RUSS9nURXQ/5 URXc/5 [R"U5 [RUSS9n[RUSS9nURXQ/5 URU/5 g)	z?Test listing channel interpreters with a destroyed interpreter.r`Fr�rrTr	N)rr&r?r
r�r`r	rr
r�r��rCrr-rrrrs       r�(test_channel_list_interpreters_destroyed�5ChannelTests.test_channel_list_interpreters_destroyed�s��#�,�,�.����&�&�(�����w�'�����s�F�U��3��G�V�)��5�!
�%��	�
!�2�2�3�T�2�B�� �2�2�3�U�2�C������y�1�����y�1����g�&� �2�2�3�T�2�B�� �2�2�3�U�2�C������y�1�����r�*rc���[R"5tp[R"5n[R"5n[R[5n[RUSSS9 [
U[SUS355 [RUSSS9 [
U[SUS355 [RUSS9n[RUSS9nUR[U5S5 UR[U5S	5 [RUSS9 [RUSS9n[RUSS9nUR[U5S
5 UR[U5S	5 [
U[SUS355 [RUSS9n[RUSS9nUR[U5S
5 URXs/5 g)
z:Test listing channel interpreters with a released channel.�dataFr�rrTr	r{r�r�O
            import _interpchannels as _channels
            _channels.release(N)rr&r?r
r�r`r	rr
r�r�r)rCrr-rrrrrs        r�'test_channel_list_interpreters_released�4ChannelTests.test_channel_list_interpreters_releaseds���$�,�,�.����&�&�(���&�&�(�����w�'�����s�F�U��3��G�V�)��5�!
�%��	�	���s�F�U��3��G�V�)��5�!
�%��	�
!�2�2�3�T�2�B�� �2�2�3�U�2�C������\�*�A�.�����\�*�A�.�	���#�D��)� �2�2�3�T�2�B�� �2�2�3�U�2�C������\�*�A�.�����\�*�A�.�	�G�V�)�"�e�$
�%��	�
!�2�2�3�T�2�B�� �2�2�3�U�2�C������\�*�A�.�����y�1rc���[R"5tp[R"5n[R[5n[RUSSS9 [R
USS9n[R
USS9nUR[U5S5 UR[U5S5 [RUSS9 UR[R5 [R
USS9 S	S	S	5 UR[R5 [R
USS9 S	S	S	5 g	!,(df   NK=f!,(df   g	=f)
z8Test listing channel interpreters with a closed channel.r`Fr�Tr	r{rr�N)rr&r?r
r�r`r
r�r�rbr�rQrs       r�%test_channel_list_interpreters_closed�2ChannelTests.test_channel_list_interpreters_closed/s��#�,�,�.����&�&�(�����w�'�����s�F�U��3�!�2�2�3�T�2�B�� �2�2�3�U�2�C������\�*�A�.�����\�*�A�.�	����4��(�
�
�
�y�;�;�
<��'�'��$�'�7�=�
�
�
�y�;�;�
<��'�'��%�'�8�=�
<�=�
<��
<�
<�s�+E�'E�
E�
E$c���[R"5tp[R"5n[R[5n[RUSSS9 [R
USS9n[R
USS9nUR[U5S5 UR[U5S5 [RUSS9 UR[R5 [R
USS9 SSS5 [R
USS9nUR[U5S5 [U[S	US
355 g!,(df   NW=f)zCTest listing channel interpreters with a channel's send end closed.r`Fr�Tr	r{rN�M
            import _interpchannels as _channels
            _channels.close(�, force=True)
            )rr&r?r
r�r`r
r�r�rbr�rQr	rrs       r�.test_channel_list_interpreters_closed_send_end�;ChannelTests.test_channel_list_interpreters_closed_send_endEs7��#�,�,�.����&�&�(�����w�'�����s�F�U��3�!�2�2�3�T�2�B�� �2�2�3�U�2�C������\�*�A�.�����\�*�A�.�	����$��'�
�
�
�y�;�;�
<��'�'��$�'�7�=�!�2�2�3�U�2�C������\�*�A�.�	�G�V�)� �E�"
�%��	�	�=�
<�s�+E�
Ec�P�[R[5n/SQnUHqnURU5 [R	XSS9 [U5nUR
XC5 UR[U5[U55 SSS5 Ms g!,(df   M�=f)N)Nr�r��*Fr�)	r
r?r��subTestr`rr�r�r})rCr�objectsrr�s     r�test_allowed_types�ChannelTests.test_allowed_typeshs~�����w�'��
���C����c�"����s�%��8�!�#�&��� � ��*��
�
�d�3�i��c��3�#�"��"�"�s�AB�
B%	c�T�[R[5n[R"5n[R"U[URS95 [U[S55n[U5nURUS5 URUR5S5 g)N�rz�
            import _interpchannels as _channels
            print(cid.end)
            _channels.send(cid, b'spam', blocking=False)
            r�r`)r
r?r�r�set___main___attrs�dictr`r	rrr�r�rCrr;rrs     r�test_run_string_arg_unresolved�+ChannelTests.test_run_string_arg_unresolved{s������w�'���%�%�'���(�(���#�(�(�1C�D��&�&�*�#���
�#�������g�&��������f�-rz(disabled until high-level channels existc�P�[R[5n[RUSS9n[R"5n[U[
S5[URS95n[U5nURUS5 URUR5S5 g)NT)�_resolvez�
            import _interpchannels as _channels
            print(chan.id.end)
            _channels.send(chan.id, b'spam', blocking=False)
            )r�r�r`)r
r?r�r�rr	rr6r`rr�rr7s     r�test_run_string_arg_resolved�)ChannelTests.test_run_string_arg_resolved�s������w�'���#�#�C�$�#�7���%�%�'���&�&�*�#�

�c�h�h��!���#�������g�&��������f�-rc��[R[5nSn[RXSS9 [	U5nURX25 UR
X25 g�Nr�Fr�)r
r?r�r`rr��assertIsNot)rCr�origrs    r�test_send_recv_main� ChannelTests.test_send_recv_main�sM�����w�'�������s�5��1��#�������#�����#rc�X�[R"5n[U[S55ng)Na%
            import _interpchannels as _channels
            cid = _channels.create(REPLACE)
            orig = b'spam'
            _channels.send(cid, orig, blocking=False)
            obj, _ = _channels.recv(cid)
            assert obj is not orig
            assert obj == orig
            )rr?r	r)rCr�rs   r�test_send_recv_same_interpreter�,ChannelTests.test_send_recv_same_interpreter�s(���"�"�$���#�v�'� ��rc���[R[5n[R"5n[	U[SUS355n[
U5nURUS5 g)Nr�', b'spam', blocking=False)
            r�)r
r?r�rr	rrr�)rCrr�rrs     r�%test_send_recv_different_interpreters�2ChannelTests.test_send_recv_different_interpreters�sc�����w�'���"�"�$���#�v�+��5�!
�'� ����#�������g�&rc�^�[R[5mU4Sjn[R"US9nUR5 [R
TS5 [T5nUR5 URUS5 g)Nc�H>�[T5n[RTU5 gr)rr
r`)rrs �r�f�8ChannelTests.test_send_recv_different_threads.<locals>.f�s����C�.�C��N�N�3��$r��targetr�)
r
r?r��	threading�Thread�startr`r�joinr�)rCrM�trrs    @r� test_send_recv_different_threads�-ChannelTests.test_send_recv_different_threads�sc������w�'��	%�
���A�&��	���	����s�G�$���n��	��������g�&rc�H^^^�[R[5m[R"5mSmUUU4Sjn[R
"US9nUR
5 [RTS5 [T5nUR5 URUS5 g)Nc
�>>�[T[STSTS355mg)Nz�
                import time
                import _interpchannels as _channels
                while True:
                    try:
                        obj, _ = _channels.recv(z�)
                        break
                    except _channels.ChannelEmptyError:
                        time.sleep(0.1)
                assert(obj == b'spam')
                _channels.send(z, b'eggs')
                )r	r)rr�rs���rrM�IChannelTests.test_send_recv_different_interpreters_and_threads.<locals>.f�s8����c�6�/1�
25��6 �
!$�u�%�+�$��CrrOr��eggs)r
r?r�rrQrRrSr`rrTr�)rCrMrUrrr�rs    @@@r�1test_send_recv_different_interpreters_and_threads�>ChannelTests.test_send_recv_different_interpreters_and_threads�sv������w�'���"�"�$����
	�
���A�&��	���	����s�G�$���n��	��������g�&rc��UR[R5 [RSS5 SSS5 g!,(df   g=f)Nr�r�)r�r
r�r`r~s r�test_send_not_found� ChannelTests.test_send_not_found�s0��
�
�
�y�=�=�
>��N�N�2�w�'�?�
>�
>�s�A�
Ac��UR[R5 [RS5 SSS5 g!,(df   g=fr�)r�r
r�rr~s r�test_recv_not_found� ChannelTests.test_recv_not_found�s.��
�
�
�y�=�=�
>��N�N�2��?�
>�
>�s	�?�
A
c���[R[5nUR[R5 [RU5 SSS5 g!,(df   g=fr)r
r?r�r�rrr�s  r�test_recv_empty�ChannelTests.test_recv_empty�s>�����w�'��
�
�
�y�:�:�
;��N�N�3��<�
;�
;�s�A�
A&c�J�[5n[R[5n[	X!5n[RUSSS9 [RUSSS9 [RUSSS9 [RUSSS9 [	X!5n[	X!5n[	U5n[	X!5n[	X!5nUR
X15 UR
US5 URUS5 URUS5 URUS5 UR
X�5 g)NFr�r{r�r[)r�r
r?r�rr`r�r�)	rC�defaultr�obj1�obj2�obj3�obj4�obj5�obj6s	         r�test_recv_default�ChannelTests.test_recv_default�s����(�����w�'���3�(�����s�D�5��1����s�A���.����s�G�e��4����s�G�e��4��3�(���3�(���3����3�(���3�(���
�
�d�$��
�
�d�D�!�����q�!�����w�'�����w�'��
�
�d�$rc	���URS5 [R[5n[R"5n[R
"U[
SUS355 [R"U5 UR[SUS35 [RU5 SSS5 ASSS5 URS5 [R[5n[R"5n[R
"U[
SUS355 [RUSSS	9 [R"U5 [US
S9 [USS9 UR[SUS35 [RU5 SSS5 ASSS5 g!,(df   N�=f!,(df   GN=f!,(df   N;=f!,(df   g=f)
NruzT
                import _interpchannels as _channels
                _channels.send(z+, b'spam', blocking=False)
                zchannel z
 is closedz
still openr[Fr�Trz	 is empty)
r/r
r?r�rr*rr��assertRaisesRegexr(rr`r)rCr�r;r�s    r�"test_recv_sending_interp_destroyed�/ChannelTests.test_recv_sending_interp_destroyeds���
�\�\�(�
#��#�#�G�,�D�"�)�)�+�F��$�$�V�V�9 � $�v�&�5�.�
�
�!�!�&�)��'�'��*2�4�&�
�(C�E����t�$�E��$��\�\�,�
'��#�#�G�,�D�"�)�)�+�F��$�$�V�V�9 � $�v�&�5�.�
�
�N�N�4��5�N�9��!�!�&�)���d�+���e�,��'�'��*2�4�&�	�(B�D����t�$�D��(�
'�	E�E��$�
#��2D�D��(�
'�sI�BF2�F!�+	F2�
B,G�9G�	G�!
F/	�+F2�2
G�
G	�G�
G#c�R�[S5n[R[5n[R	X!SS9 [U5nUR
X15 URU[5 URX15 SUSS&URX15 SUSS&URX15 g)NsspamspamspamFr�r[��sham.)
�	bytearrayr
r?r��send_bufferrr@r��
memoryviewr�)rC�bufrrs    r�test_send_buffer�ChannelTests.test_send_buffer0s�����(�����w�'�����c���7��#�������"����c�:�.�����"���A�a������"���A�a������"rF��bufferc�^�U(a[RnO[Rn[R[5n[
R"5nU"XASS9 [
R"5n[U5 [RU5 Xe-
mTS-mU4SjnU$![RU5 f=f)NFr��c�2>�[R"T5 gr)rr)�delays�r�wait�,ChannelTests.build_send_waiter.<locals>.waitUs����J�J�u�r)	r
ryr`r?r�r�	monotonicrr�)	rCrrr`r�started�stoppedr�r�s	        @r�build_send_waiter�ChannelTests.build_send_waiterBs������(�(�D��>�>�D����w�'��	#��n�n�&�G���E�*��n�n�&�G�������c�"��!��
��
��	����

���c�"�s�<B&�&B=c�,^^^�SmSnURU5m[R[5mUUU4Sjn[R
"US9nUR
5 [RTUSS9 UR5 URTU5 g)Nr�c�*>�T"5 [T5mgr�r�r�receivedr�s���rrM�2ChannelTests.test_send_blocking_waiting.<locals>.f^�����F� ��~�HrrOTr�)
r�r
r?r�rQrRrSr`rTr��rCrrMrUrr�r�s    @@@r�test_send_blocking_waiting�'ChannelTests.test_send_blocking_waitingYsx��������%�%�c�*�����w�'��	&�
���A�&��	���	����s�C�$��/�	��������3�'rc�<^^^�Sm[S5nURUSS9m[R[5mUUU4Sjn[
R"US9nUR5 [RTUSS9 UR5 URTU5 g)Nr�Tr~c�*>�T"5 [T5mgrr�r�s���rrM�9ChannelTests.test_send_buffer_blocking_waiting.<locals>.fnr�rrOr�)rxr�r
r?r�rQrRrSryrTr�r�s    @@@r�!test_send_buffer_blocking_waiting�.ChannelTests.test_send_buffer_blocking_waitingis�������� ���%�%�c�$�%�7�����w�'��	&�
���A�&��	���	����c�3���6�	��������3�'rc�^^�SmSn[R[5mUU4Sjn[R"US9nUR5 [R
TUSS9 UR5 URTU5 g)Nr�c�>�[T5mgrr��rr�s��rrM�2ChannelTests.test_send_blocking_no_wait.<locals>.f}���� ��~�HrrOTr�)	r
r?r�rQrRrSr`rTr��rCrrMrUrr�s    @@r�test_send_blocking_no_wait�'ChannelTests.test_send_blocking_no_waitysh����������w�'��	&�
���A�&��	���	����s�C�$��/�	��������3�'rc�^^�Sm[S5n[R[5mUU4Sjn[R
"US9nUR
5 [RTUSS9 UR5 URTU5 g)Nr�c�>�[T5mgrr�r�s��rrM�9ChannelTests.test_send_buffer_blocking_no_wait.<locals>.f�r�rrOTr�)
rxr
r?r�rQrRrSryrTr�r�s    @@r�!test_send_buffer_blocking_no_wait�.ChannelTests.test_send_buffer_blocking_no_wait�sp������� �����w�'��	&�
���A�&��	���	����c�3���6�	��������3�'rc	�^�SnURS5 [R[5mUR	[
5 [R
TUSSS9 SSS5 SSS5 URS5 [R[5mUR	[5 [R
TUSSS9 SSS5 UR	[R5 [T5n[[U55 SSS5 SSS5 URS5 [R[5mU4S	jn[R"US
9nUR5 [R
TUSSS9 UR5 SSS5 g!,(df   GNI=f!,(df   GNS=f!,(df   GN=f!,(df   N�=f!,(df   N�=f!,(df   g=f)Nr��non-blocking with timeoutFr�r��timeout�timeout hitT�timeout not hitc�>�[T5 grr�r4s�rrM�)ChannelTests.test_send_timeout.<locals>.f��
����#�rrOr�)r/r
r?r�r�r<r`�TimeoutErrorrr�printrrQrRrSrT�rCrr�rMrUrs     @r�test_send_timeout�ChannelTests.test_send_timeout�sa�����
�\�\�5�
6��"�"�7�+�C��"�"�:�.����s�C�%���E�/�7�
�\�\�-�
(��"�"�7�+�C��"�"�<�0����s�C�$���D�1��"�"�9�#>�#>�?�&�s�+���d�8�n�%�@�	)��\�\�+�
,��"�"�7�+�C�
�� � ��*�A�
�G�G�I��N�N�3��d�B�N�?�
�F�F�H�-�
,�/�.��7�
6��1�0��?�?��	)�
(��-�
,�sl�/F/�F�F/�</G$�+G�'G$�) G�	G$�*A*G5�
F,	�'F/�/
F>�
G	�G$�
G!	�G$�$
G2�5
Hc	�^�UR SUl[	S5nURS5 [R[5mUR[5 [RTUSSS9 SSS5 SSS5 URS5 [R[5mUR[5 [RTUSSS9 SSS5 UR[R5 [T5n[[!U55 SSS5 SSS5 URS	5 [R[5mU4S
jn["R$"US9nUR'5 [RTUSSS9 UR)5 SSS5 g![a [R"S5ef=f!,(df   GNm=f!,(df   GNw=f!,(df   GN*=f!,(df   N�=f!,(df   N�=f!,(df   g=f)
NT�#temporarily skipped due to refleaksr�r�Frr�r�r�c�>�[T5 grr�r4s�rrM�0ChannelTests.test_send_buffer_timeout.<locals>.f�r�rrOr�)�_has_run_once_timeout�AttributeError�unittest�SkipTestrxr/r
r?r�r�r<ryr�rrr�rrQrRrSrTr�s     @r�test_send_buffer_timeout�%ChannelTests.test_send_buffer_timeout�s����
	.��&�&�*.�D�&��� ��
�\�\�5�
6��"�"�7�+�C��"�"�:�.��%�%�c�3���%�L�/�7�
�\�\�-�
(��"�"�7�+�C��"�"�<�0��%�%�c�3��s�%�K�1��"�"�9�#>�#>�?�&�s�+���d�8�n�%�@�	)��\�\�+�
,��"�"�7�+�C�
�� � ��*�A�
�G�G�I��!�!�#�s�T�2�!�F�
�F�F�H�-�
,��3�	K��#�#�$I�J�J�
	K��/�.��7�
6��1�0��?�?��	)�
(��-�
,�sw�F:�/G0�!G�8G0�/H%�H�'H%� H�&H%�A*H6�:!G�
G-	�(G0�0
G?�
H	�H%�
H"	�H%�%
H3�6
Ic	�d^^�SnURU5mURS5 [R[5mUU4Sjn[
R"US9nUR5 UR[R5 [RTUSS9 SSS5 UR5 SSS5 URS5 [R[5mUU4Sjn[
R"US9nUR5 UR[R5 [RTUSS	S
9 SSS5 UR5 SSS5 g!,(df   N�=f!,(df   N�=f!,(df   NI=f!,(df   g=f)Nr��without timeoutc�<>�T"5 [RTSS9 g�NTr��r
rb�rr�s��rrM�6ChannelTests.test_send_closed_while_waiting.<locals>.f�����������4��0rrOTr��with timeoutc�<>�T"5 [RTSS9 gr�r�r�s��rrMr��r�r�r�)r�r/r
r?r�rQrRrSr�rQr`rT�rCrrMrUrr�s    @@r�test_send_closed_while_waiting�+ChannelTests.test_send_closed_while_waiting�s2������%�%�c�*��
�\�\�+�
,��"�"�7�+�C�
1�� � ��*�A�
�G�G�I��"�"�9�#?�#?�@����s�C�$��7�A�
�F�F�H�-��\�\�.�
)��"�"�7�+�C�
1�� � ��*�A�
�G�G�I��"�"�9�#?�#?�@����s�C�$���C�A�
�F�F�H�*�
)�	A�@��-�
,��$A�@��*�
)�sI�A$E?�E.�!E?�A$F!�6F�
F!�.
E<	�8E?�?
F
�
F	�F!�!
F/c	��^^�UR SUl[	S5nURUSS9mUR
S5 [R[5mUU4Sjn[R"US9nUR5 UR[R5 [RTUSS9 SSS5 UR!5 SSS5 UR
S	5 [R[5mUU4S
jn[R"US9nUR5 UR[R5 [RTUSSS9 SSS5 UR!5 SSS5 g![a [R"S5ef=f!,(df   N�=f!,(df   N�=f!,(df   Nm=f!,(df   g=f)
NTr�r�r~r�c�<>�T"5 [RTSS9 gr�r�r�s��rrM�=ChannelTests.test_send_buffer_closed_while_waiting.<locals>.f�r�rrOr�r�c�<>�T"5 [RTSS9 gr�r�r�s��rrMr�
r�rr�r�)�_has_run_once_closedr�r�r�rxr�r/r
r?r�rQrRrSr�rQryrTr�s    @@r�%test_send_buffer_closed_while_waiting�2ChannelTests.test_send_buffer_closed_while_waiting�s����
	-��%�%�)-�D�%��� ���%�%�c�$�%�7��
�\�\�+�
,��"�"�7�+�C�
1�� � ��*�A�
�G�G�I��"�"�9�#?�#?�@��%�%�c�3��%�>�A�
�F�F�H�-��\�\�.�
)��"�"�7�+�C�
1�� � ��*�A�
�G�G�I��"�"�9�#?�#?�@��%�%�c�3��r�%�J�A�
�F�F�H�*�
)��1�	K��#�#�$I�J�J�
	K��(A�@��-�
,��$A�@��*�
)�sU�F
�A$F?�'F.�=F?�.A$G!�G�)G!�
!F+�.
F<	�8F?�?
G
�
G	�G!�!
G/c���[R[5n[RUSSS9 [	U5 [RU5 UR
[R5 [RUS5 SSS5 UR
[R5 [RU5 SSS5 g!,(df   NL=f!,(df   g=f�Nr�Fr�r[�	r
r?r�r`rrbr�rQrr�s  r�test_close_single_user�#ChannelTests.test_close_single_users������w�'�����s�G�e��4��C�������
�
�
�y�;�;�
<��N�N�3��(�=�
�
�
�y�;�;�
<��N�N�3��=�
<�=�
<��
<�
<���.C�,C�
C�
C*c�l�[R[5n[R"5n[R"5n[R"U[SUS355 [R"U[SUS355 [R
U5 [R"U[SUS355nURURRS5 [R"U[SUS355nURURRS5 g)NrrHrrz 
                _channels.send(z, b'spam')
                rQ)
r
r?r�rr*rrbr�r}rH)rCrr�r��excsnaps     r�test_close_multiple_users�&ChannelTests.test_close_multiple_users!s(�����w�'���"�"�$���"�"�$��� � ��f�2��5�!
�.�'�	�	� � ��f�2��5�!
�.�'�	�	������*�*�3��< � #�u�%�8�1���	
������.�.�0D�E��*�*�3��< � #�u�%�8�1���	
������.�.�0D�Erc�<�[R[5n[RUSSS9 [	U5 [RU5 UR
[R5 [RU5 SSS5 g!,(df   g=fr?)r
r?r�r`rrbr�rQr�s  r�test_close_multiple_times�&ChannelTests.test_close_multiple_times9sd�����w�'�����s�G�e��4��C�������
�
�
�y�;�;�
<��O�O�C� �=�
<�
<���.B
�
Bc�R�/SQnUH�up#URX#45 [R[5n[R	USSS9 [U5 [R
XBUS9 UR[R5 [R	US5 SSS5 UR[R5 [RU5 SSS5 SSS5 M� g!,(df   NX=f!,(df   N,=f!,(df   GM=f)N))FF�TF)FT)TTr�Fr�r�r[)
r/r
r?r�r`rrbr�rQr)rC�testsr`rrs     r�test_close_empty�ChannelTests.test_close_emptyBs����� �J�D����t�l�+��&�&�w�/�����s�G�e��<��C� �����T��:��&�&�y�'C�'C�D��N�N�3��0�E��&�&�y�'C�'C�D��N�N�3�'�E�,�+� �E�D��D�D��,�+�s<�A-D�C4�"'D�	D�D�4
D�>D�
D�D�
D&	c�f�[R[5n[RUSSS9 [RUSSS9 UR	[R
5 [R
U5 SSS5 [U5 [RUSSS9 g!,(df   N/=f)Nr�Fr��hamr[�r
r?r�r`r��ChannelNotEmptyErrorrbrr�s  r�%test_close_defaults_with_unused_items�2ChannelTests.test_close_defaults_with_unused_itemsUs~�����w�'�����s�G�e��4����s�F�U��3�
�
�
�y�=�=�
>��O�O�C� �?��C�����s�G�e��4�?�
>�s�#B"�"
B0c��[R[5n[RUSSS9 [RUSSS9 UR	[R
5 [R
USS9 SSS5 [U5 [RUSSS9 [U5 [U5 [R
USS9 g!,(df   NY=f)Nr�Fr�r�T�rr[r�r�s  r�*test_close_recv_with_unused_items_unforced�7ChannelTests.test_close_recv_with_unused_items_unforced_s������w�'�����s�G�e��4����s�F�U��3�
�
�
�y�=�=�
>��O�O�C�d�O�+�?��C�����s�G�e��4��C���C������$��'�
?�
>�s�#C�
Cc��[R[5n[RUSSS9 [RUSSS9 [R	USS9 UR[R5 [RUS5 SSS5 [U5 [U5 UR[R5 [RU5 SSS5 g!,(df   Nb=f!,(df   g=f)Nr�Fr�r�Tr	r[)	r
r?r�r`rbr�rQrrr�s  r�*test_close_send_with_unused_items_unforced�7ChannelTests.test_close_send_with_unused_items_unforcedls������w�'�����s�G�e��4����s�F�U��3�����$��'�
�
�
�y�;�;�
<��N�N�3��(�=��C���C��
�
�
�y�;�;�
<��N�N�3��=�
<�	=�
<��=�
<�s�7C*�C;�*
C8�;
D	c��[R[5n[RUSSS9 [RUSSS9 UR	[R
5 [R
USSS9 SSS5 [U5 [RUSSS9 [U5 [U5 [R
USS9 g!,(df   NY=f)	Nr�Fr�r�Tr�r[r�r�r�s  r�*test_close_both_with_unused_items_unforced�7ChannelTests.test_close_both_with_unused_items_unforcedys������w�'�����s�G�e��4����s�F�U��3�
�
�
�y�=�=�
>��O�O�C�d��O�6�?��C�����s�G�e��4��C���C������$��'�
?�
>�s�#C�
Cc���[R[5n[RUSSS9 [RUSSS9 [R	USSS9 UR[R5 [RUS5 SSS5 UR[R5 [RU5 SSS5 g!,(df   NL=f!,(df   g=f)Nr�Fr�r�Tr�r[�r
r?r�r`rbr�rQrr�s  r�(test_close_recv_with_unused_items_forced�5ChannelTests.test_close_recv_with_unused_items_forced�������w�'�����s�G�e��4����s�F�U��3�����$�d��3�
�
�
�y�;�;�
<��N�N�3��(�=�
�
�
�y�;�;�
<��N�N�3��=�
<�=�
<��
<�
<���8C�6C&�
C#�&
C4c���[R[5n[RUSSS9 [RUSSS9 [R	USSS9 UR[R5 [RUS5 SSS5 UR[R5 [RU5 SSS5 g!,(df   NL=f!,(df   g=f)Nr�Fr�r�Tr�r[r�r�s  r�(test_close_send_with_unused_items_forced�5ChannelTests.test_close_send_with_unused_items_forced�r�r�c���[R[5n[RUSSS9 [RUSSS9 [R	USSSS9 UR[R5 [RUS5 SSS5 UR[R5 [RU5 SSS5 g!,(df   NL=f!,(df   g=f)Nr�Fr�r�Tr�r[r�r�s  r�(test_close_both_with_unused_items_forced�5ChannelTests.test_close_both_with_unused_items_forced�s������w�'�����s�G�e��4����s�F�U��3�����$�T���>�
�
�
�y�;�;�
<��N�N�3��(�=�
�
�
�y�;�;�
<��N�N�3��=�
<�=�
<��
<�
<�s�9C�7C'�
C$�'
C5c��[R[5n[RU5 UR	[R
5 [R
US5 SSS5 UR	[R
5 [RU5 SSS5 g!,(df   NL=f!,(df   g=f�Nr�)r
r?r�rbr�rQr`rr�s  r�test_close_never_used�"ChannelTests.test_close_never_used�s}�����w�'�������
�
�
�y�;�;�
<��N�N�3��(�=�
�
�
�y�;�;�
<��N�N�3��=�
<�=�
<��
<�
<���B+�B<�+
B9�<
C
c�
�[R[5n[RUSSS9 [R"5n[R
"U[
SUS355 UR[R5 [RU5 SSS5 UR[R5 [RU5 SSS5 g!,(df   NL=f!,(df   g=f)Nr�Fr�r)r*)r
r?r�r`rr*rr�rQrrb�rCrr;s   r�!test_close_by_unassociated_interp�.ChannelTests.test_close_by_unassociated_interp�s������w�'�����s�G�e��4��%�%�'��� � ���5� �E�"
�1�*�	��
�
�y�;�;�
<��N�N�3��=�
�
�
�y�;�;�
<��O�O�C� �=�
<�=�
<��
<�
<�s�C#�C4�#
C1�4
Dc�,�[R[5n[RUSSS9 [RUSSS9 [RUSSS9 [	U5 [RUSS9 UR
[R5 [RUS5 SSS5 UR
[R5 [RU5 SSS5 g!,(df   NL=f!,(df   g=f)Nr�Fr�Tr�r[r�r�s  r�-test_close_used_multiple_times_by_single_user�:ChannelTests.test_close_used_multiple_times_by_single_user�s������w�'�����s�G�e��4����s�G�e��4����s�G�e��4��C������4��(�
�
�
�y�;�;�
<��N�N�3��(�=�
�
�
�y�;�;�
<��N�N�3��=�
<�=�
<��
<�
<�s�C4�D�4
D�
Dc��[R[5nUR[R5 [RSSS9 SSS5 [R
U5 UR[R5 [RUSS9 SSS5 g!,(df   N`=f!,(df   g=f)Nr�Tr	)r
r?r�r�r�r
rbrQr�s  r�.test_channel_list_interpreters_invalid_channel�;ChannelTests.test_channel_list_interpreters_invalid_channel�s������w�'��
�
�
�y�=�=�
>��'�'��4�'�8�?�	�����
�
�
�y�;�;�
<��'�'��$�'�7�=�
<�?�
>��
=�
<�s�B(�
B9�(
B6�9
Cc��[R[5nUR[5 [RU5 SSS5 g!,(df   g=fr)r
r?r�r�r�r
r�s  r�+test_channel_list_interpreters_invalid_args�8ChannelTests.test_channel_list_interpreters_invalid_args�s:�����w�'��
�
�
�y�
)��'�'��,�*�
)�
)�s�A�
A)r�r�N);rHrIrJrKr�r�r�r�rrr
rrrr#r&r+r1r8r��skipr<rBrErIrVr\r_rbrerorsr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr
r
rrrMrFrrr�r�ps,��8�	D�	6�	6�2�.�&+�2�,@�4+�.)2�V9�,!9�F4�&
.�$�]�]�=�>�.�?�.�&$�
�	'�
'�'�8(�� �
%�*�D
#�$05��.(� (� (�(��2#�J�4$�R	 �F�0!�(�&5�(� �(�	 �	 �	 � �!� �	8�-rr�c�X�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rg)�ChannelReleaseTestsi�a}
- main / interp / other
- run in: current thread / new thread / other thread / different threads
- end / opposite
- force / no force
- used / not used  (associated / not associated)
- empty / emptied / never emptied / partly emptied
- closed / not closed
- released / not released
- creator (interp) / other
- associated interpreter not running
- associated interpreter destroyed
c���[R[5n[RUSSS9 [	U5 [RUSSS9 UR
[R5 [RUS5 SSS5 UR
[R5 [RU5 SSS5 g!,(df   NL=f!,(df   g=f�Nr�Fr�Tr�r[�	r
r?r�r`rrr�rQrr�s  r�test_single_user�$ChannelReleaseTests.test_single_users������w�'�����s�G�e��4��C�����#�D�t��4�
�
�
�y�;�;�
<��N�N�3��(�=�
�
�
�y�;�;�
<��N�N�3��=�
<�=�
<��
<�
<�r�c
��[R[5n[R"5n[R"5n[R"U[SUS355 [
U[SUSUS355n[R"U[SUS355 URUR5S5 g)	NrrHzU
            import _interpchannels as _channels
            obj, _ = _channels.recv(z )
            _channels.release(z+)
            print(repr(obj))
            z
            _channels.release(rzb'spam')	r
r?r�rr*rr	r�r)rCrr�r�rs     r�test_multiple_users�'ChannelReleaseTests.test_multiple_userss������w�'���"�"�$���"�"�$��� � ��f�2��5�!
�.�'�	��#�v�+%�%(�E�*�"�e�$
�'� ���	� � ��f�2�"�e�$
�.�'�	�	
�������i�0rc���[R[5n[RUSSS9 [	U5 [RU5 UR
[R5 [RUS5 SSS5 UR
[R5 [RU5 SSS5 g!,(df   NL=f!,(df   g=fr�rr�s  r�test_no_kwargs�"ChannelReleaseTests.test_no_kwargs&s������w�'�����s�G�e��4��C�����#��
�
�
�y�;�;�
<��N�N�3��(�=�
�
�
�y�;�;�
<��N�N�3��=�
<�=�
<��
<�
<�r�c�<�[R[5n[RUSSS9 [	U5 [RUSSS9 UR
[R5 [RUSSS9 SSS5 g!,(df   g=f)Nr�Fr�Tr�)r
r?r�r`rrr�rQr�s  r�test_multiple_times�'ChannelReleaseTests.test_multiple_times1sv�����w�'�����s�G�e��4��C�����#�D�t��4�
�
�
�y�;�;�
<����c��4��8�=�
<�
<�r�c�P�[R[5n[RUSSS9 [RUSSS9 [R	USSS9 UR[R5 [RU5 SSS5 g!,(df   g=f)Nr�Fr�r�Tr�)r
r?r�r`rr�rQrr�s  r�test_with_unused_items�*ChannelReleaseTests.test_with_unused_items:sw�����w�'�����s�G�e��4����s�F�U��3����#�D�t��4�
�
�
�y�;�;�
<��N�N�3��=�
<�
<�s�8B�
B%c��[R[5n[RU5 UR	[R
5 [R
US5 SSS5 UR	[R
5 [RU5 SSS5 g!,(df   NL=f!,(df   g=fr)r
r?r�rr�rQr`rr�s  r�test_never_used�#ChannelReleaseTests.test_never_usedCs�����w�'�����#��
�
�
�y�;�;�
<��N�N�3��(�=�
�
�
�y�;�;�
<��N�N�3��=�
<�=�
<��
<�
<�rc���[R[5n[RUSSS9 [R"5n[R
"U[
SUS355 [U5n[RU5 UR[R5 [RUS5 SSS5 URUS5 g!,(df   N!=f)Nr�Fr�r"rr[)r
r?r�r`rr*rrrr�rQr�)rCrr;rs    r�test_by_unassociated_interp�/ChannelReleaseTests.test_by_unassociated_interpLs������w�'�����s�G�e��4��%�%�'��� � ���5�"�e�$
�1�*�	��#������#��
�
�
�y�;�;�
<��N�N�3��(�=�����g�&�=�
<�s�'C�
C'c
�J�[R[5n[R"5n[R"U[SUSUS355 UR
[R5 [RU5 SSS5 g!,(df   g=f)NzR
            import _interpchannels as _channels
            obj = _channels.send(z9, b'spam', blocking=False)
            _channels.release(r)	r
r?r�rr*rr�rQrr	s   r�test_close_if_unassociated�.ChannelReleaseTests.test_close_if_unassociated[s������w�'���%�%�'��� � ���5"�"%��'�"�e�$
�1�*�	��
�
�y�;�;�
<��N�N�3��=�
<�
<�s�5B�
B"c��[R[5n[RUSSS9 [	U5 [RUSSS9 [RUSS9 [	U5nUR
US5 g)NFr�r�Tr	)r
r?r�r`rrr�)rCrrs   r�test_partially�"ChannelReleaseTests.test_partiallyhsk�����w�'�����s�D�5��1��C�����s�G�e��4����#�D��)��#�������g�&rc�.�[R[5n[RUSSS9 [RUSSS9 [RUSSS9 [	U5 [RUSSS9 UR
[R5 [RUS5 SSS5 UR
[R5 [RU5 SSS5 g!,(df   NL=f!,(df   g=frrr�s  r�'test_used_multiple_times_by_single_user�;ChannelReleaseTests.test_used_multiple_times_by_single_userss������w�'�����s�G�e��4����s�G�e��4����s�G�e��4��C�����#�D�t��4�
�
�
�y�;�;�
<��N�N�3��(�=�
�
�
�y�;�;�
<��N�N�3��=�
<�=�
<��
<�
<�s�C5�D�5
D�
DrFN)rHrIrJrK�__doc__rrr!r$r'r*r-r0r3r6rMrFrrrr�sC�����"	 �1�(	 �9� � �
'� �	'� rrc�^�\rSrSrSrU4Sjr\S5r\S5rSr	SSjr
SrS	rS
r
SrSrS
rSrU=r$)�ChannelCloseFixturei�Fc�>�US;deUR(a0nOe[RU5n[RU5n[RU5nURUURUURU0nU(dSn[TU]XX#XE5n[
5Ul[5Ul	Xgl
U$)Nr�r^)�QUICKr0r8rBr@rAr��_preppedrr�_state�_known)	r6rZr;rdre�creator�knownrCrDs	        �rrA�ChannelCloseFixture.__new__�s�����&�&�&�&��9�9��E� �)�)�&�1�F��(�(��/�E��(�(��/�E����V��
�
�E��
�
�E��E�
��G��w��s���G�����
�"�n������rc��UR$r�r>r~s rr��ChannelCloseFixture.state�s���{�{�rc��UR$![a@ URUR5nUR	U5UlURs$f=fr)�_cidr��_get_interpreterr@�_new_channel)rCr@s  rr�ChannelCloseFixture.cid�sP��	��9�9����	��+�+�D�L�L�9�G��)�)�'�2�D�I��9�9��	�s��AA�Ac�J�URU5nURU5 U$r)rH�_prep_interpreter�rCr;s  r�get_interpreter�#ChannelCloseFixture.get_interpreter�s%���&�&�v�.�����v�&��
rc��UcURnUS:XaURRS:Xag[URR5$)Nrr`F)rZr�ru�boolrks  r�expect_closed_error�'ChannelCloseFixture.expect_closed_error�s@���;��(�(�C��&�=�T�Z�Z�.�.�&�8���D�J�J�%�%�&�&rc�&�URU5 gr)rLrMs  r�prep_interpreter�$ChannelCloseFixture.prep_interpreter�s�����v�&rc��X lgrrD)rCrYr�s   r�
record_action�!ChannelCloseFixture.record_action�s���rc�,�[5 [5 gr)r
r�r~s r�clean_up�ChannelCloseFixture.clean_up�s�����rc���URS:Xa[R[5$[R[5n[	UR
SUS35 [
U5UlUR$)Nr,z�
                import _interpreters
                cid = _xxsubchannels.create()
                # We purposefully send back an int to avoid tying the
                # channel to the other interpreter.
                _xxsubchannels.send(zN, int(cid), blocking=False)
                del _interpreters
                )rBr
r?r�r$r!rrG)rCr@�chs   rrI� ChannelCloseFixture._new_channel�sj���<�<�6�!��#�#�G�,�,��!�!�'�*�B��w�z�z�(%�
&(�D�)�$�
�$�B��D�I��y�y�rc���US;aUR$US:XaUR$US:XaUR$UnURUnU$![a [U5=oRU'U$f=f)N)r^r;rdre)r;rdrer?�KeyErrorr0)rCr;rBs   rrH�$ChannelCloseFixture._get_interpreter�s����'�'��;�;��
�w�
��:�:��
�w�
��:�:���D�
?����T�*���M���
?�-8��->�>����T�*��M�
?�s�A�#A2�1A2c���URUR;agURRUR5 URS:Xag[	URSUR
S35 g)Nr,a
            import _interpchannels as channels
            import test.test__interpchannels as helpers
            ChannelState = helpers.ChannelState
            try:
                cid
            except NameError:
                cid = _channels._channel_id(r)r!r=�addrBr$rrMs  rrL�%ChannelCloseFixture._prep_interpreter�sb���9�9��
�
�%���
�
���&�)�)�$��;�;�&� ���6�9�9�#-�.2�X�X�J�7
��	r)rGr?r=r>r)rHrIrJrKr<rA�propertyr�rrNrRrUrXr[rIrHrLrMrNrOs@rr:r:�sd���

�E��*���������
'�'���� 
��rr:zend interp other extra creatorz%these tests take several hours to runc��\rSrSrSrSrSrSrSrSr	SS	.S
jr
SrSrSSjr
SrSSjrSrSrSrSrg
)�ExhaustiveChannelTestsi�a�
- main / interp / other
- run in: current thread / new thread / other thread / different threads
- end / opposite
- force / no force
- used / not used  (associated / not associated)
- empty / emptied / never emptied / partly emptied
- closed / not closed
- released / not released
- creator (interp) / other
- associated interpreter not running
- associated interpreter destroyed

- close after unbound
c#�`# �/v� URSS5H$nUv� UR5H	nX-v� M M& URSS5H$nUv� UR5H	nX-v� M M& URSS5H�nUv� URSS5H(nX1-nUv� UR5H	nXB-v� M M* URSS5H(nX1-nUv� UR5H	nXB-v� M M* M� URSS5H�nUv� URSS5H(nX1-nUv� UR5H	nXB-v� M M* URSS5H(nX1-nUv� UR5H	nXB-v� M M* M� g7f)Nr^rdre)�_iter_close_action_sets�_iter_post_close_action_sets�_iter_use_action_sets)rC�closeactions�postactions�
useactions�actionss     r�iter_action_sets�'ExhaustiveChannelTests.iter_action_setss������!�8�8���I�L���#�@�@�B��"�0�0� C�J�!�8�8��'�J�L���#�@�@�B��"�0�0� C�K��4�4�V�W�E�J��� $� <� <�V�W� M��$�3���
�#'�#D�#D�#F�K�!�/�/�$G�!N�
!%� <� <�W�g� N��$�3���
�#'�#D�#D�#F�K�!�/�/�$G�!O�F��4�4�W�g�F�J��� $� <� <�V�W� M��$�3���
�#'�#D�#D�#F�K�!�/�/�$G�!N�
!%� <� <�W�g� N��$�3���
�#'�#D�#D�#F�K�!�/�/�$G�!O�G�s�F,F.c#�8# �X4n[SSU5/v� [SSU5/v� [SSU5[SSU5/v� [SSU5/v� [SSU5/v� [SSU5[SSU5/v� UH=nUH4nUH+n[SSU5[SSU5[SSU5/v� M- M6 M? UHRnUHInUH@nUH7n[SSU5[SSU5[SSU5[SSU5/v� M9 MB MK MT g7f)Nr]rr`�rT)rCrr�interpsr�interp4s      rrl�,ExhaustiveChannelTests._iter_use_action_setsJsg����$��
�%���1��	�
�%���1��	�
�%���1��%���1��	�
�%���1��	�
�%���1��	�
�%���1��%���1��	��G�"��&�G�%�e�V�W�=�%�e�V�W�=�%�e�V�W�=��� '�#���G�"��&�G�#*��)�%���A�)�%���A�)�%���A�)�%���A�	��$+� '�#��s�DDc
#�# �SnX4nSH/nU(aSOSnUHnUHn[XhU5/v� M M M1 SH:n	SH1n
UH(nUHn[U	SU5[U
SU5/v� M! M* M3 M< g7f)Nr�r�rcrbrarr`rt)
rCrr�endsrur��opr;rZ�recvop�sendoprr`s
             rrj�.ExhaustiveChannelTests._iter_close_action_sets{s�������$��"�E�"'��W�B�!���C�%�b�v�6��� �"�#�/�F�2��#�D� '��)�&�&�$�?�)�&�&�$�?���!(�$�3�/�s�A<A>c#�^# �SH#n[SSU5/v� [SSU5/v� M% g7f)N)r^rerdr]rr`rtrMs  rrk�3ExhaustiveChannelTests._iter_post_close_action_sets�s=���0�F��e�V�V�4��
��e�V�V�4��
�	1�s�+-c�8�UHnURX5 M gr)r�)rC�fixrprYs    r�run_actions�"ExhaustiveChannelTests.run_actions�s���F��O�O�C�(�rTr�c���URUR5nURURURUR
5nUR
U5 URS:Xa=[URURUURUS9nURX&5 g[R[5n[!UR"SURS[%UR5S[%U5S[%UR5SUSUSUS35 ['[(R+[-U5S	5[/[-U55S
9nURX&5 g)Nr,r�zB
                result = helpers.run_action(
                    z,
                    z!,
                    hideclosed=z7,
                    )
                _channels.send(zW, result.pending.to_bytes(1, 'little'), blocking=False)
                _channels.send(zB, b'X' if result.closed else b'', blocking=False)
                �little)rwru)rlrZror;rdrerUrBr�rrYr�rXr
r?r�r$r!rrrr>�
from_bytesrrQ)rCr�rYr�rZr;r�rGs        rr��!ExhaustiveChannelTests.run_action�sJ��� � ����)���&�&�s�z�z�3�9�9�c�i�i�H�����V�$��;�;�&� ������
�
���	�	�%��F�
���f�-��#�#�G�,�D��v�y�y�'��W�W�I���&�-�-�(�)�*��#�Y�K� ��#�)�)�_�%�& � *�|�, � $�v�& � $�v�&�
#�

�"����{�4�'8�(�C��K��-�.��F�
���f�-rc
#�n# �/SQnUH'up#nSHnSHn[XbX4U5v� M M M) g7f)N))r,r;re)r;r,re)rrre)rrr,)r^rdr@r�)r:)rC�interpretersr;rdrer@rZs       r�
iter_fixtures�$ExhaustiveChannelTests.iter_fixtures�s@���
��%1� �F�5�7��+�C�-�c�5��Q�Q�,�8�%1�s�35c�$�U(aSOSn[X1RS5nUR5(dURXSS9 gUR	[
R5 URXSS9 SSS5 g!,(df   g=f)Nrcrbr^Fr�)rTrZrRr�r�r
rQ)rCr�r�rzrbs     r�_close�ExhaustiveChannelTests._close�sk��#�]����b�'�'�6�2���&�&�(�(��O�O�C�5�O�9��"�"�9�#?�#?�@�����u��=�A�@�@�s�'B�
BNc��UbURS:XGaUR[R5 [R	UR
5 SSS5 UR[R5 [R
UR
S5 SSS5 UR[R5 [RUR
5 SSS5 UR[R5 [RUR
SS9 SSS5 g[URS5 [URS5 [URS5 [URS5 g!,(df   GN>=f!,(df   GN=f!,(df   N�=f!,(df   g=f)	Nr,r�Tr�zo
                with helpers.expect_channel_closed():
                    _channels.recv(cid)
                z�
                with helpers.expect_channel_closed():
                    _channels.send(cid, b'spam', blocking=False)
                zp
                with helpers.expect_channel_closed():
                    _channels.close(cid)
                z|
                with helpers.expect_channel_closed():
                    _channels.close(cid, force=True)
                )
rBr�r
rQrrr`rbr$r!)rCr�r;s   r�_assert_closed_in_interp�/ExhaustiveChannelTests._assert_closed_in_interp�s6���>�V�[�[�F�2��"�"�9�#?�#?�@����s�w�w�'�A��"�"�9�#?�#?�@����s�w�w��0�A��"�"�9�#?�#?�@�������(�A��"�"�9�#?�#?�@�������t��4�A�@�
�v�y�y�#�
�
�v�y�y�#�
�
�v�y�y�#�
�
�v�y�y�#�
�+A�@��@�@��@�@��@�@�s/� F�;!F� F/�
G�
F�
F,�/
F=�
Gc��URURR5 [URR5Hn[UR5 M URU5 SH7nURU5nURS:XaM&URX5 M9 URS5nURX5 g)N)r^rdr,�fresh)
r�r�ru�rangerwrrr�rNrB)rCr�r-r;s    r�_assert_closed�%ExhaustiveChannelTests._assert_closed�s�������	�	�(�(�)��s�y�y�(�(�)�A����� �*��%�%�c�*�'�F��(�(��0�F��{�{�f�$���)�)�#�6�	(��$�$�W�-���%�%�c�2rc#��# �SnUR5H�n[5 UR5H�nUS-
nUS:�a  gU(a;US-
S-S:Xa
[5 [X$SR[	U555 O>US-
S-S:Xa
[SSS9 [S	SS9 [
RR5 X$U4v� M� U(dM�[S
5 M� [5 g7f)Nrr{r��z({} actions)� �rj�.z---)rqr�r�r=r��sys�stdout�flush)rC�verbose�irpr�s     r�_iter_close_tests�(ExhaustiveChannelTests._iter_close_tests�s����
���,�,�.�G��G��)�)�+���Q����t�8����A���{�a�'����!�.�"7�"7��G��"E�F��A���{�a�'��c�r�*��#�2�&��
�
�(8�(8�(:��g�o�%�,��w��e��!/�"	��s�CC0�C0c�N�S[lUR5HupnM g)NT)r:r<r��rCr�r�rps    r�_skim_close_tests�(ExhaustiveChannelTests._skim_close_testss%��$(��!�#�5�5�7�O�A�G�� 8rc�h�UR5H�upnURSRXU55 URUR5 URX#5 UR
USS9 URU5 SSS5 UR5 M� g!,(df   N#=f)N�	{} {}  {}Fr��	r�r/r=rUr;r�r�r�r[r�s    r�
test_close�!ExhaustiveChannelTests.test_closes���#�5�5�7�O�A�G����k�0�0���A�B��$�$�S�Z�Z�0�� � ��.����C�u��-��#�#�C�(�
C�
�L�L�N� 8�B�B���AB#�#
B1	c�h�UR5H�upnURSRXU55 URUR5 URX#5 UR
USS9 URU5 SSS5 UR5 M� g!,(df   N#=f)Nr�Tr�r�r�s    r�test_force_close�'ExhaustiveChannelTests.test_force_close$s���#�5�5�7�O�A�G����k�0�0���A�B��$�$�S�Z�Z�0�� � ��.����C�t��,��#�#�C�(�
C�
�L�L�N� 8�B�B�r�rFr)F)rHrIrJrKr8rqrlrjrkr�r�r�r�r�r�r�r�r�r�rMrFrrrhrh�s`��� �� +0�Z/�b�&�)�59�.�@R�>��83� �,�

�
rrh�__main__),�collectionsr�
contextlibr��textwraprrQrr��test.supportr�
import_moduler
�test.support.interpretersr�test.test__interpretersrr	r
�_UNBOUND_CONSTANT_TO_FLAG�UNBOUNDr�rrr$r r0�contextmanagerrRrTrrr�r�r��TestCaser�r�r�rr:rrhrHr,rFrr�<module>r�sz��"��
�����&��'�'�(9�:�	�2����
0�
0��1E�1E�
F���%*�� $�-/�
5� �*�]�I�6� �J���+��+�/#�J��0C�D�/#�fE�:�n�.>�?�E�&7;��*!!�H� �x� � � �`,�X�`,�Ji
-�8�i
-�Xb �(�b �Jn�*�%:�%E�G�n�b
���6�7�{�X�{�8�{�|	�z���M�M�O�r

Youez - 2016 - github.com/yon3zu
LinuXploit