U
    P»{jã  ã                   @   sÈ   d dl Z d dlZd dlZd dlZd dlmZmZmZmZm	Z	 d dl
mZmZ d dlmZ ddlmZmZ dd„ Zejj d	d
„ ƒZejj dd„ ƒZeejj dd„ ƒƒZejj dd„ ƒZejj dd„ ƒZdS )é    N)ÚAsyncMemorizedFuncÚAsyncNotMemorizedFuncÚMemorizedResultÚMemoryÚNotMemorizedResult)ÚnpÚ
with_numpy)Úraisesé   )Úcorrupt_single_cache_itemÚmonkeypatch_cached_func_warnc                 Ã   sd   t |dd�}| | ¡} tdƒD ]@}tdƒD ]2}| |ƒI dH }||ksHt‚t|ƒ|d ks*t‚q*qdS )z= Similar to check_identity_lazy_async for coroutine functionsr   ©ÚlocationÚverboseé   é   Nr
   )r   ÚcacheÚrangeÚAssertionErrorÚlen)ÚfuncÚaccumulatorr   ÚmemoryÚiÚ_Úvalue© r   ú\/var/www/html/bwave/python/venv/lib/python3.8/site-packages/joblib/test/test_memory_async.pyÚcheck_identity_lazy_async   s    
r   c           	      ƒ   s  t ƒ ‰ ‡ fdd„}t|ˆ | jƒI d H  dD ]°}dD ]`}t| jd||d�}tj| jdd� | |¡}|d	ƒI d H  |jd
d� tˆ ƒ}|d	ƒI d H }q2tˆ ƒ|d	 ks¨t	‚| 
|d	¡I d H }||ksÆt	‚tˆ ƒ|d	 ks*t	‚q*d|_t| jdd�}| |¡d	ƒI d H  d S )Nc                 “   s   t  d¡I d H  ˆ  d¡ | S ©Nçš™™™™™¹?r
   ©ÚasyncioÚsleepÚappend)Ún©r   r   r   Úf   s    
z(test_memory_integration_async.<locals>.f)FT)ÚrNé
   )r   r   Ú	mmap_modeÚcompressT)Úignore_errorsr
   F)ÚwarnÚ__main__r   r   )Úlistr   Ústrpathr   ÚshutilÚrmtreer   Úclearr   r   ÚevalÚ
__module__)	Útmpdirr'   r+   r*   r   ÚgÚcurrent_accumulatorÚoutZevaledr   r&   r   Útest_memory_integration_async   s,     ÿ
r:   c                  ƒ   sd   t ƒ ‰ ‡ fdd„} td dd�}| | ¡}tdƒD ].}tˆ ƒ}|dƒI d H  tˆ ƒ|d ks0t‚q0d S )Nc                 “   s   t  d¡I d H  ˆ  d¡ | S r   r!   )Úxr&   r   r   ÚffH   s    
z test_no_memory_async.<locals>.ffr   r   é   r
   )r/   r   r   r   r   r   )r<   r   Úggr   r8   r   r&   r   Útest_no_memory_asyncD   s    
r?   c           
      Ã   sô   t | jddd�}| ¡ dd„ ƒ}t d¡}||ƒI dH }||ƒI dH }t|tjƒsVt‚|jdksdt‚t|tjƒstt‚|jdks‚t‚~~t	 
¡  t|ƒ t||ƒ}||ƒI dH }t|ƒdks¾t‚d	}	|	|d ksÒt‚t|tjƒsât‚|jdksðt‚dS )
z8Check that mmap_mode is respected even at the first callr(   r   )r   r*   r   c                 Ó   s   | d S )Nr   r   )Úar   r   r   Útwice\   s    z6test_memory_numpy_check_mmap_mode_async.<locals>.twicer   Nr
   zException while loading results)r   r0   r   r   ZonesÚ
isinstanceZmemmapr   ÚmodeÚgcZcollectr   r   r   )
r6   Zmonkeypatchr   rA   r@   ÚbÚcZrecorded_warningsÚdZexception_msgr   r   r   Ú'test_memory_numpy_check_mmap_mode_asyncU   s*    


rH   c              
   Ã   sÂ   d	dd„}t t|| jƒt|ƒt| jdd� |¡td d� |¡fttttfƒD ]p\}}tdƒD ]2}| 	d¡I d H }t
||ƒs~t‚| ¡ dks\t‚q\| ¡  ttƒ� | ¡  W 5 Q R X | ¡  qLd S )
Nr
   c                 Ó   s   t  d¡I d H  | d | S )Nr    r   )r"   r#   )r;   Úyr   r   r   r'      s    z%test_call_and_shelve_async.<locals>.fr   r   )r   r   é   )r
   )Úzipr   r0   r   r   r   r   r   r   Zcall_and_shelverB   r   Úgetr3   r	   ÚKeyError)r6   r'   r   ÚResultr   Úresultr   r   r   Útest_call_and_shelve_async}   s.    
ÿÿü ÿú	
rP   c                 Ã   sˆ   dd„ }| j |dgd�}i }|d|ƒI d H dks4t‚|d|ƒI d H dksLt‚| d|¡I d H \}}|dksrtdƒ‚t|tƒs„tdƒ‚d S )	Nc                 Ó   s,   t  d¡I d H  | | d¡d || < ||  S )Nr    r   r
   )r"   r#   rL   )r;   Úcounterr   r   r   r<   ›   s    z*test_memorized_func_call_async.<locals>.ffrQ   )Úignorer   r
   zf has not been called properlyz0Metadata are not returned by MemorizedFunc.call.)r   r   ÚcallrB   Údict)r   r<   r>   rQ   r;   Úmetar   r   r   Útest_memorized_func_call_async˜   s    ÿrV   )r"   rD   r1   ZpytestZjoblib.memoryr   r   r   r   r   Zjoblib.test.commonr   r   Zjoblib.testingr	   Ztest_memoryr   r   r   Úmarkr:   r?   rH   rP   rV   r   r   r   r   Ú<module>   s&   
(
&
