U
    e                     @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
 i Zdd Zdd ZG dd	 d	Zeee je eeeje eed
sdd Zeeeje eeeje dd Zdd Zeeje ejdkrddlmZ nddlmZ zd dl m!Z! dZ"W n e#k
r0   dZ"Y nX ej$%de"Z&da'da(d&ddZ)dd Z*dd Z+e)  d'dd Z,d(d!d"Z-d d"d#ddgZ.ejdkrd d$l/m0Z0 e.d%g7 Z.dS ))    N)util)loadsHIGHEST_PROTOCOLc                 C   s   |t | < d S N)_dispatch_table)type_Zreduce_function r   h/var/www/html/assets/scripts/venv/lib/python3.8/site-packages/joblib/externals/loky/backend/reduction.pyregister   s    r
   c                 C   s2   | j d krt| j| jjffS t| j | jjffS d S r   )__self__getattr	__class____func____name__mr   r   r	   _reduce_method$   s    
r   c                   @   s    e Zd Zdd Zedd ZdS )_Cc                 C   s   d S r   r   )selfr   r   r	   f,   s    z_C.fc                 C   s   d S r   r   )clsr   r   r	   h/   s    z_C.hN)r   
__module____qualname__r   classmethodr   r   r   r   r	   r   +   s   r   pypy_version_infoc                 C   s   t | j| jffS r   )r   __objclass__r   r   r   r   r	   _reduce_method_descriptor:   s    r   c                 C   s   t | j| j| jpi ffS r   )_rebuild_partialfuncargskeywords)pr   r   r	   _reduce_partialB   s    r#   c                 C   s   t j| f||S r   )	functoolspartial)r   r    r!   r   r   r	   r   F   s    r   win32   )_mk_inheritable)_win_reduction)cloudpickler*   pickleZLOKY_PICKLERc              
      s   | d krt } d  | dkrd} | tkr(d S | dkr>ddlm  nzddlm} || }|j W nb ttfk
r } z@d|  d}|j	d | f|j	dd   |_	|j	d |_
|W 5 d }~X Y nX td	| r| nd d
 G  fddd }|a| ad S )N) Nr*   r   )CloudPickler)import_modulez4
This error occurred while setting loky_pickler to 'zQ', as required by the env variable LOKY_PICKLER or the function set_loky_pickler.r'   zUsing 'z' for serialization.c                       s2   e Zd Z Zdd Zdef fdd	Zdd ZdS )z-set_loky_pickler.<locals>.CustomizablePicklerc                 S   sB   | j  D ],}t|dd }t|tjr
|| |  q8q
|| _d S )Ndispatch_table)_loky_pickler_clsmror   
isinstancetypesMemberDescriptorType__set__r/   )r   r/   Zancestor_classZdt_attributer   r   r	   _set_dispatch_table   s    
zAset_loky_pickler.<locals>.CustomizablePickler._set_dispatch_tableNc                    sr    j | ||d |d kri }t| dr2t| j}n
tj }|t | | |	 D ]\}}| 
|| qXd S )N)protocolr/   )__init__hasattrdictr/   copyregcopyupdater   r6   itemsr
   )r   writerreducersr7   Zloky_dttypereduce_funcZloky_pickler_clsr   r	   r8      s    



z6set_loky_pickler.<locals>.CustomizablePickler.__init__c                 S   s   || j |< dS )z@Attach a reducer function to a given type in the dispatch table.N)r/   )r   rA   rB   r   r   r	   r
      s    z6set_loky_pickler.<locals>.CustomizablePickler.register)r   r   r   r0   r6   r   r8   r
   r   rC   r   r	   CustomizablePickler   s   rD   )ENV_LOKY_PICKLER_loky_pickler_nameZjoblib.externals.cloudpickler-   	importlibr.   PicklerImportErrorAttributeErrorr    msgr   debug_LokyPickler)Zloky_picklerr.   Zmodule_pickleeZ
extra_inforD   r   rC   r	   set_loky_pickler_   s2    

 6rO   c                   C   s   t S r   )rF   r   r   r   r	   get_loky_pickler_name   s    rP   c                   C   s   t S r   )rM   r   r   r   r	   get_loky_pickler   s    rQ   c                 C   s   t |||d|  dS )z1Replacement for pickle.dump() using _LokyPickler.r@   r7   N)rM   dump)objfiler@   r7   r   r   r	   rS      s    rS   c                 C   s    t  }t| |||d | S )NrR   )ioBytesIOrS   	getbuffer)rT   r@   r7   bufr   r   r	   dumps   s    rZ   r   )	duplicater[   )N)NN)NN)1r;   rV   r$   r3   sysosmultiprocessingr   r+   r   r   r   r
   r   r   rA   r   r   r9   r   listappendint__add__r#   r   r%   platformZ_posix_reductionr(   r,   r)   Zjoblib.externalsr*   ZDEFAULT_ENVrI   environgetrE   rM   rF   rO   rP   rQ   rS   rZ   __all__Zmultiprocessing.reductionr[   r   r   r   r	   <module>   sR   		



`

