B
    F.\                 @   sp   d dl mZmZmZ d dlZd dlZd dlZejjdkrBd dl	Z
nd dl
Z
eeZdd Zdd Zdd	 ZdS )
    )print_functiondivisionabsolute_importN   c             C   sn   | j jd\}}}|dkr0dd l}t| |jS |dkrPdd l}t| |jjj	S |dkrft| t
tfS dS d S )N.numpyr   pandasbuiltinsF)	__class__
__module__	partitionr   
isinstanceZndarrayr   ZcoreZgenericZNDFramestrbytes)xmod_ZnpZpd r   :lib/python3.7/site-packages/distributed/protocol/pickle.py_always_use_pickle_for   s    r   c             C   s   ybt j| t jd}t|dk r<d|kr6tj| t jdS |S n$t| sLd|krP|S tj| t jdS W nX tk
r   ytj| t jdS  tk
r } ztd| |  W dd}~X Y nX Y nX dS )z Manage between cloudpickle and pickle

    1.  Try pickle
    2.  If it is short then check if it contains __main__
    3.  If it is long, then first check type, then check __main__
    )Zprotocoli  s   __main__z%Failed to serialize %s. Exception: %sN)	pickledumpsZHIGHEST_PROTOCOLlencloudpickler   	Exceptionloggerinfo)r   resulter   r   r   r      s    r   c             C   s>   y
t | S  tk
r8   tjd| d d dd  Y nX d S )NzFailed to deserialize %si'  T)exc_info)r   loadsr   r   r   )r   r   r   r   r    9   s
    
r    )Z
__future__r   r   r   Zloggingsysr   version_infomajorZcPickler   Z	getLogger__name__r   r   r   r    r   r   r   r   <module>   s   

