3
°d'
  ã               @   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 | Ž}|jƒ  |jƒ  dS )z3Initialize viztracer's profiler in worker processesr   )Ú	VizTracerN)Ú	viztracerr   Zregister_exitÚstart)Úinit_kwargsr   Útracer© r   úD/tmp/pip-build-v9q4h5k9/joblib/joblib/externals/loky/initializers.pyÚ_viztracer_init   s    
r	   c              C   s‚   y4dd l } | jƒ }|d k	r2t|ddƒr2t|jffS W nD tk
rH   Y n2 tk
rx } ztjdj	|ƒƒ W Y d d }~X nX d f fS )Nr   ÚenableFz(Unable to introspect viztracer state: {})
r   Z
get_tracerÚgetattrr	   r   ÚImportErrorÚ	ExceptionÚwarningsÚwarnÚformat)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 )Ú_ChainedInitializerz°Compound 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&   x t | j|ƒD ]\}}||Ž  qW d S )N)Ú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   sv   g }g }x,| D ]$\}}|dk	r|j |ƒ |j |ƒ qW t|ƒdkrJdf fS t|ƒdkrf|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   é   )ÚappendÚlenr   )Zinitializer_and_argsZfiltered_initializersZfiltered_initargsr   Úinitargsr   r   r   Ú_chain_initializers.   s    
r#   c             C   s2   | d k	r t | ƒ r tdj| ƒƒ‚t| |ftƒ gƒS )Nz)initializer must be a callable, got: {!r})ÚcallableÚ	TypeErrorr   r#   r   )r   r"   r   r   r   Ú_prepare_initializerB   s    r&   )r   r	   r   r   r#   r&   r   r   r   r   Ú<module>   s
   