o
    ^Zh                     @   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rvd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w 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 dS )'    N)util)loadsHIGHEST_PROTOCOLc                 C   s   |t | < d S N)_dispatch_table)type_Zreduce_function r   V/var/www/auris/lib/python3.10/site-packages/joblib/externals/loky/backend/reduction.pyregister   s   r
   c                 C   s.   | j d u rt| j| jjffS t| j | jjff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      d S r   r   )selfr   r   r	   f,   s   z_C.fc                 C   r   r   r   )clsr   r   r	   h/      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      r$   c                 C   s   t j| g|R i |S r   )	functoolspartial)r    r!   r"   r   r   r	   r   E   r%   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  n<zddlm} || }|j W n, ttfyZ } zd|  d}|j	d | f|j	dd   |_	|j	d |_
|d }~ww td	| rb| 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|| |  nq|| _d S )Ndispatch_table)_loky_pickler_clsmror   
isinstancetypesMemberDescriptorType__set__r1   )r   r1   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rt| j}ntj }|t | | |	 D ]
\}}| 
|| q,d S )N)protocolr1   )__init__hasattrdictr1   copyregcopyupdater   r8   itemsr
   )r   writerreducersr9   Zloky_dttypereduce_funcZloky_pickler_clsr   r	   r:      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)r1   )r   rC   rD   r   r   r	   r
      s   z6set_loky_pickler.<locals>.CustomizablePickler.register)r   r   r   r2   r8   r   r:   r
   r   rE   r   r	   CustomizablePickler   s
    rF   )ENV_LOKY_PICKLER_loky_pickler_nameZjoblib.externals.cloudpickler/   	importlibr0   PicklerImportErrorAttributeErrorr!   msgr   debug_LokyPickler)Zloky_picklerr0   Zmodule_pickleeZ
extra_inforF   r   rE   r	   set_loky_pickler^   s:   
 
6rQ   c                   C      t S r   )rH   r   r   r   r	   get_loky_pickler_name   r   rS   c                   C   rR   r   )rO   r   r   r   r	   get_loky_pickler   r   rT   c                 C   s   t |||d|  dS )z1Replacement for pickle.dump() using _LokyPickler.rB   r9   N)rO   dump)objfilerB   r9   r   r   r	   rV      s   rV   c                 C   s    t  }t| |||d | S )NrU   )ioBytesIOrV   	getbuffer)rW   rB   r9   bufr   r   r	   dumps   s   r]   )rV   r]   r   r
   rQ   )	duplicater^   r   )NN)0r=   rY   r&   r5   sysosmultiprocessingr   r-   r   r   r   r
   r   r   rC   r   r   r   listappendint__add__r$   r   r'   platformZ_posix_reductionr*   r.   r+   Zjoblib.externalsr,   ZDEFAULT_ENVrK   environgetrG   rO   rH   rQ   rS   rT   rV   r]   __all__Zmultiprocessing.reductionr^   r   r   r   r	   <module>   sV   
		

`


