a
    h                     @   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 d
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"y$   dZ!Y n0 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,g d"Z-ejdkrd d#l.m/Z/ 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   c/var/www/html/assistant/venv/lib/python3.9/site-packages/joblib/externals/loky/backend/reduction.pyregister   s    r
   c                 C   s2   | j d u 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   c                 C   s   t | j| jffS r   )r   __objclass__r   r   r   r   r	   _reduce_method_descriptor8   s    r   c                 C   s   t | j| j| jpi ffS r   )_rebuild_partialfuncargskeywords)pr   r   r	   _reduce_partialA   s    r"   c                 C   s   t j| g|R i |S r   )	functoolspartial)r   r   r    r   r   r	   r   E   s    r   win32   )_mk_inheritable)_win_reduction)cloudpickler)   pickleZLOKY_PICKLERc              
      s   | d u rt } d  | dv rd} | tkr(d S | dkr>ddlm  nzddlm} || }|j W nd ttfy } zHd|  d}|j	d | f|j	dd   |_	|j	d |_
|W Y d }~n
d }~0 0 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 u ri }t| dr2t| j}n
tj }|t | | |	 D ]\}}| 
|| qXd S )N)protocolr.   )__init__hasattrdictr.   copyregcopyupdater   r5   itemsr
   )r   writerreducersr6   Zloky_dttypereduce_funcZloky_pickler_clsr   r	   r7      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   r@   rA   r   r   r	   r
      s    z6set_loky_pickler.<locals>.CustomizablePickler.register)r   r   r   r/   r5   r   r7   r
   r   rB   r   r	   CustomizablePickler   s   rC   )ENV_LOKY_PICKLER_loky_pickler_nameZjoblib.externals.cloudpickler,   	importlibr-   PicklerImportErrorAttributeErrorr   msgr   debug_LokyPickler)Zloky_picklerr-   Zmodule_pickleeZ
extra_inforC   r   rB   r	   set_loky_pickler^   s6    
 6rN   c                   C   s   t S r   )rE   r   r   r   r	   get_loky_pickler_name   s    rO   c                   C   s   t S r   )rL   r   r   r   r	   get_loky_pickler   s    rP   c                 C   s   t |||d|  dS )z1Replacement for pickle.dump() using _LokyPickler.r?   r6   N)rL   dump)objfiler?   r6   r   r   r	   rR      s    rR   c                 C   s    t  }t| |||d | S )NrQ   )ioBytesIOrR   	getbuffer)rS   r?   r6   bufr   r   r	   dumps   s    rY   )rR   rY   r   r
   rN   )	duplicaterZ   )N)NN)NN)0r:   rU   r#   r2   sysosmultiprocessingr   r*   r   r   r   r
   r   r   r@   r   r   r   listappendint__add__r"   r   r$   platformZ_posix_reductionr'   r+   r(   Zjoblib.externalsr)   ZDEFAULT_ENVrH   environgetrD   rL   rE   rN   rO   rP   rR   rY   __all__Zmultiprocessing.reductionrZ   r   r   r   r	   <module>   sP   		


`

