U
    ºmœd1  ã                   @   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   úX/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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*   