U
    .d                     @   s   zd dl ZW n ek
r(   d dlZY nX d dlZd dlZd dlmZm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 Zd	d
 Zdd Zed e
eddddgdd ZdS )    N)parametrizetimeout)with_multiprocessing)concurrency_safe_rename)Paralleldelayed)concurrency_safe_writec              	   C   s&   t |d}t| | W 5 Q R X d S )Nwb)opencpickledump)outputfilenamef r   C/tmp/pip-unpacked-wheel-ho8k9mhl/joblib/test/test_store_backends.py
write_func   s    r   c              
   C   sn   t dD ]R}z*t|d}t|}W 5 Q R X W  q^W q ttfk
rX   td Y qX q | |ksjtd S )N
   rbg?)	ranger
   r   loadOSErrorIOErrortimesleepAssertionError)expectedr   ir   Zreloadedr   r   r   	load_func   s    
r   c                 C   s   t | ||}t|| d S N)r   r   )Zto_writer   r   Ztemporary_filenamer   r   r   concurrency_safe_write_rename&   s
     r    backendmultiprocessingZloky	threadingc                    sX   |  dj dd ttdD dd tdD }td|d	 fd
d|D  d S )Nztest.pklc                 S   s   i | ]}t ||qS r   )str.0r   r   r   r   
<dictcomp>3   s      z/test_concurrency_safe_write.<locals>.<dictcomp>g     j@c                 S   s*   g | ]"}|d  dkr"t jttdntqS )      )r   )	functoolspartialr    r   r   r%   r   r   r   
<listcomp>4   s    
z/test_concurrency_safe_write.<locals>.<listcomp>   r)   )Zn_jobsr!   c                 3   s   | ]}t | V  qd S r   )r   )r&   funcr   objr   r   	<genexpr>7   s    z.test_concurrency_safe_write.<locals>.<genexpr>)joinZstrpathr   intr   )Ztmpdirr!   funcsr   r/   r   test_concurrency_safe_write,   s    r5   )cPickler   ImportErrorpickler*   r   Zjoblib.testingr   r   Zjoblib.test.commonr   Zjoblib.backportsr   Zjoblibr   r   Zjoblib._store_backendsr   r   r   r    r5   r   r   r   r   <module>   s"   