o
    ¹i	  ã                   @   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   úi/var/www/edux/Edux_v2/venv/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   ÚDupFdÚduplicate_for_childÚHAVE_SEND_HANDLEÚmultiprocessingr   Ú	TypeError)r   Ú	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   /   s   r   c                 C   s   |   ¡ }t|||ƒS r   )r   r   )r   ÚreadableÚwritabler   r   r   r   Úrebuild_connection4   s   r$   c                 C   s   t |  ¡ ƒ}t|| j| jffS r   )r   r   r$   r"   r#   )Úconnr   r   r   r   Úreduce_connection9   s   r&   )r	   r    Ú_socketÚmultiprocessing.connectionr   Úmultiprocessing.contextr   Ú	reductionr   Úhasattrr   r   r   r   r   r$   r&   r   r   r   r   Ú<module>   s(   
ÿ
þ