add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
�

�Wc��cs(�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)�loggercs��tj|�|jd<	|j�|jd<d|jvr!	|j�|jd<dSdS#tj
$r8|jj�rtjd|d��Y�|wxYw#tj
$rd|jd<YdSwxYw)N�socketZsocknamezgetsockname() failed on %rT�Zexc_info�peername)r
�TransportSocket�_extraZgetsocknamerZerror�_loop�	get_debugr�warningZgetpeername)�	transport�sock�  �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+cs���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.Ncs(��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_writtenZ_attachr�	call_soon�	_protocolZconnection_maderZ_set_result_unless_cancelled��self�loopr�protocol�waiter�extra�server�	__class__�       �rrz#_ProactorBasePipeTransport.__init__2s����
������%�%���������
����(�#�#���������������������
�',��$�!����<�<�#��L�L� � �"�"��
�
���T�^�^�;�;�T�B�B����J�J� � ��!E�!E�!'��
/�
/�
/�
/���cs��|jjg}|j�|jd�n|jr|jd�|j�.|jd|jj����|j�|jd|j���|j�|jd|j���|jr*|jdt|j����|jr|jd�djd	j|��S)
NZclosedZclosingzfd=zread=zwrite=zwrite_bufsize=zEOF writtenz<{}>z )
r1�__name__r�appendr%�filenor!r"r �lenr'ZformatZjoin)r+Zinforr�__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�^�,�,r3cs$�||jd<dS)NZpipe)r�r+rrrrz%_ProactorBasePipeTransport._set_extra[s��"����F���r3cs�||_dS�N�r))r+r-rrrz'_ProactorBasePipeTransport.set_protocol^s
��!����r3c��|jSr:r;�r+� r�get_protocolz'_ProactorBasePipeTransport.get_protocolas���~�~�r3cr<r:)r%r=r>r�
is_closingz%_ProactorBasePipeTransport.is_closingds���}�}�r3cs8�|jrdSd|_|xjdz
c_|js3|j�'|jj|jd�|j�$|jj�d|_dSdS)NTr)	r%r$r r"rr(�_call_connection_lostr!�cancelr=r>r�closez _ProactorBasePipeTransport.closegs����=�=�=��F���
�����1�����|�|�|���� 7��J�J� � ��!;�!;�T�B�B��>�>�%��N�N�!�!�#�#�!�D�N�N�N�&�%r3cs��|j�1|d|��t|��|jj�dSdS)Nzunclosed transport )Zsource)rZResourceWarningrC)r+Z_warnrr�__del__z"_ProactorBasePipeTransport.__del__rsJ���:�:�!��E�0��0�0�/�$�O�O�O��J�J�������"�!r3�Fatal error on pipe transportcsD�	t|t�r7|jj�rGt	j
d||d��n+|jj
||||jd��|j|�dS#|j|�wxYw)Nz%r: %sTr
)�message�	exceptionrr-)	�
isinstance�OSErrorrrr�debug�call_exception_handlerr)�_force_close)r+�excrF�   r�_fatal_errorz'_ProactorBasePipeTransport._fatal_errorws���	#��#�w�'�'��:�:�'�'�)�)��L�L��4��4�H�H�H�H��
�
�1�1�&�!$�!%� $���	3�3���
���c�"�"�"�"��D���c�"�"�"�"�"�"s�A5B�BcsX�|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_resultZ
set_exceptionr%r&r$r"rBr!r#r rr(rA)r+rMrrrLz'_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��=�=�=�=r3cs�	|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)r)Zconnection_lostZhasattrrr6rSrZ	SHUT_RDWRrCrZ_detachr&)r+rMr0rNrrAz0_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�B3Fcsj�|j}|j�|t|j�z
}|Sr:)r#r r7)r+Zsizerr�get_write_buffer_sizez0_ProactorBasePipeTransport.get_write_buffer_size�s/���"�"���<�<�#��C����%�%�D��r3�NNN)rE)r4�
__module__�__qualname__�__doc__rr8rrr?r@rC�warningsZwarnrDrOrLrArU�
__classcell__�r1�@rrr.s�������4�4�48�$(�/�/�/�/�/�/�.-�-�-�$#�#�#�"�"�"�������	"�	"�	"�%�M�M�����

#�
#�
#�
#�>�>�>�(0�0�0�$������r3rcsN��eZdZdZ		d�fd�	Zd�Zd�Zd�Zd�Zd	�Z	dd
�Z
�xZS)
�_ProactorReadPipeTransportzTransport for read pipes.N�cs���d|_d|_t�j||||||�t	|�|_|jj|j�d|_dS)NrTTF)	�_pending_data_length�_pausedrr�	bytearray�_datarr(�
_loop_reading)	r+r,rr-r.r/r0Zbuffer_sizer1s	        �rrz#_ProactorReadPipeTransport.__init__�sa���$&��!����
�����t�X�v�u�f�E�E��{�+��
��
�
���T�/�/�0�0�����r3cs6�|jo|jSr:)rar%r=r>r�
is_readingz%_ProactorReadPipeTransport.is_reading�s���<�<��5��
�
�$5�5r3cs��|js|jrdSd|_|jj�rt	j
d|�dSdS)NTz%r pauses reading)r%rarrrrJr=r>r�
pause_readingz(_ProactorReadPipeTransport.pause_reading�sT���=�=�=�D�L�L�L��F�����:�:���!�!��L�L�,�d�3�3�3�3�"�!r3cs��|js|jsdSd|_|j�'|jj	|j
d�|j}d|_|dkr5|jj	|j|jd||�|jj�rtjd|�dSdS)NFrTz%r resumes reading)r%rar!rr(rdr`�_data_receivedrcrrrJ)r+�lengthrr�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�"�!r3csF�|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.)rrrrJr)Zeof_received�
SystemExit�KeyboardInterrupt�
BaseExceptionrOrC)r+Z	keep_openrMrNr�
_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 cs��|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.)
rar`rmrHr)rZBufferedProtocolZ_feed_data_to_buffered_protorjrkrlrOZ
data_received)r+�datarhrM�    rrgz)_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
�
Ccs`�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)NrTrz"Fatal read error on pipe transportz*Read error on pipe transport while closingTr
)r!rQ�resultrgrcrBr%rar�	_proactor�	recv_intor�add_done_callbackrdZConnectionAbortedErrorrOrrrJ�ConnectionResetErrorrLrIr�CancelledError)r+�futrhrnrM�     rrdz(_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_r:)r4rWrXrYrrerfrirmrgrdr[r\r]rr^r^�s��������#�#�48�6;�������6�6�6�4�4�4�&5�5�5�$��� /�/�/�202�02�02�02�02�02�02�02r3r^csR��eZdZdZdZ�fd�Zd�Zdd�Zd�Zd�Z	d	�Z
d
�Zd�Z�xZ
S)
�_ProactorBaseWritePipeTransportzTransport for write pipes.TcsN��t�j|i|��d|_dSr:)rrrP�r+ZargsZkwr1�   �rrz(_ProactorBaseWritePipeTransport.__init__Ks.��������$�%�"�%�%�%�!����r3cs��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)rn)rH�bytesrb�
memoryview�	TypeError�typer4r'�RuntimeErrorrPr$r�!LOG_THRESHOLD_FOR_CONNLOST_WRITESrrr"�
_loop_writingr �_maybe_pause_protocolZextend)r+rnrr�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����%�%��&�&�(�(�(�(r3Ncs:�	|�|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#rpr rr(rAr'rrSr�SHUT_WR�_maybe_resume_protocolrq�sendrQr7rsr�r�rPrRrtrLrIrO)r+�frnrMrorr�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�r=r>r�
can_write_eofz-_ProactorBaseWritePipeTransport.can_write_eof�����tr3cs(�|j�dSr:)rCr=r>r�	write_eofz)_ProactorBaseWritePipeTransport.write_eof�s���
�
����r3c�*�|jd�dSr:�rLr=r>r�abortz%_ProactorBaseWritePipeTransport.abort�������$����r3cs��|j�
td��|jj�|_|j�|jjd�|jS)NzEmpty waiter is already set)rPrrZ
create_futurer"rRr=r>r�_make_empty_waiterz2_ProactorBaseWritePipeTransport._make_empty_waiter�s\�����)��<�=�=�!�Z�Z�5�5�7����?�?�"����)�)�$�/�/��!�!�!r3cs�d|_dSr:)rPr=r>r�_reset_empty_waiterz3_ProactorBaseWritePipeTransport._reset_empty_waiter�s��!����r3�NN)r4rWrXrYZ_start_tls_compatiblerr�r�r�r�r�r�r�r[r\r]rrxrxEs��������$�$� ��"�"�"�"�"�$)�$)�$)�L'J�'J�'J�'J�R������ � � �"�"�"�"�"�"�"�"�"�"r3rxcs$��eZdZ�fd�Zd�Z�xZS)�_ProactorWritePipeTransportcs���t�j|i|��|jjj	|j
d�|_|jj|j�dS)Ni)	rrrrq�recvrr!rs�_pipe_closedryrzrrz$_ProactorWritePipeTransport.__init__�sc��������$�%�"�%�%�%����-�-�2�2�4�:�:�r�B������(�(��):�):�;�;�;�;r3cs��|j�rdS|jrdSd|_|j�|j	t��dS|j
�dSr:)Z	cancelledr%r!r"rLZBrokenPipeErrorrC)r+rvrrr�z(_ProactorWritePipeTransport._pipe_closed�sZ���=�=�?�?��F��=�=�=��F�����?�?�&����o�/�0�0�0�0��J�J�L�L�L�Lr3)r4rWrXrr�r[r\r]rr�r��sG�������<�<�<�<�<�

�
�
�
�
�
�
r3r�csR��eZdZdZ		d
�fd�	Zd�Zd�Zd�Zdd�Zdd�Z	dd	�Z
�xZS)�_ProactorDatagramTransportiNcs���||_d|_d|_t�j	|||||��tj�|_|jj|j�dS)Nr)r.r/)�_addressrP�_buffer_sizerr�collectionsZdequer rr(rd)r+r,rr-�addressr.r/r1r2rrz#_ProactorDatagramTransport.__init__�sm�����
�!������	�����t�X�f�E��J�J�#�(�(�*����
�
���T�/�/�0�0�0�0r3c�"�t||�dSr:�rr9rrrz%_ProactorDatagramTransport._set_extra�����$��%�%�%�%r3cr<r:)r�r=r>rrUz0_ProactorDatagramTransport.get_write_buffer_size�s��� � � r3cr�r:r�r=r>rr�z _ProactorDatagramTransport.abort�r�r3cs��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)rHr{rbr|r}r~r�Z
ValueErrorr$rr�rrr r5r�r7r"r�r�)r+rn�addrrNr�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�&����?�?�"���� � �	
�"�"�$�$�$�$r3cs��	|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"rpr r�r%rr(rAZpopleftr�r7rqr�rr�rsr�r�rIr)�error_receivedZ	ExceptionrO)r+rvrnr�rMrwrr�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csX�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|�wxYwr:)r$r)Zdatagram_receivedr!rpr%r�rrqr�r�max_size�recvfromrsrdrIr�rru)r+rvrnr�ZresrM�      rrdz(_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)rVr:)r4rWrXr�rrrUr�r�r�rdr[r\r]rr�r��s���������H�59�$(�1�1�1�1�1�1�&�&�&�!�!�!� � � �%�%�%�%�: *� *� *� *�D)=�)=�)=�)=�)=�)=�)=�)=r3r�cs�eZdZdZd�Zd�ZdS)�_ProactorDuplexPipeTransportzTransport for duplex pipes.cr�)NFr�r=r>rr�z*_ProactorDuplexPipeTransport.can_write_eofRs���ur3cs�t�r:)ZNotImplementedErrorr=r>rr�z&_ProactorDuplexPipeTransport.write_eofUs��!�!r3N)r4rWrXrYr�r�r�r3rr�r�Ms:������&�%����"�"�"�"�"r3r�csf��eZdZdZej
jZ		d�fd�	Zd�Z	d�Z
d�Z�xZS)�_ProactorSocketTransportz Transport for connected sockets.Ncsx��t�j||||||�tj|�dSr:)rrrZ_set_nodelayr*r2rrz!_ProactorSocketTransport.__init__`s7���
�����t�X�v�u�f�E�E�� � ��&�&�&�&r3cr�r:r�r9rrrz#_ProactorSocketTransport._set_extraer�r3cr�r�r�r=r>rr�z&_ProactorSocketTransport.can_write_eofhr�r3cs��|js|jrdSd|_|j�-|jj	t
j�dSdSr�)r%r'r"rrSrr�r=r>rr�z"_ProactorSocketTransport.write_eofksT���=�=�=�D�-�-�-��F� ����?�?�"��J�J������/�/�/�/�#�"r3rV)
r4rWrXrYrZ
_SendfileModeZ
TRY_NATIVEZ_sendfile_compatiblerrr�r�r[r\r]rr�r�Ys��������+�*�$�2�2�=�=��48�$(�'�'�'�'�'�'�
&�&�&����0�0�0�0�0�0�0r3r�cs���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)%rcs���t�j�tjd|jj
�||_||_d|_i|_	|j|�|j�tj�tj�ur2tj |j"j%��dSdS)NzUsing proactor: %s)rrrrJr1r4rq�	_selector�_self_reading_future�_accept_futuresZset_loop�_make_self_pipe�	threading�current_thread�main_thread�signal�
set_wakeup_fd�_csockr6)r+Zproactorr1s  �rrzBaseProactorEventLoop.__init__us����
���������)�8�+=�+=�+F�+F�G�G�!���!���$(��!�!������$���������#�#�%��)>�)>�)@�@�@�� � ����!3�!3�!5�6�6�6�6�A�@r3Nc�&�t||||||�Sr:)r�)r+rr-r.r/r0r�r�_make_socket_transportz,BaseProactorEventLoop._make_socket_transport�s��'��d�H�f�(-�v�7�	7r3F)�server_side�server_hostnamer/r0�ssl_handshake_timeout�ssl_shutdown_timeoutc
s|�tj|||||||	|
��}t|||||��|jS)N)r�r��r/r0)rZSSLProtocolr�Z_app_transport)r+Zrawsockr-�
sslcontextr.r�r�r/r0r�r�Zssl_protocols            r�_make_ssl_transportz)BaseProactorEventLoop._make_ssl_transport�sX�� �+�+��h�
�F��_�&;�%9�	;�;��
	!��w��',�V�	=�	=�	=��*�*�*r3cr�r:)r�)r+rr-r�r.r/r�r�_make_datagram_transportz.BaseProactorEventLoop._make_datagram_transport�s��)�$��h��*0�%�9�	9r3c�$�t|||||�Sr:)r��r+rr-r.r/rwr�_make_duplex_pipe_transportz1BaseProactorEventLoop._make_duplex_pipe_transport�s��+�D�,0�(�F�E�K�	Kr3cr�r:)r^r�rwr�_make_read_pipe_transportz/BaseProactorEventLoop._make_read_pipe_transport�s��)�$��h���N�Nr3cr�r:)r�r�rwr�_make_write_pipe_transportz0BaseProactorEventLoop._make_write_pipe_transport�s��+�4�+/��6�5�J�	Jr3cs���|j�r
td��|j�rdStj�tj
�urt
jd�|j�|j�|jj�d|_
d|_t�j�dS)Nz!Cannot close a running event looprT)Z
is_runningr�	is_closedr�r�r�r�r��_stop_accept_futures�_close_self_piperqrCr�r)r+r1s �rrCzBaseProactorEventLoop.close�s�����?�?����B�C�C��>�>����F��#�#�%��)>�)>�)@�@�@�� � ��$�$�	
�!�!�#�#�������������������	��
�
����r3c��PK�|jj||��d{���S7�r:)rqr�)r+rZnrNr�	sock_recvzBaseProactorEventLoop.sock_recv�s3�����^�^�(�(��q�1�1�1�1�1�1�1�1�1���&c�r�r:)rqrr)r+r�bufrNr�sock_recv_intoz$BaseProactorEventLoop.sock_recv_into�s3�����^�^�-�-�d�C�8�8�8�8�8�8�8�8�8�r�c�r�r:)rqr�)r+rZbufsizerNr�
sock_recvfromz#BaseProactorEventLoop.sock_recvfrom�s3�����^�^�,�,�T�7�;�;�;�;�;�;�;�;�;�r�rc�spK�|s
t|�}|jj|||��d{���S7�r:)r7rqZ
recvfrom_into)r+rr�Znbytesror�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�r�r:)rqr�)r+rrnrNr�sock_sendallz"BaseProactorEventLoop.sock_sendall�s3�����^�^�(�(��t�4�4�4�4�4�4�4�4�4�r�c�sTK�|jj||d|��d{���S7�)Nr)rqr�)r+rrnr�ror�sock_sendtoz!BaseProactorEventLoop.sock_sendto�s7�����^�^�*�*�4��q�'�B�B�B�B�B�B�B�B�B�s�(c�r�r:)rqZconnect)r+rr�rNr�sock_connectz"BaseProactorEventLoop.sock_connect�s3�����^�^�+�+�D�'�:�:�:�:�:�:�:�:�:�r�c�sNK�|jj|��d{���S7�r:)rq�acceptr9rr�sock_acceptz!BaseProactorEventLoop.sock_accept�s1�����^�^�*�*�4�0�0�0�0�0�0�0�0�0�s�%c�s�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��)r6ZAttributeError�ioZUnsupportedOperationrZSendfileNotAvailableError�osZfstatZst_sizerIZminZseekrqZsendfile)r+r�file�offset�countr6ZerrZfsizeZ	blocksizeZend_posZ
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�snK�|j�}|j�|j��d{���	|j|j|||d���d{���	|j�|r|j
�SS7�Q7�+#|j�|r|j
�wxYw)NF)Zfallback)rerfr�Z
sock_sendfilerr�ri)r+Ztranspr�r�r�rir�r�_sendfile_nativez&BaseProactorEventLoop._sendfile_native�s������*�*�,��������'�'�)�)�)�)�)�)�)��	(��+�+�F�L�L�$���5:�,�<�<�<�<�<�<�<�
<�
�&�&�(�(��~��%�%�'�'�'��
	*��<���
�&�&�(�(��~��%�%�'�'�
(�
(�
(�
(s"�B
�#B� B�!B�B�&B4cs�|j�"|jj�d|_|jj�d|_|jj�d|_|xj
dzc_dS)Nr)r�rB�_ssockrCr��
_internal_fdsr=r>rr�z&BaseProactorEventLoop._close_self_pipes|���$�$�0��%�%�,�,�.�.�(,�D�%�������������������������a�����r3cs��tj�\|_|_|jj	d�|jj	d�|xj
dz
c_dS)NFr)rZ
socketpairr�r�Zsetblockingr�r=r>rr�z%BaseProactorEventLoop._make_self_pipes`��#)�#4�#4�#6� ���T�[�������&�&�������&�&�����a�����r3cs��	|�|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)rFrGr,)
rpr�rqr�r�rs�_loop_self_readingrrurjrkrlrK)r+r�rMrNrr�z(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>�>Ccs��|j}|�dS	|jd�dS#t$r,|jrt	j
dd��YdSYdSwxYw)Nsz3Fail to write a null byte into the self-pipe socketTr
)r�r�rI�_debugrrJ)r+Zcsockrr�_write_to_selfz$BaseProactorEventLoop._write_to_self/s��������=��F�	,��J�J�u�������	,�	,�	,��{�{�{����0�&*�,�,�,�,�,�,��{�{�	,���s�&�/A�A�dc	sT���������d��������fd�	��j��dS)Nc
sD��	|�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)r�r/r0r�r�r�rTzAccept failed on a socket)rFrGrzAccept failed on socket %rr
)rpr�rrJr�r�r�rqr�r�r6rsrIrKr
rrCrru)
r�Zconnr�r-rMr,�protocol_factoryr+r0rr�r�r�s
     ��������rr,z2BaseProactorEventLoop._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�Fr:)r()	r+r�rr�r0Zbacklogr�r�r,s	````` ``@r�_start_servingz$BaseProactorEventLoop._start_servingAsc����������
$	*�$	*�$	*�$	*�$	*�$	*�$	*�$	*�$	*�$	*�$	*�$	*�$	*�L	
���t����r3cs�dSr:r�)r+Z
event_listrr�_process_eventsz%BaseProactorEventLoop._process_eventsns���r3cs��|jj�D]}|j��|jj�dSr:)r�ZvaluesrBZclear)r+�futurerrr�z*BaseProactorEventLoop._stop_accept_futuresrsH���*�*�1�1�3�	�	�F��M�M�O�O�O����"�"�$�$�$�$r3cs��|jj|j�d�}|r|j�|jj|�|j
�dSr:)r�Zpopr6rBrq�
_stop_servingrC)r+rr�rNrr�z#BaseProactorEventLoop._stop_servingwsT���%�%�)�)�$�+�+�-��>���6��M�M�O�O����$�$�T�*�*��
�
����r3rVr:r�)r)NNr�NN)r4rWrXrr�r�r�r�r�r�rCr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r[r\r]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
�
�
�%�%�%�
������r3r)$rYZ__all__r�r�rrZr�r�r�Zrrrrrrr	r
ZlogrrZ_FlowControlMixinZ
BaseTransportrZ
ReadTransportr^ZWriteTransportrxr�ZDatagramTransportr�Z	Transportr�r�Z
BaseEventLooprr�r3r�<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�Ir3