????

Your IP : 3.142.172.36


Current Path : /lib/python3.10/multiprocessing/__pycache__/
Upload File :
Current File : //lib/python3.10/multiprocessing/__pycache__/connection.cpython-310.pyc

o

�*�g�{�@s�gd�ZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddl
mZm
Z
ddlmZejZzddlZddlmZmZmZmZWneybejdkr^�dZYnwd	Zd
Ze��ZdZdgZeed�r|dZedg7Zejdkr�d
Zed
g7Zefdd�Z dd�Z!dd�Z"dd�Z#dd�Z$Gdd�d�Z%er�Gdd�de%�Z&Gdd�de%�Z'Gdd�de(�Z)dPd d!�Z*ejdkr�dQd#d$�Z+ndQd%d$�Z+Gd&d'�d'e(�Z,d(d)�Z-ejdkr�Gd*d+�d+e(�Z.d,d-�Z/d.Z0d/Z1d0Z2d1Z3d2d3�Z4d4d5�Z5Gd6d7�d7e(�Z6d8d9�Z7d:d;�Z8Gd<d=�d=e)�Z9d>d?�Z:ejdk�r3d@dA�Z;ej<ej=hZ>dRdBdC�Z?nddl@Z@ee@dD��rAe@jAZBne@jCZBdRdEdC�Z?ejdk�rmdFdG�ZDdHdI�ZEe�Fe'eD�dJdK�ZGdLdM�ZHe�Fe&eG�dSdNdG�ZDdOdI�ZEe�Fe'eD�dS)S)�Client�Listener�Pipe�wait�N�)�util)�AuthenticationError�BufferTooShort)�	reduction)�
WAIT_OBJECT_0�WAIT_ABANDONED_0�WAIT_TIMEOUT�INFINITE�win32i g4@�AF_INET�AF_UNIX�AF_PIPEcCst��|S�N��time�	monotonic)�timeout�r�1/usr/lib/python3.10/multiprocessing/connection.py�
_init_timeout;�rcCst��|kSrr)�trrr�_check_timeout>rrcCsT|dkrdS|dkrtjdt��d�S|dkr&tjdt��tt�fdd�Std	��)
z?
    Return an arbitrary free address for the given family
    r)�	localhostrrz	listener-)�prefix�dirrz\\.\pipe\pyc-%d-%d-�zunrecognized family)	�tempfile�mktempr�get_temp_dir�os�getpid�next�
_mmap_counter�
ValueError��familyrrr�arbitrary_addressEs��r,cCsRtjdkr|dkrtd|��tjdkr#|dkr%tt|�s'td|��dSdSdS)zD
    Checks if the family is valid for the current environment.
    rrzFamily %s is not recognized.rN)�sys�platformr)�hasattr�socketr*rrr�_validate_familySs
�r1cCsPt|�tkrdSt|�tur|�d�rdSt|�tus t�|�r"dStd|��)z]
    Return the types of the address

    This can be 'AF_INET', 'AF_UNIX', or 'AF_PIPE'
    rz\\rrzaddress type of %r unrecognized)�type�tuple�str�
startswithr�is_abstract_socket_namespacer))�addressrrr�address_type_sr8c@s�eZdZdZd+dd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	e
dd��Ze
dd��Ze
dd��Z
dd�Zdd�Zd,dd�Zdd�Zd-dd�Zd.d d!�Zd"d#�Zd/d%d&�Zd'd(�Zd)d*�ZdS)0�_ConnectionBaseNTcCs>|��}|dkrtd��|s|std��||_||_||_dS)Nrzinvalid handlez6at least one of `readable` and `writable` must be True)�	__index__r)�_handle�	_readable�	_writable)�self�handle�readable�writablerrr�__init__us�
z_ConnectionBase.__init__cCs|jdur|��dSdSr�r;�_close�r>rrr�__del__�s
�z_ConnectionBase.__del__cCs|jdur	td��dS)Nzhandle is closed)r;�OSErrorrErrr�
_check_closed�s
�z_ConnectionBase._check_closedcC�|jstd��dS)Nzconnection is write-only)r<rGrErrr�_check_readable���z_ConnectionBase._check_readablecCrI)Nzconnection is read-only)r=rGrErrr�_check_writable�rKz_ConnectionBase._check_writablecCs$|jr
d|_td��|��td��)NFzbad message length)r=r<�closerGrErrr�_bad_message_length�s
�z#_ConnectionBase._bad_message_lengthcCs
|jduS)z True if the connection is closedN�r;rErrr�closed�s
z_ConnectionBase.closedcC�|jS)z"True if the connection is readable)r<rErrrr@��z_ConnectionBase.readablecCrQ)z"True if the connection is writable)r=rErrrrA�rRz_ConnectionBase.writablecCs|��|jS)z+File descriptor or handle of the connection)rHr;rErrr�fileno�sz_ConnectionBase.filenocCs,|jdurz
|��Wd|_dSd|_wdS)zClose the connectionNrCrErrrrM�s


�z_ConnectionBase.closercCs�|��|��t|�}|jdkrtt|��}t|�}|dkr#td��||kr+td��|dur4||}n|dkr<td��|||krFtd��|�||||��dS)z,Send the bytes data from a bytes-like objectrrzoffset is negativezbuffer length < offsetNzsize is negativezbuffer length < offset + size)rHrL�
memoryview�itemsize�bytes�lenr)�_send_bytes)r>�buf�offset�size�m�nrrr�
send_bytes�s"

z_ConnectionBase.send_bytescCs$|��|��|�t�|��dS)zSend a (picklable) objectN)rHrLrX�_ForkingPickler�dumps�r>�objrrr�send�sz_ConnectionBase.sendcCsJ|��|��|dur|dkrtd��|�|�}|dur!|��|��S)z7
        Receive bytes data as a bytes object.
        Nrznegative maxlength)rHrJr)�_recv_bytesrN�getvalue)r>�	maxlengthrYrrr�
recv_bytes�s
z_ConnectionBase.recv_bytescCs�|��|��t|��K}|j}|t|�}|dkrtd��||kr&td��|��}|��}|||kr:t|�	���|�
d�|�||||||��|Wd�S1sZwYdS)zq
        Receive bytes data into a writeable bytes-like object.
        Return the number of bytes read.
        rznegative offsetzoffset too largeN)rHrJrTrUrWr)rd�tellr	re�seek�readinto)r>rYrZr\rU�bytesize�resultr[rrr�recv_bytes_into�s&


�$�z_ConnectionBase.recv_bytes_intocCs&|��|��|��}t�|���S)zReceive a (picklable) object)rHrJrdr_�loads�	getbuffer)r>rYrrr�recv�sz_ConnectionBase.recv�cCs|��|��|�|�S)z/Whether there is any input available to be read)rHrJ�_poll�r>rrrr�poll�s
z_ConnectionBase.pollcC�|SrrrErrr�	__enter__�z_ConnectionBase.__enter__cC�|��dSr�rM�r>�exc_type�	exc_value�exc_tbrrr�__exit__rz_ConnectionBase.__exit__)TT)rNr)r)rq)�__name__�
__module__�__qualname__r;rBrFrHrJrLrN�propertyrPr@rArSrMr^rcrgrmrprtrvr~rrrrr9rs0









r9c@sDeZdZdZdZejfdd�Zdd�Zddd	�Z	d
d�Z
dd
�ZdS)�PipeConnectionz�
        Connection class based on a Windows named pipe.
        Overlapped I/O is used, so the handles must have been created
        with FILE_FLAG_OVERLAPPED.
        FcC�||j�dSrrO)r>�_CloseHandlerrrrD�zPipeConnection._closec	Cs�tj|j|dd�\}}z(z|tjkr!t�|jgdt�}|tks!J�Wn|���W|�	d�\}}n|�	d�\}}w|dksBJ�|t
|�ksJJ�dS)NT��
overlappedFr)�_winapi�	WriteFiler;�ERROR_IO_PENDING�WaitForMultipleObjects�eventrr�cancel�GetOverlappedResultrW)r>rY�ov�err�waitres�nwrittenrrrrXs

��� zPipeConnection._send_bytesNc	
Csh|jr
d|_t��S|durdnt|d�}z�tj|j|dd�\}}zFz|tjkr7t�|j	gdt
�}|tks7J�Wn|���W|�
d�\}}|dkr[t��}|�|���|WS|tjkrg|�||�WSn2|�
d�\}}|dkr�t��}|�|���|YWS|tjkr�|�||�YWSwWtd��ty�}z	|jtjkr�t��d}~ww)NF�Tr�rz.shouldn't get here; expected KeyboardInterrupt)�_got_empty_message�io�BytesIO�minr��ReadFiler;r�r�r�rrr�r��writero�ERROR_MORE_DATA�_get_more_datarG�winerror�ERROR_BROKEN_PIPE�EOFError�RuntimeError)	r>�maxsize�bsizer�r�r��nread�f�errrrd&sT

�

���
��
����zPipeConnection._recv_bytescCs.|js
t�|j�ddkrdStt|g|��S)NrT)r�r��
PeekNamedPiper;�boolrrsrrrrrFszPipeConnection._pollcCs�|��}t��}|�|�t�|j�d}|dksJ�|dur+t|�||kr+|��tj	|j|dd�\}}|�
d�\}}|dksCJ�||ksIJ�|�|���|S)NrrTr�)ror�r�r�r�r�r;rWrNr�r�)r>r�r�rYr��leftr��rbytesrrrr�Ls
zPipeConnection._get_more_datar)rr�r��__doc__r�r��CloseHandlerDrXrdrrr�rrrrr�s
 r�c@s|eZdZdZerejfdd�ZejZ	ej
Zn
ej
fdd�ZejZ	ejZe	fdd�Zefdd�Zd	d
�Zddd
�Zdd�ZdS)�
Connectionzo
    Connection class based on an arbitrary file descriptor (Unix only), or
    a socket handle (Windows).
    cCr�rrO�r>rDrrrrDcr�zConnection._closecCr�rrOr�rrrrDhr�cCs8t|�}	||j|�}||8}|dkrdS||d�}q)NTr)rWr;)r>rYr��	remainingr]rrr�_sendms�zConnection._sendcCsft��}|j}|}|dkr1|||�}t|�}|dkr$||kr t�td��|�|�||8}|dks
|S)Nrzgot end of file during message)r�r�r;rWr�rGr�)r>r[�readrYr?r��chunkr]rrr�_recvvs

�
zConnection._recvcCs�t|�}|dkr%t�dd�}t�d|�}|�|�|�|�|�|�dSt�d|�}|dkr;|�|�|�|�dS|�||�dS)Ni����!i����!Qi@)rW�struct�packr�)r>rYr]�
pre_header�headerrrrrX�s


zConnection._send_bytesNcCs^|�d�}t�d|���\}|dkr |�d�}t�d|���\}|dur*||kr*dS|�|�S)N�r�r��r�)r�r��unpackre)r>r�rYr[rrrrd�s


zConnection._recv_bytescCst|g|�}t|�Sr)rr�)r>r�rrrrrr�szConnection._pollr)rr�r�r�r��_multiprocessing�closesocketrDrc�_writerp�_readr%rMr�r�r�r�rXrdrrrrrrr�\s	

r�c@sReZdZdZddd�Zdd�Zdd	�Zed
d��Zedd
��Z	dd�Z
dd�ZdS)rz�
    Returns a listener object.

    This is a wrapper for a bound socket which is 'listening' for
    connections, or for a Windows named pipe.
    NrcCsp|p	|rt|�p	t}|pt|�}t|�|dkrt||�|_nt|||�|_|dur3t|t�s3t	d��||_
dS)Nr�authkey should be a byte string)r8�default_familyr,r1�PipeListener�	_listener�SocketListener�
isinstancerV�	TypeError�_authkey)r>r7r+�backlog�authkeyrrrrB�s�
zListener.__init__cCs>|jdur	td��|j��}|jrt||j�t||j�|S)zz
        Accept a connection on the bound socket or named pipe of `self`.

        Returns a `Connection` object.
        Nzlistener is closed)r�rG�acceptr��deliver_challenge�answer_challenge)r>�crrrr��s

zListener.acceptcCs$|j}|durd|_|��dSdS)zA
        Close the bound socket or named pipe of `self`.
        N)r�rM)r>�listenerrrrrM�s
�zListener.closecC�|jjSr)r��_addressrErrrr7��zListener.addresscCr�r)r��_last_acceptedrErrr�
last_accepted�r�zListener.last_acceptedcCrurrrErrrrv�rwzListener.__enter__cCrxrryrzrrrr~�rzListener.__exit__)NNrN)rr�r�r�rBr�rMr�r7r�rvr~rrrrr�s
	

rcCsh|pt|�}t|�|dkrt|�}nt|�}|dur$t|t�s$td��|dur2t||�t||�|S)z=
    Returns a connection to the address of a `Listener`
    rNr�)	r8r1�
PipeClient�SocketClientr�rVr�r�r�)r7r+r�r�rrrr�s


rTcCsp|r"t��\}}|�d�|�d�t|���}t|���}||fSt��\}}t|dd�}t|dd�}||fS)�L
        Returns pair of connection objects at either end of a pipe
        TF�rA�r@)r0�
socketpair�setblockingr��detachr%�pipe)�duplex�s1�s2�c1�c2�fd1�fd2rrrrs

�rc

Cs�td�}|rtj}tjtjB}tt}}ntj}tj}dt}}t�||tjBtj	Btj
tjBtjBd||tj
tj�}t�||dtjtjtjtj�}t�|tjdd�tj|dd�}|�d�\}	}
|
dksgJ�t||d�}t||d�}||fS)	r�rrrNTr�r�r�)r,r��PIPE_ACCESS_DUPLEX�GENERIC_READ�
GENERIC_WRITE�BUFSIZE�PIPE_ACCESS_INBOUND�CreateNamedPipe�FILE_FLAG_OVERLAPPED�FILE_FLAG_FIRST_PIPE_INSTANCE�PIPE_TYPE_MESSAGE�PIPE_READMODE_MESSAGE�	PIPE_WAIT�NMPWAIT_WAIT_FOREVER�NULL�
CreateFile�
OPEN_EXISTING�SetNamedPipeHandleState�ConnectNamedPiper�r�)
r�r7�openmode�access�obsize�ibsize�h1�h2r��_r�r�r�rrrrs>

�
�
�	�
�c@s*eZdZdZd
dd�Zdd�Zdd�Zd	S)r�zO
    Representation of a socket which is bound to an address and listening
    rcCs�t�tt|��|_z)tjdkr|j�tjtjd�|j�d�|j�	|�|j�
|�|j��|_Wn
t
y?|j���w||_d|_|dkr]t�|�s]tj|tj|fdd�|_dSd|_dS)N�posixrTrr��args�exitpriority)r0�getattr�_socketr%�name�
setsockopt�
SOL_SOCKET�SO_REUSEADDRr��bind�listen�getsocknamer�rGrM�_familyr�rr6�Finalize�unlink�_unlink)r>r7r+r�rrrrBGs*

�
��
zSocketListener.__init__cCs&|j��\}|_|�d�t|���S)NT)rr�r�r�r�r��r>�srrrr�`s
zSocketListener.acceptcCsNz|j��W|j}|durd|_|�dSdS|j}|dur&d|_|�wwr)rrMr)r>r
rrrrMes
���zSocketListener.closeN)r)rr�r�r�rBr�rMrrrrr�Cs

r�cCs\t|�}t�tt|���}|�d�|�|�t|���Wd�S1s'wYdS)zO
    Return a connection object connected to the socket given by `address`
    TN)r8r0rr��connectr�r�)r7r+rrrrr�os


$�r�c@s8eZdZdZddd�Zd
dd�Zdd	�Zed
d��ZdS)r�z0
        Representation of a named pipe
        NcCsL||_|jdd�g|_d|_t�d|j�tj|tj|j|jfdd�|_	dS)NT)�firstz listener created with address=%rrr�)
r��_new_handle�
_handle_queuer�r�	sub_debugrr��_finalize_pipe_listenerrM)r>r7r�rrrrB�s�zPipeListener.__init__Fc
CsHtjtjB}|r
|tjO}t�|j|tjtjBtjBtj	t
t
tjtj�Sr)
r�r�r�r�r�r�r�r�r��PIPE_UNLIMITED_INSTANCESr�r�r�)r>r�flagsrrrr�s

��zPipeListener._new_handlec
Cs�|j�|���|j�d�}z	tj|dd�}Wnty3}z|jtjkr&�WYd}~t|�Sd}~wwz+zt�	|j
gdt�}Wn
|��t�
|��W|�d�\}}|dks\J�t|�S|�d�\}}|dksmJ�w)NrTr�F)r�appendr�popr�r�rGr��
ERROR_NO_DATAr�r�rr�r�r�r�)r>r?r�r��resr�r�rrrr��s2
���
�
��zPipeListener.acceptcCs$t�d|�|D]}t�|�qdS)Nz closing listener with address=%r)rrr�r�)�queuer7r?rrrr�s�z$PipeListener._finalize_pipe_listenerr)F)	rr�r�r�rBrr��staticmethodrrrrrr�s

r�c
Cs�t�}	zt�|d�t�|tjtjBdtjtjtjtj�}Wn t	y?}z|j
tjtjfvs4t
|�r5�WYd}~nd}~wwnqt�|tjdd�t|�S)zU
        Return a connection object connected to the pipe given by `address`
        r��rN)rr��
WaitNamedPiper�r�r�r�r�r�rGr��ERROR_SEM_TIMEOUT�ERROR_PIPE_BUSYrr�r�r�)r7r�hr�rrrr��s2
�������
�r��s#CHALLENGE#s	#WELCOME#s	#FAILURE#cCs�ddl}t|t�std�t|����t�t�}|�	t
|�|�||d���}|�
d�}||kr7|�	t�dS|�	t�td��)Nr� Authkey must be bytes, not {0!s}�md5�zdigest received was wrong)�hmacr�rVr)�formatr2r%�urandom�MESSAGE_LENGTHr^�	CHALLENGE�new�digestrg�WELCOME�FAILUREr��
connectionr�r(�messager.�responserrrr��s
�


r�cCs�ddl}t|t�std�t|����|�d�}|dtt��tks'Jd|��|tt�d�}|�	||d��
�}|�|�|�d�}|tkrJt
d��dS)Nrr%r'zmessage = %rr&zdigest sent was rejected)r(r�rVr)r)r2rgrWr,r-r.r^r/rr1rrrr��s
�
 

�r�c@s$eZdZdd�Zdd�Zdd�ZdS)�ConnectionWrappercCs6||_||_||_dD]
}t||�}t|||�qdS)N)rSrMrtrgr^)�_conn�_dumps�_loadsr�setattr)r>�connr`rn�attrrbrrrrB�s
�zConnectionWrapper.__init__cCs|�|�}|j�|�dSr)r7r6r^)r>rbrrrrrcs
zConnectionWrapper.sendcCs|j��}|�|�Sr)r6rgr8rrrrrps

zConnectionWrapper.recvN)rr�r�rBrcrprrrrr5�sr5cCst�|fdddd��d�S)Nr�utf-8)�	xmlrpclibr`�encode)rbrrr�
_xml_dumpssr?cCst�|�d��\\}}|S)Nr<)r=rn�decode)rrb�methodrrr�
_xml_loadssrBc@seZdZdd�ZdS)�XmlListenercCs"ddlmat�|�}t|tt�S�Nr)�
xmlrpc.client�clientr=rr�r5r?rBrarrrr�s
zXmlListener.acceptN)rr�r�r�rrrrrCsrCcOs"ddlmatt|i|��tt�SrD)rErFr=r5rr?rB)r�kwdsrrr�	XmlClientsrHcCs�t|�}g}|rZt�|d|�}|tkr	|St|kr$tt|�kr+nn|t8}nt|kr9tt|�krCntd��|t8}ntd��|�||�||dd�}d}|s|S)NFzShould not get hererr)	�listr�r�r
rrWrr�r)�handlesr�L�readyrrrr�_exhaustive_wait%s$
 �

��
rMc
s�|durt}n|dkrd}nt|dd�}t|�}i�g}t��t�}z�|D]�}zt|d�}Wnty?|�|��<Yq'wzt�|�dd�\}}Wnt	yi}zd|j
}}|tvr_�WYd}~nd}~ww|tjkrz|�
|�|�|j<q'|r�t��dd�dkr�z	|�d	�\}	}Wnt	y�}z	|j
}WYd}~nd}~ww|s�t|d
�r�d|_��|�d}q't���|�}W|D]}|��q�|D]D}z	|�d�\}	}Wnt	y�}z|j
}|tvr�WYd}~nd}~ww|tjk�r�|j}��|�|dk�rt|d
��rd|_q�nU|D]}|���q|D]G}z	|�d�\}	}Wnt	�yC}z|j
}|tv�r9�WYd}~nd}~ww|tjk�rb�|j}��|�|dk�rbt|d
��rbd|_�qw���fdd�|D���fd
d�|D�S)��
        Wait till an object in object_list is ready/readable.

        Returns list of those objects in object_list which are ready/readable.
        Nrrg�?rST�)�rOFr�c3s�|]}�|VqdSrr)�.0r#)�waithandle_to_objrr�	<genexpr>�s�zwait.<locals>.<genexpr>csg|]}|�vr|�qSrr)rQ�o)�
ready_objectsrr�
<listcomp>�s�wait.<locals>.<listcomp>)r�intrI�setr�AttributeErrorr:r�r�rGr��
_ready_errorsr�rr�r-�getwindowsversionr�r/r��addrM�keysr��ERROR_OPERATION_ABORTED�update)
�object_listr�ov_list�
ready_handlesrTrSr�r�r�r�r)rUrRrr;s�����

��

���


���
���


��r�PollSelectorcCs�t��E}|D]	}|�|tj�q|durt��|}	|�|�}|r0dd�|D�Wd�S|durG|t��}|dkrG|Wd�Sq1sKwYdS)rNNTcSsg|]\}}|j�qSr)�fileobj)rQ�key�eventsrrrrV�srWr)�
_WaitSelector�register�	selectors�
EVENT_READrr�select)rar�selectorrb�deadlinerLrrrr�s"
���cCsf|��}t�|tjtj��}ddlm}|�|�}t||j	|j
ffWd�S1s,wYdS)Nr)�resource_sharer)rSr0�fromfdr�SOCK_STREAMr!ro�	DupSocket�rebuild_connectionr@rA)r:r?rro�dsrrr�reduce_connection�s
$�rucCs|��}t|��||�Sr�r�r�)rtr@rA�sockrrrrs�srscCsB|jrtjnd|jr
tjndB}t�|��|�}t||j|jffSrD)	r@r��FILE_GENERIC_READrA�FILE_GENERIC_WRITEr
�	DupHandlerS�rebuild_pipe_connection)r:r��dhrrr�reduce_pipe_connection�s
�r}cC�|��}t|||�Sr)r�r�)r|r@rAr?rrrr{��r{cCs t�|���}t||j|jffSr)r
�DupFdrSrsr@rA)r:�dfrrrru�scCr~rrv)r�r@rA�fdrrrrs�r)NN)Tr)I�__all__r�r%r-r0r�rr"�	itertoolsr�r!rrr	�contextr
�ForkingPicklerr_r�rrr
r�ImportErrorr.r��CONNECTION_TIMEOUT�countr(r��familiesr/rrr,r1r8r9r�r��objectrrrr�r�r�r�r+r,r/r0r�r�r5r?rBrCrHrMr��ERROR_NETNAME_DELETEDr[rrjrdrh�SelectSelectorrursrir}r{rrrr�<module>s�	
�	



PT
=

,,
8	P


Page not found | The NCLEX Doctor

Page not found!

Sorry, this page is not available...