add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
B

�/g^5dc@sdZdZddlZddlZddlZddlZddlmZddlmZddlm	Z	ddlm
Z
dd	lmZdd
lmZddlm
Z
ddlmZGd
d�de
je
j�ZGdd�dee
j�ZGdd�dee
j�ZGdd�de�ZGdd�deee
j�ZGdd�deee
j�ZGdd�dej�ZdS)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)�events)�futures)�	protocols)�sslproto)�
transports)�loggercs|eZdZdZd�fdd�	Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zddd�Zdd�Z
dd�Zdd�Z�ZS)�_ProactorBasePipeTransportz*Base class for pipe and socket transports.Ncs�t��||�|�|�||_|�|�||_d|_d|_d|_d|_	d|_
d|_d|_|jdk	rl|j�
�|j�|jj|�|dk	r�|j�tj|d�dS)NrF)�super�__init__�
_set_extra�_sock�set_protocol�_server�_buffer�	_read_fut�
_write_fut�_pending_write�
_conn_lost�_closing�_eof_writtenZ_attach�_loop�	call_soon�	_protocolZconnection_maderZ_set_result_unless_cancelled��self�loop�sock�protocol�waiter�extra�server��	__class__��//usr/lib64/python3.7/asyncio/proactor_events.pyr
s$




z#_ProactorBasePipeTransport.__init__cCs�|jjg}|jdkr |�d�n|jr0|�d�|jdk	rP|�d|j�����|jdk	rl|�d|j���|jdk	r�|�d|j���|jr�|�dt	|j����|j
r�|�d�d�d	�|��S)
NZclosedZclosingzfd=zread=zwrite=zwrite_bufsize=zEOF writtenz<{}>z )
r%�__name__rZappendr�filenorrr�lenrZformatZjoin)rZinfor&r&r'�__repr__2s 






z#_ProactorBasePipeTransport.__repr__cCs||jd<dS)NZpipe)�_extra�rrr&r&r'rD�z%_ProactorBasePipeTransport._set_extracCs
||_dS�N�r)rr r&r&r'rGr.z'_ProactorBasePipeTransport.set_protocolcC�|jSr/r0�rr&r&r'�get_protocolJr.z'_ProactorBasePipeTransport.get_protocolcCr1r/)rr2r&r&r'�
is_closingMr.z%_ProactorBasePipeTransport.is_closingcCs\|jr
dSd|_|jd7_|js>|jdkr>|j�|jd�|jdk	rX|j��d|_dS)NTr)	rrrrrr�_call_connection_lostr�cancelr2r&r&r'�closePs

z _ProactorBasePipeTransport.closecCs,|jdk	r(tjd|��t|d�|��dS)Nzunclosed transport )Zsource)r�warningsZwarnZResourceWarningr7r2r&r&r'�__del__[s
z"_ProactorBasePipeTransport.__del__�Fatal error on pipe transportc	CsVzDt|t�r*|j��rBtjd||dd�n|j�||||jd��Wd|�|�XdS)Nz%r: %sT�Zexc_info)�message�	exceptionZ	transportr )	�
isinstance�OSErrorr�	get_debugr
�debug�call_exception_handlerr�_force_close)r�excr<r&r&r'�_fatal_erroras

z'_ProactorBasePipeTransport._fatal_errorcCs�|jdk	r6|j��s6|dkr*|j�d�n|j�|�|jr@dSd|_|jd7_|jrj|j��d|_|jr�|j��d|_d|_	d|_
|j�|j
|�dS)NTrr)�
_empty_waiter�done�
set_resultZ
set_exceptionrrrr6rrrrrr5)rrDr&r&r'rCps"

z'_ProactorBasePipeTransport._force_closec	Cs^z|j�|�Wdt|jd�r,|j�tj�|j��d|_|j}|dk	rX|�	�d|_XdS)N�shutdown)
rZconnection_lostZhasattrrrI�socketZ	SHUT_RDWRr7rZ_detach)rrDr#r&r&r'r5�s
z0_ProactorBasePipeTransport._call_connection_lostcCs"|j}|jdk	r|t|j�7}|Sr/)rrr*)rZsizer&r&r'�get_write_buffer_size�s
z0_ProactorBasePipeTransport.get_write_buffer_size�NNN)r:)r(�
__module__�__qualname__�__doc__r
r+rrr3r4r7r9rErCr5rK�
__classcell__r&r&r$r'rs
rcsTeZdZdZd�fdd�	Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	ddd�Z
�ZS)�_ProactorReadPipeTransportzTransport for read pipes.Ncs:d|_d|_t��||||||�|j�|j�d|_dS)NTF)�
_pending_data�_pausedrr
rr�
_loop_readingrr$r&r'r
�s
z#_ProactorReadPipeTransport.__init__cCs|jo|jSr/)rSrr2r&r&r'�
is_reading�r.z%_ProactorReadPipeTransport.is_readingcCs0|js|jrdSd|_|j��r,t�d|�dS)NTz%r pauses reading)rrSrr@r
rAr2r&r&r'�
pause_reading�s

z(_ProactorReadPipeTransport.pause_readingcCsn|js|jsdSd|_|jdkr0|j�|jd�|j}d|_|dk	rT|j�|j|�|j��rjt	�
d|�dS)NFz%r resumes reading)rrSrrrrTrR�_data_receivedr@r
rA�r�datar&r&r'�resume_reading�s

z)_ProactorReadPipeTransport.resume_readingc
Csd|j��rt�d|�y|j��}Wn.tk
rR}z|�|d�dSd}~XYnX|s`|��dS)Nz%r received EOFz1Fatal error: protocol.eof_received() call failed.)	rr@r
rArZeof_received�	ExceptionrEr7)rZ	keep_openrDr&r&r'�
_eof_received�s
z(_ProactorReadPipeTransport._eof_receivedc
Cs�|jr||_dS|s |��dSt|jtj�rryt�|j|�Wq~tk
rn}z|�	|d�dSd}~XYq~Xn|j�
|�dS)Nz3Fatal error: protocol.buffer_updated() call failed.)rSrRr\r>rrZBufferedProtocolZ_feed_data_to_buffered_protor[rEZ
data_received)rrYrDr&r&r'rW�sz)_ProactorReadPipeTransport._data_receivedc
Csdd}�zBy`|dk	r2d|_|��r*|��}n|��|jr@d}dS|dkrLdS|jsf|jj�|j	d�|_Wn�t
k
r�}z0|js�|�|d�n|j��r�t
jddd�Wdd}~XYn�tk
r�}z|�|�Wdd}~XYnftk
�r}z|�|d�Wdd}~XYn8tjk
�r.|j�s*�YnX|j�sF|j�|j�Wd|dk	�r^|�|�XdS)Nsi�z"Fatal read error on pipe transportz*Read error on pipe transport while closingTr;)rrG�resultr6rrSr�	_proactor�recvrZConnectionAbortedErrorrEr@r
rA�ConnectionResetErrorrCr?r�CancelledError�add_done_callbackrTrW)r�futrYrDr&r&r'rT�s>


z(_ProactorReadPipeTransport._loop_readingrLr/)r(rMrNrOr
rUrVrZr\rWrTrPr&r&r$r'rQ�srQcs^eZdZdZdZ�fdd�Zdd�Zddd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Z�Z
S)�_ProactorBaseWritePipeTransportzTransport for write pipes.Tcst�j||�d|_dSr/)rr
rF�rZargsZkwr$r&r'r
.sz(_ProactorBaseWritePipeTransport.__init__cCs�t|tttf�s$tdt|�j����|jr2td��|j	dk	rDtd��|sLdS|j
rz|j
tjkrht
�d�|j
d7_
dS|jdkr�|jt|�d�n.|js�t|�|_|��n|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)rY)r>ZbytesZ	bytearrayZ
memoryviewZ	TypeErrorZtyper(r�RuntimeErrorrFrrZ!LOG_THRESHOLD_FOR_CONNLOST_WRITESr
�warningr�
_loop_writingr�_maybe_pause_protocolZextendrXr&r&r'�write2s*




z%_ProactorBaseWritePipeTransport.writeNc
CsTy�|dk	r|jdkr|jrdSd|_d|_|r6|��|dkrJ|j}d|_|s�|jrd|j�|jd�|jrx|j	�
tj�|�
�nN|jj�|j	|�|_|j��s�t|�|_|j�|j�|��n|j�|j�|jdk	r�|jdkr�|j�d�Wn\tk
�r }z|�|�Wdd}~XYn0tk
�rN}z|�|d�Wdd}~XYnXdS)Nrz#Fatal write error on pipe transport)rrrr]rrrr5rrrIrJ�SHUT_WRZ_maybe_resume_protocolr^�sendrGr*rbrhrirFrHr`rCr?rE)r�frYrDr&r&r'rhXs8



z-_ProactorBaseWritePipeTransport._loop_writingcC�dS�NTr&r2r&r&r'�
can_write_eof�r.z-_ProactorBaseWritePipeTransport.can_write_eofcCs|��dSr/)r7r2r&r&r'�	write_eof�r.z)_ProactorBaseWritePipeTransport.write_eofcCs|�d�dSr/)rCr2r&r&r'�abort�r.z%_ProactorBaseWritePipeTransport.abortcCs:|jdk	rtd��|j��|_|jdkr4|j�d�|jS)NzEmpty waiter is already set)rFrfrZ
create_futurerrHr2r&r&r'�_make_empty_waiter�s

z2_ProactorBaseWritePipeTransport._make_empty_waitercCs
d|_dSr/)rFr2r&r&r'�_reset_empty_waiter�r.z3_ProactorBaseWritePipeTransport._reset_empty_waiter�NN)r(rMrNrOZ_start_tls_compatibler
rjrhrprqrrrsrtrPr&r&r$r'rd(s&
)rdcs$eZdZ�fdd�Zdd�Z�ZS)�_ProactorWritePipeTransportcs4t�j||�|jj�|jd�|_|j�|j�dS)Ni)	rr
rr^r_rrrb�_pipe_closedrer$r&r'r
�sz$_ProactorWritePipeTransport.__init__cCs@|��rdS|jrdSd|_|jdk	r4|�t��n|��dSr/)Z	cancelledrrrrCZBrokenPipeErrorr7)rrcr&r&r'rw�s
z(_ProactorWritePipeTransport._pipe_closed)r(rMrNr
rwrPr&r&r$r'rv�srvc@s eZdZdZdd�Zdd�ZdS)�_ProactorDuplexPipeTransportzTransport for duplex pipes.cCrn)NFr&r2r&r&r'rp�r.z*_ProactorDuplexPipeTransport.can_write_eofcCst�dSr/)ZNotImplementedErrorr2r&r&r'rq�r.z&_ProactorDuplexPipeTransport.write_eofN)r(rMrNrOrprqr&r&r&r'rx�srxcsBeZdZdZejjZd�fdd�	Zdd�Z	dd�Z
d	d
�Z�ZS)�_ProactorSocketTransportz Transport for connected sockets.Ncs$t��||||||�t�|�dSr/)rr
rZ_set_nodelayrr$r&r'r
�sz!_ProactorSocketTransport.__init__c	Cs�||jd<y|��|jd<Wn4tjtfk
rP|j��rLtjd|dd�YnXd|jkr�y|�	�|jd<Wn4tjtfk
r�|j��r�tjd|dd�YnXdS)NrJZsocknamezgetsockname() failed on %rTr;�peernamezgetpeername() failed on %r)
r,ZgetsocknamerJZerror�AttributeErrorrr@r
rgZgetpeernamer-r&r&r'r�s



z#_ProactorSocketTransport._set_extracCrnror&r2r&r&r'rp�r.z&_ProactorSocketTransport.can_write_eofcCs2|js|jrdSd|_|jdkr.|j�tj�dSro)rrrrrIrJrkr2r&r&r'rq�s

z"_ProactorSocketTransport.write_eofrL)
r(rMrNrOrZ
_SendfileModeZ
TRY_NATIVEZ_sendfile_compatibler
rrprqrPr&r&r$r'ry�srycs�eZdZ�fdd�Zd1dd�Zd2dddddd�dd	�Zd3d
d�Zd4dd
�Zd5dd�Z�fdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zd d!�Zd"d#�Zd6d$d%�Zd&d'�Zd7d)d*�Zd+d,�Zd-d.�Zd/d0�Z�ZS)8rcsHt���t�d|jj�||_||_d|_i|_	|�
|�|��dS)NzUsing proactor: %s)rr
r
rAr%r(r^�	_selector�_self_reading_future�_accept_futuresZset_loop�_make_self_pipe)rZproactorr$r&r'r
�s

zBaseProactorEventLoop.__init__NcCst||||||�Sr/)ry)rrr r!r"r#r&r&r'�_make_socket_transport�s
z,BaseProactorEventLoop._make_socket_transportF)�server_side�server_hostnamer"r#�ssl_handshake_timeoutc	Cs0tj|||||||	d�}
t|||
||d�|
jS)N)r��r"r#)rZSSLProtocolryZ_app_transport)rZrawsockr �
sslcontextr!r�r�r"r#r�Zssl_protocolr&r&r'�_make_ssl_transport�s
z)BaseProactorEventLoop._make_ssl_transportcC�t|||||�Sr/)rx�rrr r!r"r&r&r'�_make_duplex_pipe_transport�sz1BaseProactorEventLoop._make_duplex_pipe_transportcCr�r/)rQr�r&r&r'�_make_read_pipe_transport�z/BaseProactorEventLoop._make_read_pipe_transportcCr�r/)rvr�r&r&r'�_make_write_pipe_transportsz0BaseProactorEventLoop._make_write_pipe_transportcsP|��rtd��|��rdS|��|��|j��d|_d|_t���dS)Nz!Cannot close a running event loop)	Z
is_runningrf�	is_closed�_stop_accept_futures�_close_self_piper^r7r|rr2r$r&r'r7s
zBaseProactorEventLoop.closec��|j�||�IdHSr/)r^r_)rrZnr&r&r'�	sock_recv r.zBaseProactorEventLoop.sock_recvc�r�r/)r^Z	recv_into)rrZbufr&r&r'�sock_recv_into#r.z$BaseProactorEventLoop.sock_recv_intoc�r�r/)r^rl)rrrYr&r&r'�sock_sendall&r.z"BaseProactorEventLoop.sock_sendallc�r�r/)r^Zconnect)rrZaddressr&r&r'�sock_connect)r.z"BaseProactorEventLoop.sock_connectc�s|j�|�IdHSr/)r^�acceptr-r&r&r'�sock_accept,r.z!BaseProactorEventLoop.sock_acceptc
�s(y|��}Wn2ttjfk
r>}zt�d��Wdd}~XYnXyt�|�j}Wn,t	k
r|}zt�d��Wdd}~XYnX|r�|n|}|s�dSt
|d�}|r�t
|||�n|}	t
||�}d}
zLxFt
|	||�}|dkr�|
S|j�||||�IdH||7}|
|7}
q�WWd|
dk�r"|�
|�XdS)Nznot a regular filerl��)r)r{�ioZUnsupportedOperationrZSendfileNotAvailableError�osZfstatZst_sizer?Zminr^ZsendfileZseek)rr�file�offset�countr)ZerrZfsizeZ	blocksizeZend_posZ
total_sentr&r&r'�_sock_sendfile_native/s2


z+BaseProactorEventLoop._sock_sendfile_nativec�sV|��}|��|��IdHz|j|j|||dd�IdHS|��|rP|��XdS)NF)Zfallback)rUrVrsZ
sock_sendfilerrtrZ)rZtranspr�r�r�rZr&r&r'�_sendfile_nativeLsz&BaseProactorEventLoop._sendfile_nativecCsL|jdk	r|j��d|_|j��d|_|j��d|_|jd8_dS)Nr)r}r6�_ssockr7�_csock�
_internal_fdsr2r&r&r'r�Xs



z&BaseProactorEventLoop._close_self_pipecCsFt��\|_|_|j�d�|j�d�|jd7_|�|j�dS)NFr)rJZ
socketpairr�r�Zsetblockingr�r�_loop_self_readingr2r&r&r'rbs
z%BaseProactorEventLoop._make_self_pipec
Cs�y$|dk	r|��|j�|jd�}WnHtjk
r:dStk
rl}z|�d||d��Wdd}~XYnX||_|�	|j
�dS)Niz.Error on reading from the event loop self pipe)r<r=r)r]r^r_r�rrar[rBr}rbr�)rrmrDr&r&r'r�jsz(BaseProactorEventLoop._loop_self_readingcCs>y|j�d�Wn(tk
r8|jr4tjddd�YnXdS)Nsz3Fail to write a null byte into the self-pipe socketTr;)r�rlr?�_debugr
rAr2r&r&r'�_write_to_self|sz$BaseProactorEventLoop._write_to_self�dcs(d�������fdd�	�����dS)Nc
s$y�|dk	rn|��\}}�jr,t�d�||���}�dk	rX�j||�dd|i��d�n�j||d|i�d����rzdS�j���}Wn~t	k
r�}zB��
�dkrˆ�d|�d�����n�jr�tjd	�dd
�Wdd}~XYn8t
jk
�r���YnX|�j��
�<|���dS)Nz#%r got a new connection from %r: %rTrz)r�r"r#r�r�i����zAccept failed on a socket)r<r=rJzAccept failed on socket %rr;)r]r�r
rAr�r�r�r^r�r?r)rBr7rrar~rb)rmZconnZaddrr rD�r�protocol_factoryrr#rr�r�r&r'r�s@



z2BaseProactorEventLoop._start_serving.<locals>.loopr/)r)rr�rr�r#Zbacklogr�r&r�r'�_start_serving�s%z$BaseProactorEventLoop._start_servingcCsdSr/r&)rZ
event_listr&r&r'�_process_events�r�z%BaseProactorEventLoop._process_eventscCs*x|j��D]}|��qW|j��dSr/)r~Zvaluesr6Zclear)r�futurer&r&r'r��sz*BaseProactorEventLoop._stop_accept_futurescCs6|j�|��d�}|r|��|j�|�|��dSr/)r~Zpopr)r6r^�
_stop_servingr7)rrr�r&r&r'r��s
z#BaseProactorEventLoop._stop_servingrLr/rururur/)NNr�N)r(rMrNr
r�r�r�r�r�r7r�r�r�r�r�r�r�r�rr�r�r�r�r�r�rPr&r&r$r'r�s<

	






)r)rOZ__all__r�r�rJr8Zrrrrrrr	Zlogr
Z_FlowControlMixinZ
BaseTransportrZ
ReadTransportrQZWriteTransportrdrvZ	TransportrxryZ
BaseEventLooprr&r&r&r'Z<module>s:m
'