U
    ºmœdÏ  ã                   @   sZ  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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   úP/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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sºt‚| jdksÈt‚W 5 Q R X W 5 Q R X d S )Nr    )r#   r   )Úbackendéd   )Úverbose)
r   r   r   r   r   r   r   r#   r
   rB   )r3   r   r   r   Útest_parallel_config_nested_   s    "rC   r@   Ú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   r@   r   r   r   Ú1test_threadpool_limitation_in_child_context_erroru   s    rE   )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?   rC   rE   r   r   r   r   Ú<module>   sF   


 ÿ