Edit File: reduction.cpython-36.pyc
3 � \ $������������������@���s��d�dl�mZmZ�d�dlZd�dlZd�dlZd�dlZd�dlZd�dlZd�dl Z ddl mZ�ddddd gZe j d kp�eed�o�eed�o�eejd �ZG�dd��dej�ZejZd5dd �Ze j d k�redddg7�Zd�dlZd6dd�Zdd��Zdd��Zdd��ZG�dd��de�ZnHedddg7�Zd�dlZe j dkZdd��Zdd��Zdd��Zd d��Zd!d��Zd"d#��Z G�d$d%��d%�Z!ee"e!��j#�e ��d&d'��Z$ee"e%j&�e$��ee"e'j(�e$��d(d)��Z)d*d+��Z*eej+e)��e j d k�r�d,d-��Z,d.d/��Z-eeje,��nd0d-��Z,d1d/��Z-eeje,��G�d2d3��d3ed4�Z.dS�)7�����)�ABCMeta�abstractmethodN����)�context�send_handle�recv_handle�ForkingPickler�register�dump�win32ZCMSG_LEN� SCM_RIGHTS�sendmsgc�������������������sJ���e�Zd�ZdZi�ZejZ��fdd�Ze dd���Z e d dd��Zej Z ���ZS�) r���z)Pickler subclass used by multiprocessing.c����������������s*���t���j|���|�jj��|�_|�jj|�j��d�S�)N)�super�__init__�_copyreg_dispatch_table�copy�dispatch_table�update�_extra_reducers)�self�args)� __class__���1/usr/lib64/python3.6/multiprocessing/reduction.pyr���&���s����zForkingPickler.__init__c�������������C���s���||�j�|<�dS�)z&Register a reduce function for a type.N)r���)�cls�type�reducer���r���r���r ���+���s����zForkingPickler.registerNc�������������C���s ���t�j��}|�||�j|��|j��S�)N)�io�BytesIOr ���� getbuffer)r����obj�protocolZbufr���r���r����dumps0���s����zForkingPickler.dumps)N)�__name__� __module__�__qualname__�__doc__r����copyregr���r���r����classmethodr ���r"����pickle�loads� __classcell__r���r���)r���r���r���!���s���c�������������C���s���t�||�j|���dS�)z3Replacement for pickle.dump() using ForkingPickler.N)r���r ���)r ����filer!���r���r���r���r ���:���s����� DupHandle� duplicate�steal_handleFc�������������C���s*���|dkrt�j��}t�jt�j��|�|d|t�j�S�)z<Duplicate a handle. (target_process is a handle not a pid!)Nr���)�_winapi�GetCurrentProcess�DuplicateHandle�DUPLICATE_SAME_ACCESS)�handleZtarget_processZinheritabler���r���r���r.���G���s ���� c�������������C���sB���t�jt�jd|��}z t�j||t�j��ddt�jt�jB��S�t�j|��X�dS�)z5Steal a handle from process identified by source_pid.Fr���N)r0����OpenProcess�PROCESS_DUP_HANDLEr2���r1���r3����DUPLICATE_CLOSE_SOURCE�CloseHandle)Z source_pidr4���Zsource_process_handler���r���r���r/���O���s���� c�������������C���s���t�|tj|�}|�j|��dS�)z&Send a handle over a local connection.N)r-���r0���r3����send)�connr4����destination_pidZdhr���r���r���r���[���s����c�������������C���s���|�j���j��S�)z)Receive a handle over a local connection.)�recv�detach)r:���r���r���r���r���`���s����c���������������@���s"���e�Zd�ZdZddd�Zdd��ZdS�)r-���zPicklable wrapper for a handle.Nc���������� ���C���s\���|d�krt�j��}tjtjd|�}ztjtj��|||dd�|�_W�d�tj|��X�||�_ ||�_ d�S�)NFr���)�os�getpidr0���r5���r6���r2���r1����_handler8����_access�_pid)r���r4����access�pid�procr���r���r���r���f���s����zDupHandle.__init__c���������� ���C���sV���|�j�tj��kr|�jS�tjtjd|�j��}ztj||�jtj��|�j dtj �S�tj|��X�dS�)z1Get the handle. This should only be called once.FN)rB���r>���r?���r@���r0���r5���r6���r2���r1���rA���r7���r8���)r���rE���r���r���r���r=���u���s���� zDupHandle.detach)N)r#���r$���r%���r&���r���r=���r���r���r���r���r-���d���s��� �DupFd�sendfds�recvfds�darwinc�������������C���sV���t�j�d|�}tt|�d�g�}|�j|gtjtj|fg��trR|�jd�dkrRt 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����ACKNOWLEDGEr<����RuntimeError)�sockZfds�msgr���r���r���rG�������s ����c�������������C���s����t�j�d�}|j|�}|�jdtj|��\}}}}|�r>|�r>t�y�trN|�jd��t|�dkrjt dt|����|d�\}} } |tj kr�| tjkr�t| �|j�dkr�t�|j | ��t|�d�|d�ks�t�t|�S�W�n�ttfk r����Y�nX�t d��dS�) z/Receive an array of fds over an AF_UNIX socket.rJ���r���rL���zreceived %d items of ancdatar���rK���zInvalid data receivedN)rM����itemsizeZrecvmsgrP���Z CMSG_SPACE�EOFErrorrR���r9���rO���rS���rQ���r���� ValueErrorZ frombytes�AssertionError�list� IndexError)rT����size�aZ bytes_sizerU���Zancdata�flagsZaddrZ cmsg_levelZ cmsg_typeZ cmsg_datar���r���r���rH�������s,���� c���������� ���C���s2���t�j|�j��t�jt�j��}t||g��W�dQ�R�X�dS�)z&Send a handle over a local connection.N)rP����fromfd�fileno�AF_UNIX�SOCK_STREAMrG���)r:���r4���r;����sr���r���r���r�������s����c���������� ���C���s0���t�j|�j��t�jt�j��}t|d�d�S�Q�R�X�dS�)z)Receive a handle over a local connection.r���r���N)rP���r_���r`���ra���rb���rH���)r:���rc���r���r���r���r�������s����c�������������C���sF���t�j��}|dk r |j|j|���S�tr:ddlm}�|j|��S�td��dS�)zReturn a wrapper for an fd.Nr���)�resource_sharerz&SCM_RIGHTS appears not to be available)r���Zget_spawning_popenrF���Zduplicate_for_child�HAVE_SEND_HANDLE��rd���rX���)�fdZ popen_objrd���r���r���r���rF�������s���� c�������������C���s2���|�j�d�krt|�j|�jjffS�t|�j�|�jjffS�d�S�)N)�__self__�getattrr����__func__r#���)�mr���r���r����_reduce_method����s���� rl���c���������������@���s���e�Zd�Zdd��ZdS�)�_Cc�������������C���s���d�S�)Nr���)r���r���r���r����f����s����z_C.fN)r#���r$���r%���rn���r���r���r���r���rm�������s���rm���c�������������C���s���t�|�j|�jffS�)N)ri����__objclass__r#���)rk���r���r���r����_reduce_method_descriptor����s����rp���c�������������C���s���t�|�j|�j|�jpi�ffS�)N)�_rebuild_partial�funcr����keywords)�pr���r���r����_reduce_partial����s����ru���c�������������C���s���t�j|�f|�|�S�)N)� functools�partial)rr���r���rs���r���r���r���rq�������s����rq���c�������������C���s���ddl�m}�t||��ffS�)Nr���)� DupSocket)rd���rx����_rebuild_socket)rc���rx���r���r���r����_reduce_socket����s����rz���c�������������C���s���|�j���S�)N)r=���)Zdsr���r���r���ry�������s����ry���c�������������C���s"���t�|�j���}t||�j|�j|�jffS�)N)rF���r`���ry����familyr����proto)rc����dfr���r���r���rz�������s����c�������������C���s���|�j���}tj||||d�S�)N)r`���)r=���rP���)r}���r{���r���r|���rg���r���r���r���ry�������s����c���������������@���sd���e�Zd�ZdZeZeZeZeZeZe j dkr8eZeZe Z neZeZeZeZeZeZeZeZdd��ZdS�)�AbstractReducerz�Abstract base class for use in implementing a Reduction class suitable for use in replacing the standard reduction mechanism used in multiprocessing.r���c�������������G���sN���t�tt��j�t��t�ttj�t��t�ttj �t��t�t jt��t�t j t��d�S�)N)r ���r���rm���rn���rl���rZ����appendrp����int�__add__rv���rw���ru���rP���rz���)r���r���r���r���r���r��� ��s ����zAbstractReducer.__init__N)r#���r$���r%���r&���r���r ���r ���r���r����sys�platformr/���r.���r-���rG���rH���rF���rl���rp���rq���rz���ry���r���r���r���r���r���r~�������s&��� r~���)� metaclass)N)NF)/�abcr���r���r'���rv���r���r>���r)���rP���r����rf���r����__all__r�����hasattrre���ZPicklerr���r ���r ���r0���r.���r/���r���r����objectr-���rM���rR���rG���rH���rF���rl���rm���r���rn���rp���rZ���r���r����r����ru���rq���rw���rz���ry���r~���r���r���r���r����<module> ���sb��� #