U
    Nvf1                     @   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mZ 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mZmZ dd	 Zd
d Zdd Ze
d ee	ddddgdd Zdd Zdd ZdS )    NPicklingError)parametrizetimeout)with_multiprocessing)concurrency_safe_rename)Paralleldelayed)concurrency_safe_writeFileSystemStoreBackendCacheWarningc              	   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-dylwa62s/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>;   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><   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>?   s    z.test_concurrency_safe_write.<locals>.<genexpr>)joinstrpathr   intr   )tmpdirr%   funcsr   r3   r   test_concurrency_safe_write4   s    r;   c              	   C   sV   G dd dt }t }| dj|_d |_tjtdd |	d|  W 5 Q R X d S )Nc                   @   s   e Zd Zdd ZdS )z7test_warning_on_dump_failure.<locals>.UnpicklableObjectc                 S   s   t dd S )Nsome exception)RuntimeErrorselfr   r   r   
__reduce__G   s    zBtest_warning_on_dump_failure.<locals>.UnpicklableObject.__reduce__N__name__
__module____qualname__r@   r   r   r   r   UnpicklableObjectF   s   rE   test_warning_on_pickling_errorr<   matchtestpath)
objectr   r6   r7   locationcompresspytestwarnsr   	dump_itemr9   rE   r%   r   r   r   test_warning_on_dump_failureC   s    rQ   c              	   C   sV   G dd dt }t }| dj|_d |_tjtdd |	d|  W 5 Q R X d S )Nc                   @   s   e Zd Zdd ZdS )z9test_warning_on_pickling_error.<locals>.UnpicklableObjectc                 S   s   t dd S )Nnot picklabler   r>   r   r   r   r@   V   s    zDtest_warning_on_pickling_error.<locals>.UnpicklableObject.__reduce__NrA   r   r   r   r   rE   U   s   rE   rF   rR   rG   rI   )
rJ   r   r6   r7   rK   rL   rM   rN   FutureWarningrO   rP   r   r   r   rF   R   s    rF   )cPickler   ImportErrorpickler.   r   r   rM   Zjoblib.testingr   r   Zjoblib.test.commonr   Zjoblib.backportsr   Zjoblibr   r	   Zjoblib._store_backendsr
   r   r   r   r"   r$   r;   rQ   rF   r   r   r   r   <module>   s*   