o
    ^ZŽhð  ã                   @   s²   d dl Z d dlZd dlZd dlmZ d dlmZ ddlmZ e	edƒo-e	edƒo-e	ejdƒZ
d	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zeejeƒ eejeƒ eeeƒ dS )é    N)Ú
Connection)Úget_spawning_popené   )ÚregisterÚCMSG_LENÚ
SCM_RIGHTSÚsendmsgc                 C   s   t  | d¡ | S )NT)ÚosÚset_inheritable)Úfd© r   ú]/var/www/auris/lib/python3.10/site-packages/joblib/externals/loky/backend/_posix_reduction.pyÚ_mk_inheritable   s   r   c                 C   s@   t ƒ }|dur| | | ¡¡S trddlm} | | ¡S tdƒ‚)zReturn a wrapper for an fd.Nr   )Úresource_sharerz[Cannot pickle connection object. This object can only be passed when spawning a new process)r   ÚDupFdZduplicate_for_childÚHAVE_SEND_HANDLEÚmultiprocessingr   Ú	TypeError)r   Z	popen_objr   r   r   r   r      s   
ÿ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_socket-   s   r   c                 C   s   |   ¡ }t ||||¡S r   )ÚdetachÚsocketÚfromfd)r   r   r   r   r   r   r   r   r   2   s   r   c                 C   s   |   ¡ }t|||ƒS r   )r   r   )r   ÚreadableÚwritabler   r   r   r   Úrebuild_connection7   s   r"   c                 C   s   t |  ¡ ƒ}t|| j| jffS r   )r   r   r"   r    r!   )Úconnr   r   r   r   Úreduce_connection<   s   r$   )r	   r   Ú_socketZmultiprocessing.connectionr   Zmultiprocessing.contextr   Z	reductionr   Úhasattrr   r   r   r   r   r"   r$   r   r   r   r   Ú<module>   s(   
ÿ
ý