o
    tBh                     @   sP   d dl Z d dlZddlmZ G dd deZG dd deZG dd	 d	eZdS )
    N   )BaseProcessc                       s   e Zd ZdZddddi dddf fdd	Zedd Zejd	k r*d
d Z	e
dd Zejdk rFe
dd Zejdd Z fddZ  ZS   ZS )LokyProcesslokyN Fc	           	         sl   t jdk rtt| j|||||d || _ntt| j||||||d |d u r*i n|| _| j| _|| _d S )N   r   )grouptargetnameargskwargs)r	   r
   r   r   r   daemon)	sysversion_infosuperr   __init__r   envauthkeyinit_main_module)	selfr	   r
   r   r   r   r   r   r   	__class__r   |/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/joblib/externals/loky/backend/process.pyr      s   



zLokyProcess.__init__c                 C   s2   t jdkrddlm} || S ddlm} || S )Nwin32r   )Popen)r   platformpopen_loky_win32r   popen_loky_posix)process_objr   r   r   r   _Popen!   s
   
zLokyProcess._Popenr   c                 C   sd   ddl m}m} | jdu sJ d| jt ksJ d|  | | | _| jj| _	|j
|  dS )z-
            Start child process
            r   )_current_process_cleanupNzcannot start a process twicez:can only start a process object created by current process)multiprocessing.processr!   r"   _popen_parent_pidosgetpidr    sentinel	_sentinel	_childrenadd)r   r!   r"   r   r   r   start*   s   
zLokyProcess.startc                 C   s    z| j W S  ty   tdw )z
            Return a file descriptor (Unix) or handle (Windows) suitable for
            waiting for process termination.
            zprocess not started)r)   AttributeError
ValueErrorr   r   r   r   r(   7   s
   zLokyProcess.sentinel)r      c                 C   s   | j S )N)_authkeyr/   r   r   r   r   C   s   zLokyProcess.authkeyc                 C   s   t || _dS )z:
            Set authorization key of process
            N)AuthenticationKeyr1   )r   r   r   r   r   r   G   s   c                    s(   ddl m} || j tt|   d S )Nr   )set_start_method)contextr3   _start_methodr   r   
_bootstrap)r   r3   r   r   r   r6   N   s   
zLokyProcess._bootstrap)__name__
__module____qualname__r5   r   staticmethodr    r   r   r,   propertyr(   r   setterr6   __classcell__r   r   r   r   r      s&    






r   c                       s.   e Zd ZdZddddi df fdd	Z  ZS )LokyInitMainProcessloky_init_mainNr   c              	      s"   t t| j||||||dd d S )NT)r	   r
   r   r   r   r   r   )r   r>   r   )r   r	   r
   r   r   r   r   r   r   r   r   W   s   


zLokyInitMainProcess.__init__)r7   r8   r9   r5   r   r=   r   r   r   r   r>   T   s
    r>   c                   @   s   e Zd Zdd ZdS )r2   c                 C   s>   ddl m} z||  W n ty   tdw tt| ffS )Nr   )assert_spawningzGPickling an AuthenticationKey object is disallowed for security reasons)r4   r@   RuntimeError	TypeErrorr2   bytes)r   r@   r   r   r   
__reduce__c   s   zAuthenticationKey.__reduce__N)r7   r8   r9   rD   r   r   r   r   r2   b   s    r2   )r&   r   compatr   r   r>   rC   r2   r   r   r   r   <module>   s   F