B
    F.\                 @   s   d dl mZmZmZ d dlZddlmZmZ ddl	m
Z
mZ ddlmZ ddlmZ dd	lmZ d
d Ze
ejdd Zeejdd Ze
ejjjdd Zeejjjdd Ze
ejjjdd Zeejjjdd ZdS )    )print_functiondivisionabsolute_importN   )frame_split_sizemerge_frames)dask_serializedask_deserialize)pickle   )gcd)
log_errorsc             C   s   | j j}|dkrd}|S )zc Itemsize of dtype

    Try to return the itemsize of the base element, return 8 as a fallback
          )baseitemsize)dtresult r   9lib/python3.7/site-packages/distributed/protocol/numpy.pyr      s    r   c          	   C   s  | j jr$ddi}t| g}||fS | j jdkry$dtj| j f}t|d  W q tk
r   | j jtj	k	s~| j j
dkr nd| j jf}Y qX nd| j jf}| js| j}|  }n<| jjs| jjr| j}| jdd}nt| } | j}|  }|j js|j jdkr$|d	t| j jd }y
|j}W n0 tk
r^   |d	t| j jd j}Y nX || j|d
}| jdkrt|g}n|g}| jg|d< ||fS )Nr
   TVr   r   K)orderr   zu%d)dtypeshapestridesg     j@Zlengths)r   Z	hasobjectr
   dumpsZkindloads	ExceptiontypenpZvoidZ	alignmentZdescrstrr   r   Zravelflagsc_contiguousf_contiguousZascontiguousarrayZfieldsr   Zviewr   data
ValueErrornbytesr   )xheaderframesr   r   r%   r   r   r   serialize_numpy_ndarray   sH    


 r+   c          	   C   s   t  x t|dkrt| |}| dr6t|d S | d \}}|rRt|}n
t|}tj| d ||d | d d}|S Q R X d S )Nr   r
   r   r   r   r   )r   bufferr   )	r   lenr   getr
   r   r    r   ndarray)r)   r*   Z	is_customr   r(   r   r   r   deserialize_numpy_ndarrayU   s    


r0   c             C   s   i g fS )Nr   )r(   r   r   r   serialize_numpy_ma_maskedj   s    r1   c             C   s   t jjS )N)r    maZmasked)r)   r*   r   r   r   deserialize_numpy_ma_maskedo   s    r3   c             C   s   t | j\}}|t|d}| jtjjk	rHt | j\}}||d< ||7 }t| jtj	tj
tjfrpd| j f}ndt| jf}||d< ||fS )N)zdata-headernframeszmask-headerFTz
fill-value)r+   r%   r-   maskr    r2   nomask
isinstance
fill_valueZintegerZfloatingZbool_itemr
   r   )r(   data_headerr*   r)   mask_headermask_framesZserialized_fill_valuer   r   r   serialize_numpy_maskedarrayt   s    r=   c       
      C   s   | d }|d | d  }t ||}d| krN| d }|| d d  }t ||}ntjj}| d \}}	|rpt|	}	tjj|||	dS )Nzdata-headerr4   zmask-headerz
fill-value)r5   r8   )r0   r    r2   r6   r
   r   Zmasked_array)
r)   r*   r:   Zdata_framesr%   r;   r<   r5   Z
pickled_fvr8   r   r   r   deserialize_numpy_maskedarray   s    

r>   )Z
__future__r   r   r   Znumpyr    Zutilsr   r   Z	serializer   r	    r
   Zcompatibilityr   r   r   registerr/   r+   r0   r2   ZcoreZMaskedConstantr1   r3   ZMaskedArrayr=   r>   r   r   r   r   <module>   s   =