o
    ¹iú  ã                   @   st   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 G dd„ dƒZ	dd	„ Z
d
d„ Zeeeƒ eejeƒ dS )é    N)ÚPipeConnection)Ú_reduce_socketé   )Úregisterc                   @   s   e Zd Zddd„Zdd„ ZdS )Ú	DupHandleNc              	   C   sf   |d u rt  ¡ }t tjd|¡}zt t ¡ |||dd¡| _W t |¡ nt |¡ w || _	|| _
d S )NFr   )ÚosÚgetpidÚ_winapiÚOpenProcessÚPROCESS_DUP_HANDLEÚDuplicateHandleÚGetCurrentProcessÚ_handleÚCloseHandleÚ_accessÚ_pid)ÚselfÚhandleÚaccessÚpidÚproc© r   úg/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/joblib/externals/loky/backend/_win_reduction.pyÚ__init__   s   
þ
zDupHandle.__init__c              	   C   s^   | j t ¡ kr
| jS t tjd| j ¡}zt || jt ¡ | j	dtj
¡W t |¡ S t |¡ w )NF)r   r   r   r   r	   r
   r   r   r   r   ÚDUPLICATE_CLOSE_SOURCEr   )r   r   r   r   r   Údetach!   s   
ÿ
þzDupHandle.detach©N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r      s    
r   c                 C   s   |   ¡ }t|||ƒS r   )r   r   )ÚdhÚreadableÚwritabler   r   r   r   Úrebuild_pipe_connection/   s   r#   c                 C   s@   | j rtjnd| jrtjndB }t|  ¡ |ƒ}t|| j | jffS )Nr   )r!   r	   ÚFILE_GENERIC_READr"   ÚFILE_GENERIC_WRITEr   Úfilenor#   )Úconnr   r    r   r   r   Úreduce_pipe_connection4   s
   ÿr(   )r   Úsocketr	   Úmultiprocessing.connectionr   Úmultiprocessing.reductionr   Ú	reductionr   r   r#   r(   r   r   r   r   Ú<module>   s   
