Edit File: reduction.cpython-36.opt-1.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�yxtrN|�jd��t|�dkrjt dt|����|d�\}} } |tj kr�| tjkr�t| �|j�dkr�t�|j | ��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���zInvalid data receivedN)rM����itemsizeZrecvmsgrP���Z CMSG_SPACE�EOFErrorrR���r9���rO���rS���rQ���r���� ValueErrorZ frombytes�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_���r`���ra���rH���)r:���rb���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��rc���rX���)�fdZ popen_objrc���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���� rk���c���������������@���s���e�Zd�Zdd��ZdS�)�_Cc�������������C���s���d�S�)Nr���)r���r���r���r����f����s����z_C.fN)r#���r$���r%���rm���r���r���r���r���rl�������s���rl���c�������������C���s���t�|�j|�jffS�)N)rh����__objclass__r#���)rj���r���r���r����_reduce_method_descriptor����s����ro���c�������������C���s���t�|�j|�j|�jpi�ffS�)N)�_rebuild_partial�funcr����keywords)�pr���r���r����_reduce_partial����s����rt���c�������������C���s���t�j|�f|�|�S�)N)� functools�partial)rq���r���rr���r���r���r���rp�������s����rp���c�������������C���s���ddl�m}�t||��ffS�)Nr���)� DupSocket)rc���rw����_rebuild_socket)rb���rw���r���r���r����_reduce_socket����s����ry���c�������������C���s���|�j���S�)N)r=���)Zdsr���r���r���rx�������s����rx���c�������������C���s"���t�|�j���}t||�j|�j|�jffS�)N)rF���r_���rx����familyr����proto)rb����dfr���r���r���ry�������s����c�������������C���s���|�j���}tj||||d�S�)N)r_���)r=���rP���)r|���rz���r���r{���rf���r���r���r���rx�������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���rl���rm���rk���rY����appendro����int�__add__ru���rv���rt���rP���ry���)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���rk���ro���rp���ry���rx���r���r���r���r���r���r}�������s&��� r}���)� metaclass)N)NF)/�abcr���r���r'���ru���r���r>���r)���rP���r����re���r����__all__r�����hasattrrd���ZPicklerr���r ���r ���r0���r.���r/���r���r����objectr-���rM���rR���rG���rH���rF���rk���rl���r���rm���ro���rY���r~���r���r����rt���rp���rv���ry���rx���r}���r���r���r���r����<module> ���sb��� #