U
    Nvf                     @   s  d dl Z d dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d d	l	mZ d d
l	mZ d dlmZmZ d dlmZmZ d dlmZ d dlmZ edeegdd Zedeegdd Zeedd Zeedd Zedddgdd Zdd Zdd  Zeeed!d"d#e e gedeegd$d% Zedeegd&d' Zedeegd(d) ZdS )*    N)parallel_config)parallel_backend)Paralleldelayed)BACKENDS)DEFAULT_BACKEND)EXTERNAL_BACKENDS)LokyBackend)ThreadingBackend)MultiprocessingBackend)parametrizeraises)np
with_numpy)with_multiprocessing)check_memmapcontextc                 C   sN   t  j}| d}ztt  jts$tW 5 |  X tt  jt|ksJtd S )N	threading)r   _backend
unregister
isinstancer
   AssertionErrortype)r   defaultZpb r   ;/tmp/pip-unpacked-wheel-dylwa62s/joblib/test/test_config.pytest_global_parallel_backend   s    
r   c              	   C   sH   dd }|t d< z*| d tt jts.tW 5 Q R X W 5 t d= X d S )Nc                   S   s   t td< d S )Nfoo)r
   r   r   r   r   r   register_foo#   s    z,test_external_backends.<locals>.register_foor   )r   r   r   r   r
   r   )r   r   r   r   r   test_external_backends!   s    
 r   c              
   C   s   t dd| dp tddZ}t|jts,t|jdks:t|dd tjdgd D  t	t
| d	ksptW 5 Q R X W 5 Q R X d S )
N      n_jobs
max_nbytesZtemp_folder	processes)preferc                 s   s   | ]}t t|V  qd S Nr   r   .0ar   r   r   	<genexpr>9   s     z2test_parallel_config_no_backend.<locals>.<genexpr>
   r   )r   r   r   r   r	   r   r#   r   randomlenoslistdirZtmpdirpr   r   r   test_parallel_config_no_backend.   s     r4   c                 C   s   t dd| dv tdddd\}t|jts0t|jdks>tttdd	& |d
d t	j

dgd D  W 5 Q R X W 5 Q R X W 5 Q R X d S )N   r!   r"   r    r%   Z1M)r#   r&   r$   zExpected np.memmap instancematchc                 s   s   | ]}t t|V  qd S r'   r(   r)   r   r   r   r,   G   s     z;test_parallel_config_params_explicit_set.<locals>.<genexpr>r-   )r   r   r   r   r	   r   r#   r   	TypeErrorr   r.   r2   r   r   r   (test_parallel_config_params_explicit_set=   s    r9   paramr&   requirec              
   C   sB   t t|  dd& tf | di t  W 5 Q R X W 5 Q R X d S )Nz=wrong is not a validr6   Zwrong)r   
ValueErrorr   r   )r:   r   r   r   test_parallel_config_bad_paramsJ   s    r=   c                
   C   s`   t tdd tdd W 5 Q R X W 5 Q R X t tdd tdd W 5 Q R X W 5 Q R X d S )Nz'only supported when backend is not Noner6   r!   Zinner_max_num_threads)Zbackend_param)r   r<   r   r   r   r   r   'test_parallel_config_constructor_paramsS   s    r?   c               
   C   s   t dd. t } t| jtt s&t| jdks4tW 5 Q R X t dd@ t dd* t } t| jtslt| jdksztW 5 Q R X W 5 Q R X t dd> t dd( t } | j	dkst| jdkstW 5 Q R X W 5 Q R X d S )Nr    r#   r   backendd   )verbose)
r   r   r   r   r   r   r   r#   r
   rD   )r3   r   r   r   test_parallel_config_nested_   s    "rE   rB   multiprocessingr   c              	   C   s(   t tdd | |dd W 5 Q R X d S )Nz#does not acc.*inner_max_num_threadsr6   r!   r>   )r   r   )r   rB   r   r   r   1test_threadpool_limitation_in_child_context_erroru   s    rG   c              
   C   s   | ddd* t d d}|jdks(tW 5 Q R X W 5 Q R X | dd2 t  j}t d d}|j|ksjtW 5 Q R X W 5 Q R X d S )Nr   r    rB   r#   r@   rA   r   r#   r   )r   r3   Zdefault_n_jobsr   r   r   test_parallel_n_jobs_none   s    "rJ   c                 C   sT   | ddd> | dd d& t  }|jdks2tW 5 Q R X W 5 Q R X W 5 Q R X d S )Nr   r    rH   r!   rI   )r   r3   r   r   r    test_parallel_config_n_jobs_none   s    rK   ) r0   Zjoblib.parallelr   r   r   r   r   r   r   Zjoblib._parallel_backendsr	   r
   r   Zjoblib.testingr   r   Zjoblib.test.commonr   r   r   Zjoblib.test.test_parallelr   r   r   r4   r9   r=   r?   rE   rG   rJ   rK   r   r   r   r   <module>   sN   


 
