o
    l¨Êh¯  ã                   @   s  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 ejdkr(d dl	m
Z
 nd dlm
Z
 eedƒo=eedƒo=eejd	ƒZd
d„ Zdd„ Zejdd… dkrXdd„ Zdd„ Znd dlmZ eejeƒ eejeƒ ejdd… dkr|dd„ Zdd„ Znd dlmZ ee
eƒ dS )é    Né   )Úregister)Úget_spawning_popen©é   r   )Ú
ConnectionÚCMSG_LENÚ
SCM_RIGHTSÚsendmsgc                 C   s"   t jd d… dkrt | d¡ | S )Né   r   T)ÚsysÚversion_infoÚosÚset_inheritable)Úfd© r   ú`/var/www/html/env/lib/python3.10/site-packages/joblib/externals/loky/backend/_posix_reduction.pyÚ_mk_inheritable   s   r   c                 C   sR   t ƒ }|dur| | | ¡¡S tr%tjdd… dkr%ddlm} | | ¡S tdƒ‚)zReturn a wrapper for an fd.Nr   r   r   )Úresource_sharerz[Cannot pickle connection object. This object can only be passed when spawning a new process)	r   ÚDupFdÚduplicate_for_childÚHAVE_SEND_HANDLEr   r   Úmultiprocessingr   Ú	TypeError)r   Ú	popen_objr   r   r   r   r   "   s   
ÿr   r   c                 C   s"   t |  ¡ ƒ}t|| j| j| jffS ©N)r   ÚfilenoÚ_rebuild_socketÚfamilyÚtypeÚproto)ÚsÚdfr   r   r   Ú_reduce_socket2   s   r#   c                 C   s   |   ¡ }t ||||¡S r   )ÚdetachÚsocketÚfromfd)r"   r   r   r    r   r   r   r   r   6   s   r   )Úreduce_socketc                 C   s   t |  ¡ ƒ}t|| j| jffS r   )r   r   Úrebuild_connectionÚreadableÚwritable)Úconnr"   r   r   r   Úreduce_connectionB   s   r,   c                 C   s   |   ¡ }t|||ƒS r   )r$   r   )r"   r)   r*   r   r   r   r   r(   F   s   r(   )r,   )r   r   r%   Ú_socketÚ	reductionr   Úcontextr   r   Úmultiprocessing.connectionr   Ú_multiprocessingÚhasattrr   r   r   r#   r   Úmultiprocessing.reductionr'   r,   r(   r   r   r   r   Ú<module>   s6   

ÿ
þ

