U
    Nvf
                     @   s:   d dl Z dd Zdd ZG dd dZdd	 Zd
d ZdS )    Nc                 C   s*   ddl m} |f | }|  |  dS )z3Initialize viztracer's profiler in worker processesr   )	VizTracerN)	viztracerr   register_exitstart)init_kwargsr   tracer r   F/tmp/pip-unpacked-wheel-dylwa62s/joblib/externals/loky/initializers.py_viztracer_init   s    
r
   c               
   C   s   z6dd l } |  }|d k	r4t|ddr4t|jffW S W nD tk
rJ   Y n2 tk
rz } ztd|  W 5 d }~X Y nX dS )Nr   enableFz&Unable to introspect viztracer state: Nr   )	r   Z
get_tracergetattrr
   r   ImportError	Exceptionwarningswarn)r   r   er   r   r	   (_make_viztracer_initializer_and_initargs   s    "r   c                   @   s    e Zd ZdZdd Zdd ZdS )_ChainedInitializerzCompound worker initializer

    This is meant to be used in conjunction with _chain_initializers to
    produce  the necessary chained_args list to be passed to __call__.
    c                 C   s
   || _ d S N)_initializers)selfZinitializersr   r   r	   __init__'   s    z_ChainedInitializer.__init__c                 G   s"   t | j|D ]\}}||  qd S r   )zipr   )r   Zchained_argsinitializerargsr   r   r	   __call__*   s    z_ChainedInitializer.__call__N)__name__
__module____qualname____doc__r   r   r   r   r   r	   r       s   r   c                 C   sf   g }g }| D ]$\}}|dk	r| | | | q|s:dS t|dkrV|d |d fS t||fS dS )zyConvenience helper to combine a sequence of initializers.

    If some initializers are None, they are filtered out.
    Nr      r   )appendlenr   )Zinitializer_and_argsZfiltered_initializersZfiltered_initargsr   initargsr   r   r	   _chain_initializers/   s    
r%   c                 C   s0   | d k	rt | std| t| |ft gS )Nz%initializer must be a callable, got: )callable	TypeErrorr%   r   )r   r$   r   r   r	   _prepare_initializerC   s    r(   )r   r
   r   r   r%   r(   r   r   r   r	   <module>   s
   	