add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
�

�Wc����(�dZdZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddl	mZddl	mZddl	m
Z
dd	l	mZdd
l	mZddl	mZddl	mZdd
lmZd�ZGd�dej*ej,�ZGd�deej0�ZGd�deej4�ZGd�de�ZGd�deej:�ZGd�deeej>�Z Gd�deeej>�Z!Gd�de
jD�Z#dS)z�Event loop using a proactor and related classes.

A proactor is a "notify-on-completion" multiplexer.  Currently a
proactor is only implemented on Windows with IOCP.
)�BaseProactorEventLoop�N�)�base_events)�	constants)�futures)�
exceptions)�	protocols)�sslproto)�
transports)�trsock)�loggerc���tj|�|jd<	|j�|jd<d|jvr!	|j�|jd<dSdS#tj
$r8|jj�rtjd|d��Y�|wxYw#tj
$rd|jd<YdSwxYw)N�socket�socknamezgetsockname() failed on %rT��exc_info�peername)r�TransportSocket�_extra�getsocknamer�error�_loop�	get_debugr
�warning�getpeername)�	transport�socks  �0/usr/lib64/python3.12/asyncio/proactor_events.py�_set_socket_extrars��!'�!7�!7��!=�I���X��C�'+�'7�'7�'9�	����$���)�)�)�)�	0�+/�+;�+;�+=�I���Z�(�(�(�*�)���<�<�C�C�C��?�?�$�$�&�&��N�N�,�d�T�
C�
C�
C���C������|�|�	0�	0�	0�+/�I���Z�(�(�(�(�	0���s$�A5�C�5A	C�C�#C+�*C+c���eZdZdZ		d�fd�	Zd�Zd�Zd�Zd�Zd�Z	d	�Z
ejfd
�Z
dd�Zd
�Zd�Zd�Z�xZS)�_ProactorBasePipeTransportz*Base class for pipe and socket transports.Nc�(��t�j||�|j|�||_|j	|�||_d|_d|_d|_d|_	d|_
d|_d|_d|_
|j
�|j
j�|jj!|j"j$|�|�/|jj!t&j(|d�dSdS)NrF)�super�__init__�
_set_extra�_sock�set_protocol�_server�_buffer�	_read_fut�
_write_fut�_pending_write�
_conn_lost�_closing�_called_connection_lost�_eof_written�_attachr�	call_soon�	_protocol�connection_mader�_set_result_unless_cancelled��self�loopr�protocol�waiter�extra�server�	__class__s       �rr$z#_ProactorBasePipeTransport.__init__2s����
������%�%���������
����(�#�#���������������������
�',��$�!����<�<�#��L�L� � �"�"��
�
���T�^�^�;�;�T�B�B����J�J� � ��!E�!E�!'��
/�
/�
/�
/���c��|jjg}|j�|jd�n|jr|jd�|j�.|jd|jj����|j�|jd|j���|j�|jd|j���|jr*|jdt|j����|jr|jd�djd	j|��S)
N�closed�closingzfd=zread=zwrite=zwrite_bufsize=zEOF writtenz<{}>� )
r=�__name__r&�appendr.�filenor*r+r)�lenr0�format�join)r7�infos  r�__repr__z#_ProactorBasePipeTransport.__repr__Is�����'�'�(���:�:���K�K��!�!�!�
�]�]�]��K�K�	�"�"��:�:�!��K�K�3�d�j�j�/�/�1�3�3�4�4��>�>�%��K�K�2����2�2�3�3��?�?�&��K�K�4����4�4�5�5��<�<�<��K�K�<��T�\�\�):�<�<�=�=������K�K�
�&�&��}�}�S�X�X�d�^�,�,r>c�$�||jd<dS)N�pipe)r�r7rs  rr%z%_ProactorBasePipeTransport._set_extra[s��"����F���r>c��||_dS�N�r3)r7r9s  rr'z'_ProactorBasePipeTransport.set_protocol^s
��!����r>c��|jSrOrP�r7s r�get_protocolz'_ProactorBasePipeTransport.get_protocolas���~�~�r>c��|jSrO)r.rRs r�
is_closingz%_ProactorBasePipeTransport.is_closingds���}�}�r>c�8�|jrdSd|_|xjdz
c_|js3|j�'|jj|jd�|j�$|jj�d|_dSdS)NTr)	r.r-r)r+rr2�_call_connection_lostr*�cancelrRs r�closez _ProactorBasePipeTransport.closegs����=�=�=��F���
�����1�����|�|�|���� 7��J�J� � ��!;�!;�T�B�B��>�>�%��N�N�!�!�#�#�!�D�N�N�N�&�%r>c��|j�1|d|��t|��|jj�dSdS)Nzunclosed transport )�source)r&�ResourceWarningrY)r7�_warns  r�__del__z"_ProactorBasePipeTransport.__del__rsJ���:�:�!��E�0��0�0�/�$�O�O�O��J�J�������"�!r>�Fatal error on pipe transportc�D�	t|t�r7|jj�rGt	j
d||d��n+|jj
||||jd��|j|�dS#|j|�wxYw)Nz%r: %sTr)�message�	exceptionrr9)	�
isinstance�OSErrorrrr
�debug�call_exception_handlerr3�_force_close)r7�excras   r�_fatal_errorz'_ProactorBasePipeTransport._fatal_errorws���	#��#�w�'�'��:�:�'�'�)�)��L�L��4��4�H�H�H�H��
�
�1�1�&�!$�!%� $���	3�3���
���c�"�"�"�"��D���c�"�"�"�"�"�"s�A5B�Bc�X�|j�V|jj�s;|�|jjd�n|jj|�|jr|j
rdSd|_|xjdz
c_|jr"|jj�d|_|jr"|jj�d|_	d|_
d|_|jj|j|�dS)NTrr)�
_empty_waiter�done�
set_result�
set_exceptionr.r/r-r+rXr*r,r)rr2rW)r7rhs  rrgz'_ProactorBasePipeTransport._force_close�s�����)�$�2D�2D�2I�2I�2K�2K��{��"�"�-�-�d�3�3�3��"�"�0�0��5�5��=�=�=�T�9�9�9��F���
�����1�����?�?�?��O�O�"�"�$�$�"�D�O��>�>�>��N�N�!�!�#�#�!�D�N��������
�
���T�7�7��=�=�=�=r>c��	|jj|�t|jd�rJ|jj	�dkr+|jjtj�|jj�d|_|j}|�|j�d|_	d|_dS#t|jd�rJ|jj	�dkr+|jjtj�|jj�d|_|j}|�|j�d|_	d|_wxYw)N�shutdown�����T)r3�connection_lost�hasattrr&rErpr�	SHUT_RDWRrYr(�_detachr/)r7rhr<s   rrWz0_ProactorBasePipeTransport._call_connection_lost�sC��	0��N�N�*�*�3�/�/��t�z�z�:�.�.�4�:�:�3D�3D�3F�"�3L�3L��
�
�#�#�F�$4�$4�5�5��J�J������D�J��\�\�F��!���� � �#���+/�D�(�(�(���t�z�z�:�.�.�4�:�:�3D�3D�3F�"�3L�3L��
�
�#�#�F�$4�$4�5�5��J�J������D�J��\�\�F��!���� � �#���+/�D�(�/�/�/�/s�C�B3Fc�j�|j}|j�|t|j�z
}|SrO)r,r)rF)r7�sizes  r�get_write_buffer_sizez0_ProactorBasePipeTransport.get_write_buffer_size�s/���"�"���<�<�#��C����%�%�D��r>�NNN)r_)rC�
__module__�__qualname__�__doc__r$rJr%r'rSrUrY�warnings�warnr^rirgrWrx�
__classcell__�r=s@rr!r!.s�������4�4�48�$(�/�/�/�/�/�/�.-�-�-�$#�#�#�"�"�"�������	"�	"�	"�%�M�M�����

#�
#�
#�
#�>�>�>�(0�0�0�$������r>r!c�N��eZdZdZ		d�fd�	Zd�Zd�Zd�Zd�Zd	�Z	dd
�Z
�xZS)
�_ProactorReadPipeTransportzTransport for read pipes.N�c����d|_d|_t�j||||||�t	|�|_|jj|j�d|_dS)NrqTF)	�_pending_data_length�_pausedr#r$�	bytearray�_datarr2�
_loop_reading)	r7r8rr9r:r;r<�buffer_sizer=s	        �rr$z#_ProactorReadPipeTransport.__init__�sa���$&��!����
�����t�X�v�u�f�E�E��{�+��
��
�
���T�/�/�0�0�����r>c�6�|jo|jSrO)r�r.rRs r�
is_readingz%_ProactorReadPipeTransport.is_reading�s���<�<��5��
�
�$5�5r>c��|js|jrdSd|_|jj�rt	j
d|�dSdS)NTz%r pauses reading)r.r�rrr
rerRs r�
pause_readingz(_ProactorReadPipeTransport.pause_reading�sT���=�=�=�D�L�L�L��F�����:�:���!�!��L�L�,�d�3�3�3�3�"�!r>c��|js|jsdSd|_|j�'|jj	|j
d�|j}d|_|dkr5|jj	|j|jd||�|jj�rtjd|�dSdS)NFrqz%r resumes reading)r.r�r*rr2r�r��_data_receivedr�rr
re)r7�lengths  r�resume_readingz)_ProactorReadPipeTransport.resume_reading�s����=�=�=������F�����>�>�!��J�J� � ��!3�!3�T�:�:��*�*��$&��!��B�;�;�
�J�J� � ��!4�!4�d�j�j��&�6I�6�R�R��:�:���!�!��L�L�-�t�4�4�4�4�"�!r>c�F�|jj�rtjd|�	|jj�}|s|j�dSdS#ttf$r�t$r}|j|d�Yd}~dSd}~wwxYw)Nz%r received EOFz1Fatal error: protocol.eof_received() call failed.)rrr
rer3�eof_received�
SystemExit�KeyboardInterrupt�
BaseExceptionrirY)r7�	keep_openrhs   r�
_eof_receivedz(_ProactorReadPipeTransport._eof_received�s����:�:���!�!��L�L�*�D�1�1�	����3�3�5�I��y��J�J�L�L�L�L��y���-�.�	�	�	���	�	�	�����H�
J�
J��F�F�F�F�F�����	���s�A'�'B �B�B c��|jr	||_dS|dkr|j�dSt|jt
j�r%	tj|j|�dS|jj|�dS#ttf$r�t$r}|j|d�Yd}~dSd}~wwxYw)Nrz3Fatal error: protocol.buffer_updated() call failed.)
r�r�r�rcr3r	�BufferedProtocol�_feed_data_to_buffered_protor�r�r�ri�
data_received)r7�datar�rhs    rr�z)_ProactorReadPipeTransport._data_received�s����<�<�<�)/�D�%��F��Q�;�;���� � ��F��d�n�n�i�&@�&@�A�A�
��6�6�t�~�~�t�L�L�L�L�
�N�N�(�(��.�.�.�.��� 1�2�
�
�
�� �
�
�
��!�!�#�#1�2�2�����������	
���s�"B�C�4C
�
Cc�`�d}d}	|�nd|_|j�rE|j�}|dkr	|dkr|j||�dSdS|jd|}n|j�|jr	|dkr|j||�dSdS|js@|jjj|j|j�|_|js'|jj|j�	|dkr|j||�dSdS#t$r^}|js|j|d�n4|jj!�rt#j$dd��Yd}~��d}~wt&$r}|j)|�Yd}~��d}~wt*$r}|j|d�Yd}~��d}~wt,j.$r|js�Y��wxYw#|dkr|j||�wxYw)Nrqrz"Fatal read error on pipe transportz*Read error on pipe transport while closingTr)r*rl�resultr�r�rXr.r�r�	_proactor�	recv_intor&�add_done_callbackr��ConnectionAbortedErrorrirr
re�ConnectionResetErrorrgrdr�CancelledError)r7�futr�r�rhs     rr�z(_ProactorReadPipeTransport._loop_readings�������-	2���"&����8�8�:�:� �Z�Z�\�F���{�{��D��{�{��#�#�D�&�1�1�1�1��{�A �:�:�g�v�.�D�D��J�J�L�L��}�}�}��2��{�{��#�#�D�&�1�1�1�1��{�)�<�<�<�!%���!5�!5�!?�!?��
�
�D�J�J�!W����<�<�<����0�0��1C�1C�D�D�D���{�{��#�#�D�&�1�1�1�1��{��#&�	,�	,�	,��=�=�=��!�!�#�'K�L�L�L����%�%�'�'����I�&*�,�,�,����������#�	#�	#�	#����c�"�"�"�"�"�"�"������	I�	I�	I����c�#G�H�H�H�H�H�H�H������(�(�	�	�	��=�=�=��!�=�	�������{�{��#�#�D�&�1�1�
2�
2�
2�
2sm�1D<�-D<� AD<�,3H�<
H�AF�H�
H�,G�>H�
H�G(�#H�($H�H�H�H�H-)NNNr�rO)rCrzr{r|r$r�r�r�r�r�r�rr�s@rr�r��s��������#�#�48�6;�������6�6�6�4�4�4�&5�5�5�$��� /�/�/�202�02�02�02�02�02�02�02r>r�c�R��eZdZdZdZ�fd�Zd�Zdd�Zd�Zd�Z	d	�Z
d
�Zd�Z�xZ
S)
�_ProactorBaseWritePipeTransportzTransport for write pipes.Tc�N��t�j|i|��d|_dSrO)r#r$rk�r7�args�kwr=s   �rr$z(_ProactorBaseWritePipeTransport.__init__Ks.��������$�%�"�%�%�%�!����r>c���t|tttf�s%t	dt|�j����|jr
td��|j�
td��|sdS|jrM|jtjkrtjd�|xjdz
c_
dS|j� |j!t|���dS|j"s%t|�|_|j%�dS|j"j'|�|j%�dS)Nz/data argument must be a bytes-like object, not zwrite_eof() already calledz(unable to write; sendfile is in progresszsocket.send() raised exception.r)r�)rc�bytesr��
memoryview�	TypeError�typerCr0�RuntimeErrorrkr-r�!LOG_THRESHOLD_FOR_CONNLOST_WRITESr
rr+�
_loop_writingr)�_maybe_pause_protocol�extend)r7r�s  r�writez%_ProactorBaseWritePipeTransport.writeOsA���$��	�:� >�?�?��-��D�z�*�*�-�-�.�
.������;�<�<����)��I�J�J��t��F��?�?�?����)�"M�"M�M�M����@�A�A��O�O�O�q� �O�O��F��?�?�"�
���E�$�K��0�0�0�0�����$�T�?�D�L��&�&�(�(�(�(�
�L�L����%�%��&�&�(�(�(�(r>Nc�:�	|�|j�|jrdSd|_d|_|r|j�|�|j}d|_|s||jr'|j
j
|jd�|jr+|jjtj�|j�n�|j
jj|j|�|_|jj!�sJt#|�|_|jj%|j&�|j)�n&|jj%|j&�|j*�,|j�|j*j-d�dSdSdS#t.$r}|j1|�Yd}~dSd}~wt2$r}|j5|d�Yd}~dSd}~wwxYw)Nrz#Fatal write error on pipe transport)r+r.r,r�r)rr2rWr0r&rpr�SHUT_WR�_maybe_resume_protocolr��sendrlrFr�r�r�rkrmr�rgrdri)r7�fr�rhs    rr�z-_ProactorBaseWritePipeTransport._loop_writingus	��&	J��}����!8�T�]�]�]���"�D�O�"#�D���q����
�
��|��|�|��#����4��=�=�=��J�J�(�(��)C�)C�T�J�J��$�$�$��J�J�'�'����7�7��+�+�-�-�-�"&�*�*�"6�"6�";�";�D�J�J��"M������+�+�-�-�*-�d�)�D�'��O�O�5�5�d�6H�6H�I�I��.�.�0�0�0��O�O�5�5�d�6H�6H�I�I��!�!�-�$�/�/�2I��"�"�-�-�d�3�3�3�3�3J�2I�-�-��#�	#�	#�	#����c�"�"�"�"�"�"�"�"������	J�	J�	J����c�#H�I�I�I�I�I�I�I�I�����	J���s)�G
�F)G
�
H�G/�/
H�<H�Hc��dS�NT�rRs r�
can_write_eofz-_ProactorBaseWritePipeTransport.can_write_eof�����tr>c�(�|j�dSrO)rYrRs r�	write_eofz)_ProactorBaseWritePipeTransport.write_eof�s���
�
����r>c�*�|jd�dSrO�rgrRs r�abortz%_ProactorBaseWritePipeTransport.abort�������$����r>c���|j�
td��|jj�|_|j�|jjd�|jS)NzEmpty waiter is already set)rkr�r�
create_futurer+rmrRs r�_make_empty_waiterz2_ProactorBaseWritePipeTransport._make_empty_waiter�s\�����)��<�=�=�!�Z�Z�5�5�7����?�?�"����)�)�$�/�/��!�!�!r>c��d|_dSrO)rkrRs r�_reset_empty_waiterz3_ProactorBaseWritePipeTransport._reset_empty_waiter�s��!����r>�NN)rCrzr{r|�_start_tls_compatibler$r�r�r�r�r�r�r�rr�s@rr�r�Es��������$�$� ��"�"�"�"�"�$)�$)�$)�L'J�'J�'J�'J�R������ � � �"�"�"�"�"�"�"�"�"�"r>r�c�$��eZdZ�fd�Zd�Z�xZS)�_ProactorWritePipeTransportc����t�j|i|��|jjj	|j
d�|_|jj|j�dS)N�)	r#r$rr��recvr&r*r��_pipe_closedr�s   �rr$z$_ProactorWritePipeTransport.__init__�sc��������$�%�"�%�%�%����-�-�2�2�4�:�:�r�B������(�(��):�):�;�;�;�;r>c���|j�rdS|jrdSd|_|j�|j	t��dS|j
�dSrO)�	cancelledr.r*r+rg�BrokenPipeErrorrY)r7r�s  rr�z(_ProactorWritePipeTransport._pipe_closed�sZ���=�=�?�?��F��=�=�=��F�����?�?�&����o�/�0�0�0�0��J�J�L�L�L�Lr>)rCrzr{r$r�rr�s@rr�r��sG�������<�<�<�<�<�

�
�
�
�
�
�
r>r�c�R��eZdZdZ		d
�fd�	Zd�Zd�Zd�Zdd�Zdd�Z	dd	�Z
�xZS)�_ProactorDatagramTransportiNc����||_d|_d|_t�j	|||||��tj�|_|jj|j�dS)Nr)r:r;)�_addressrk�_buffer_sizer#r$�collections�dequer)rr2r�)r7r8rr9�addressr:r;r=s       �rr$z#_ProactorDatagramTransport.__init__�sm�����
�!������	�����t�X�f�E��J�J�#�(�(�*����
�
���T�/�/�0�0�0�0r>c�"�t||�dSrO�rrMs  rr%z%_ProactorDatagramTransport._set_extra�����$��%�%�%�%r>c��|jSrO)r�rRs rrxz0_ProactorDatagramTransport.get_write_buffer_size�s��� � � r>c�*�|jd�dSrOr�rRs rr�z _ProactorDatagramTransport.abort�r�r>c��t|tttf�st	dt|���|sdS|j�*|d|jfvrtd|j����|jrY|jrM|jtjkrtjd�|xjdz
c_dS|jjt|�|f�|xjt!|�z
c_|j"�|j%�|j'�dS)Nz,data argument must be bytes-like object (%r)z!Invalid address: must be None or z!socket.sendto() raised exception.r)rcr�r�r�r�r�r��
ValueErrorr-rr�r
rr)rDr�rFr+r�r�)r7r��addrs   r�sendtoz!_ProactorDatagramTransport.sendto�s.���$��	�:� >�?�?��J� ��J�(�
(��t��F��=�=�$��d�D�M�M�5J�)J�)J��C�D�M�M�C�C�E�
E��?�?�?�t�}�}�}����)�"M�"M�M�M����B�C�C��O�O�O�q� �O�O��F�	
�����U�4�[�$�/�0�0�����S��Y�&����?�?�"���� � �	
�"�"�$�$�$�$r>c��	|jrdSd|_|r|j�|jr|jrA|jr5|j
r'|jj|jd�dS|jj�\}}|xjt|�zc_
|j�7|jjj|j|�|_n8|jjj|j||��|_|jj!|j"�|j%�dS#t&$r'}|j(j+|�Yd}~dSd}~wt,$r}|j/|d�Yd}~dSd}~wwxYw)N)r�z'Fatal write error on datagram transport)r-r+r�r)r�r.rr2rW�popleftr�rFr�r�r&r�r�r�r�rdr3�error_received�	Exceptionri)r7r�r�r�rhs     rr�z(_ProactorDatagramTransport._loop_writing�s���	*�������#�D�O��s��
�
����<�<�<�D�O�O�O��
�
�
��=�=�=��J�J�(�(��)C�)C�T�J�J������-�-�/�J�D�$������T��*����}�}�(�"&�*�*�"6�"6�";�";�D�J�J�<@�#B����#'�*�*�"6�"6�"=�"=�d�j�j�>B�CG�#>�#I���
�O�O�-�-�d�.@�.@�A�A��'�'�)�)�)�)��
�	/�	/�	/��N�N�)�)�#�.�.�.�.�.�.�.�.������	N�	N�	N����c�#L�M�M�M�M�M�M�M�M�����	N���s0�E5�A1E5�B9E5�5
G�?F!�!
G�.G�Gc�X�d}	|jr$	|r|jj|�dSdSd|_|�c|j	�}|j
r&d}	|r|jj|�dSdS|j�||j}}n|\}}|jr$	|r|jj|�dSdS|j�A|jjj|j|j�|_n@|jjj|j|j�|_|j�'|jj|j�	|r|jj|�dSdS#t$r&}|jj!|�Yd}~�Nd}~wt"j$$r|j
s�Y�twxYw#|r|jj|�wxYwrO)r-r3�datagram_receivedr*r�r.r�rr�r�r&�max_size�recvfromr�r�rdr�rr�)r7r�r�r��resrhs      rr�z(_ProactorDatagramTransport._loop_reading!sN����'	=������H�t����0�0��t�<�<�<�<��t�?"�D�N����j�j�l���=�=�=��D��0�t����0�0��t�<�<�<�<��t�-�=�=�,�!$�d�m�m�$�D�D�!$�J�D�$������ �t����0�0��t�<�<�<�<��t��}�}�(�!%���!5�!5�!:�!:�4�:�:�;?�=�=�"J����"&���!5�!5�!>�!>�t�z�z�?C�}�}�"N����~�~�)����0�0��1C�1C�D�D�D��t����0�0��t�<�<�<�<��t���	/�	/�	/��N�N�)�)�#�.�.�.�.�.�.�.������(�(�	�	�	��=�=�=��!�=�	������t����0�0��t�<�<�
=�
=�
=�
=sM�F3�(F3�,F3�B
F3�3H�3
H�=G�H�$H�H�H�H�!H)ryrO)rCrzr{r�r$r%rxr�r�r�r�rr�s@rr�r��s���������H�59�$(�1�1�1�1�1�1�&�&�&�!�!�!� � � �%�%�%�%�: *� *� *� *�D)=�)=�)=�)=�)=�)=�)=�)=r>r�c��eZdZdZd�Zd�ZdS)�_ProactorDuplexPipeTransportzTransport for duplex pipes.c��dS)NFr�rRs rr�z*_ProactorDuplexPipeTransport.can_write_eofRs���ur>c��t�rO)�NotImplementedErrorrRs rr�z&_ProactorDuplexPipeTransport.write_eofUs��!�!r>N)rCrzr{r|r�r�r�r>rr�r�Ms:������&�%����"�"�"�"�"r>r�c�f��eZdZdZej
jZ		d�fd�	Zd�Z	d�Z
d�Z�xZS)�_ProactorSocketTransportz Transport for connected sockets.Nc�x��t�j||||||�tj|�dSrO)r#r$r�_set_nodelayr6s       �rr$z!_ProactorSocketTransport.__init__`s7���
�����t�X�v�u�f�E�E�� � ��&�&�&�&r>c�"�t||�dSrOr�rMs  rr%z#_ProactorSocketTransport._set_extraer�r>c��dSr�r�rRs rr�z&_ProactorSocketTransport.can_write_eofhr�r>c��|js|jrdSd|_|j�-|jj	t
j�dSdSr�)r.r0r+r&rprr�rRs rr�z"_ProactorSocketTransport.write_eofksT���=�=�=�D�-�-�-��F� ����?�?�"��J�J������/�/�/�/�#�"r>ry)
rCrzr{r|r�
_SendfileMode�
TRY_NATIVE�_sendfile_compatibler$r%r�r�rr�s@rr�r�Ys��������+�*�$�2�2�=�=��48�$(�'�'�'�'�'�'�
&�&�&����0�0�0�0�0�0�0r>r�c����eZdZ�fd�Z		d d�Z	d!ddddddd�d�Z	d d�Z		d"d�Z		d"d	�Z		d"d
�Z	�fd�Z
d�Zd
�Zd�Z
d#d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd!d�Zd�Z			d$d�Zd�Zd�Zd�Z�xZS)%rc����t�j�tjd|jj
�||_||_d|_i|_	|j|�|j�tj�tj�ur2tj |j"j%��dSdS)NzUsing proactor: %s)r#r$r
rer=rCr��	_selector�_self_reading_future�_accept_futures�set_loop�_make_self_pipe�	threading�current_thread�main_thread�signal�
set_wakeup_fd�_csockrE)r7�proactorr=s  �rr$zBaseProactorEventLoop.__init__us����
���������)�8�+=�+=�+F�+F�G�G�!���!���$(��!�!������$���������#�#�%��)>�)>�)@�@�@�� � ����!3�!3�!5�6�6�6�6�A�@r>Nc�&�t||||||�SrO)r�)r7rr9r:r;r<s      r�_make_socket_transportz,BaseProactorEventLoop._make_socket_transport�s��'��d�H�f�(-�v�7�	7r>F)�server_side�server_hostnamer;r<�ssl_handshake_timeout�ssl_shutdown_timeoutc
�|�tj|||||||	|
��}t|||||��|jS)N)rr�r;r<)r
�SSLProtocolr��_app_transport)r7�rawsockr9�
sslcontextr:rrr;r<rr�ssl_protocols            r�_make_ssl_transportz)BaseProactorEventLoop._make_ssl_transport�sX�� �+�+��h�
�F��_�&;�%9�	;�;��
	!��w��',�V�	=�	=�	=��*�*�*r>c�&�t||||||�SrO)r�)r7rr9r�r:r;s      r�_make_datagram_transportz.BaseProactorEventLoop._make_datagram_transport�s��)�$��h��*0�%�9�	9r>c�$�t|||||�SrO)r��r7rr9r:r;s     r�_make_duplex_pipe_transportz1BaseProactorEventLoop._make_duplex_pipe_transport�s��+�D�,0�(�F�E�K�	Kr>c�$�t|||||�SrO)r�r!s     r�_make_read_pipe_transportz/BaseProactorEventLoop._make_read_pipe_transport�s��)�$��h���N�Nr>c�$�t|||||�SrO)r�r!s     r�_make_write_pipe_transportz0BaseProactorEventLoop._make_write_pipe_transport�s��+�4�+/��6�5�J�	Jr>c���|j�r
td��|j�rdStj�tj
�urt
jd�|j�|j�|jj�d|_
d|_t�j�dS)Nz!Cannot close a running event looprq)�
is_runningr��	is_closedr	r
rrr
�_stop_accept_futures�_close_self_piper�rYrr#)r7r=s �rrYzBaseProactorEventLoop.close�s�����?�?����B�C�C��>�>����F��#�#�%��)>�)>�)@�@�@�� � ��$�$�	
�!�!�#�#�������������������	��
�
����r>c��PK�|jj||��d{���S7�rO)r�r�)r7r�ns   r�	sock_recvzBaseProactorEventLoop.sock_recv�s3�����^�^�(�(��q�1�1�1�1�1�1�1�1�1���&c��PK�|jj||��d{���S7�rO)r�r�)r7r�bufs   r�sock_recv_intoz$BaseProactorEventLoop.sock_recv_into�s3�����^�^�-�-�d�C�8�8�8�8�8�8�8�8�8�r/c��PK�|jj||��d{���S7�rO)r�r�)r7r�bufsizes   r�
sock_recvfromz#BaseProactorEventLoop.sock_recvfrom�s3�����^�^�,�,�T�7�;�;�;�;�;�;�;�;�;�r/rc��pK�|s
t|�}|jj|||��d{���S7�rO)rFr��
recvfrom_into)r7rr1�nbytess    r�sock_recvfrom_intoz(BaseProactorEventLoop.sock_recvfrom_into�sC�����v���X�F��^�^�1�1�$��V�D�D�D�D�D�D�D�D�D�s�6c��PK�|jj||��d{���S7�rO)r�r�)r7rr�s   r�sock_sendallz"BaseProactorEventLoop.sock_sendall�s3�����^�^�(�(��t�4�4�4�4�4�4�4�4�4�r/c��TK�|jj||d|��d{���S7�)Nr)r�r�)r7rr�r�s    r�sock_sendtoz!BaseProactorEventLoop.sock_sendto�s7�����^�^�*�*�4��q�'�B�B�B�B�B�B�B�B�B�s�(c��PK�|jj||��d{���S7�rO)r��connect)r7rr�s   r�sock_connectz"BaseProactorEventLoop.sock_connect�s3�����^�^�+�+�D�'�:�:�:�:�:�:�:�:�:�r/c��NK�|jj|��d{���S7�rO)r��acceptrMs  r�sock_acceptz!BaseProactorEventLoop.sock_accept�s1�����^�^�*�*�4�0�0�0�0�0�0�0�0�0�s�%c��K�	|j�}	t
j|�j}|r|n|}|sdSt|d�}|rt||z|�n|}	t||�}d}
		t|	|z
|�}|dkr|
|
dkr|j|�SS|jj||||��d{���||z
}|
|z
}
�b#ttjf$r}t	j
d��d}~wwxYw#t$rt	j
d��wxYw7�m#|
dkr|j|�wxYw)Nznot a regular filerl��)rE�AttributeError�io�UnsupportedOperationr�SendfileNotAvailableError�os�fstat�st_sizerd�min�seekr��sendfile)r7r�file�offset�countrE�err�fsize�	blocksize�end_pos�
total_sents           r�_sock_sendfile_nativez+BaseProactorEventLoop._sock_sendfile_native�s�����	M��[�[�]�F�	M��H�H�V�$�,�,�E�#�U�E�E��	��y��1��	�;�/�	�05��#�f�u�n�e�,�,�5���V�U�#���
�
	"����&� 0�)�<�	���>�>�%�
�A�~�~��	�	�&�!�!�!��	�n�n�-�-�d�D�&�)�L�L�L�L�L�L�L���)�#���i�'�
�
���� 7� 7�8�	M�	M�	M��6�6�7K�L�L�����	M������	M�	M�	M��6�6�7K�L�L�	M����M����A�~�~��	�	�&�!�!�
"�
"�
"�
"sF�C�!D�5D9�(!D9�	D7�
D9�D�3D
�
D�"D4�7D9�9Ec��nK�|j�}|j�|j��d{���	|j|j|||d���d{���	|j�|r|j
�SS7�Q7�+#|j�|r|j
�wxYw)NF)�fallback)r�r�r��
sock_sendfiler&r�r�)r7�transprOrPrQr�s      r�_sendfile_nativez&BaseProactorEventLoop._sendfile_native�s������*�*�,��������'�'�)�)�)�)�)�)�)��	(��+�+�F�L�L�$���5:�,�<�<�<�<�<�<�<�
<�
�&�&�(�(��~��%�%�'�'�'��
	*��<���
�&�&�(�(��~��%�%�'�'�
(�
(�
(�
(s"�B
�#B� B�!B�B�&B4c��|j�"|jj�d|_|jj�d|_|jj�d|_|xj
dzc_dS)Nr)rrX�_ssockrYr�
_internal_fdsrRs rr+z&BaseProactorEventLoop._close_self_pipes|���$�$�0��%�%�,�,�.�.�(,�D�%�������������������������a�����r>c���tj�\|_|_|jj	d�|jj	d�|xj
dz
c_dS)NFr)r�
socketpairr^r�setblockingr_rRs rrz%BaseProactorEventLoop._make_self_pipes`��#)�#4�#4�#6� ���T�[�������&�&�������&�&�����a�����r>c��	|�|j�|j|urdS|jj|jd�}||_|j|j�dS#tj$rYdSttf$r�t$r!}|jd||d��Yd}~dSd}~wwxYw)Niz.Error on reading from the event loop self pipe)rarbr8)
r�rr�r�r^r��_loop_self_readingrr�r�r�r�rf)r7r�rhs   rrdz(BaseProactorEventLoop._loop_self_readings��	9��}����
�
��(�(��1�1������#�#�D�K�K��6�A�)*�D�%�
���� 7� 7�8�8�8�8���(�(�	�	�	��F�F��-�.�	�	�	���	�	�	��'�'�K� ��)�)�
�
�
�
�
�
�
�
�����	���s"�!A1�'A1�1C�C�"B>�>Cc��|j}|�dS	|jd�dS#t$r,|jrt	j
dd��YdSYdSwxYw)N�z3Fail to write a null byte into the self-pipe socketTr)rr�rd�_debugr
re)r7�csocks  r�_write_to_selfz$BaseProactorEventLoop._write_to_self/s��������=��F�	,��J�J�u�������	,�	,�	,��{�{�{����0�&*�,�,�,�,�,�,��{�{�	,���s�&�/A�A�dc	�T���������d��������fd�	��j��dS)Nc
�D��	|�y|j�\}}�jrtjd�||���}���j	||�dd|i��
���n�j||d|i����j
�rdS�jj�	�}|�j�	j�<|j��dS#t$r�}�	j�dkr=�jd|tj�	�d���	j!�n2�jr tjd	�	d�
�Yd}~dSYd}~dSYd}~dSd}~wt"j$$r�	j!�YdSwxYw)Nz#%r got a new connection from %r: %rTr)rr;r<rrrrqzAccept failed on a socket)rarbrzAccept failed on socket %rr)r�rgr
rerrr)r�rBrrEr�rdrfrrrYrr�)
r��connr�r9rhr8�protocol_factoryr7r<rrrrs
     ��������rr8z2BaseProactorEventLoop._start_serving.<locals>.loopFs���#
*��=�!"����J�D�$��{�{�{����%J�%+�T�4�9�9�/�/�1�H�!�-��0�0� �(�J�D�#-�t�"4�V�2G�1E�	1�G�G�G��3�3� �(�#-�t�"4�V�4�E�E��>�>�#�#��F��N�N�)�)�$�/��78��$�$�T�[�[�]�3��#�#�D�)�)�)�)���

6�

6�

6��;�;�=�B�&�&��/�/�#>�%(�"(�"8�"8��">�1�1���
�J�J�L�L�L��[�[�[��L�L�!=�!%��6�6�6�6�6�6�6�6�6�!�[�[�[�[�[�!�L�L�L�L�L������,�,�
�
�
��
�
������
���s%�BC�C�
F�)A8E3�3(F�FrO)r2)	r7rnrrr<�backlogrrr8s	````` ``@r�_start_servingz$BaseProactorEventLoop._start_servingAsc����������
$	*�$	*�$	*�$	*�$	*�$	*�$	*�$	*�$	*�$	*�$	*�$	*�$	*�L	
���t����r>c��dSrOr�)r7�
event_lists  r�_process_eventsz%BaseProactorEventLoop._process_eventsns���r>c��|jj�D]}|j��|jj�dSrO)r�valuesrX�clear)r7�futures  rr*z*BaseProactorEventLoop._stop_accept_futuresrsH���*�*�1�1�3�	�	�F��M�M�O�O�O����"�"�$�$�$�$r>c���|jj|j�d�}|r|j�|jj|�|j
�dSrO)r�poprErXr��
_stop_servingrY)r7rrws   rrzz#BaseProactorEventLoop._stop_servingwsT���%�%�)�)�$�+�+�-��>���6��M�M�O�O����$�$�T�*�*��
�
����r>ryrOr�)r)NNrjNN)rCrzr{r$rrrr"r$r&rYr.r2r5r9r;r=r@rCrWr\r+rrdrirprsr*rzrr�s@rrrssS�������7�7�7�7�7�=A�26�7�7�7�7�9=�
+� �$��t�"&�!%�
+�
+�
+�
+�
+� CG�9�9�9�9�
BF�*.�K�K�K�K�
@D�(,�O�O�O�O�AE�)-�J�J�J�J������(2�2�2�9�9�9�<�<�<�E�E�E�E�5�5�5�C�C�C�;�;�;�1�1�1�"�"�"�:
(�
(�
(� � � � � � �9�9�9�9�8,�,�,�&>A�-1�,0�+�+�+�+�Z
�
�
�%�%�%�
������r>r)$r|�__all__rFrIrr}rr	r��rrrrr	r
rr�logr
r�_FlowControlMixin�
BaseTransportr!�
ReadTransportr��WriteTransportr�r��DatagramTransportr��	Transportr�r��
BaseEventLooprr�r>r�<module>r�s�����#��	�	�	�	�	�	�	�	�
�
�
�
�����
�
�
�
���������������������������������������������������������������0�0�0�$B�B�B�B�B��!=�!=�!+�!9�!9�B�B�JO2�O2�O2�O2�O2�!;�!+�!9�!9�O2�O2�dk"�k"�k"�k"�k"�&@�&0�&?�&?�k"�k"�\�����"A���,A=�A=�A=�A=�A=�!;�!+�!=�!=�A=�A=�H	"�	"�	"�	"�	"�#=�#B�#-�#7�#7�	"�	"�0�0�0�0�0�9�>�)�3�3�0�0�4I�I�I�I�I�K�5�5�I�I�I�Ir>