U
    /e                     @   s   d dl mZmZ d dl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	ed
dfed
dfeddfdZd'ddZdd Zdd Zdd Zejdeegdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& ZdS )(    )addmulN)Callback)ProgressBar)format_time)get_sync)get      abcd)r   r   r   r   e(   c                 C   sj   |   \}}|ddkstdd |dd dD \}}}|dd	|  d
 ksZt|dksftd S )Nz100% Completedr	   c                 s   s   | ]}|  V  qd S )N)strip).0i r   H/tmp/pip-unpacked-wheel-dbjnr7gq/dask/diagnostics/tests/test_progress.py	<genexpr>   s     z&check_bar_completed.<locals>.<genexpr>|[#])
readouterrcountAssertionErrorsplit)capsyswidthouterrbarpercenttimer   r   r   check_bar_completed   s
    $r(   c              	   C   sP   t d}|jdddd}t  |  }W 5 Q R X |dksDtt|  d S )Nz
dask.array)d   r)   Zf4)Zdtypechunks'  )pytestimportorskipZonesr   sumZcomputer   r(   )r!   dadatar#   r   r   r   test_array_compute   s    
r1   c              	   C   s^   t   ttd}W 5 Q R X |dks(tt|  t dd ttd}W 5 Q R X t| d d S )Nr         )r"   )r   get_threadeddskr   r(   )r!   r#   r   r   r   test_progressbar    s    r6   c              	   C   sB   t d ttd}W 5 Q R X |  \}}|dkr:|dks>td S )Ng      $@r    )r   r4   r5   r   r   )r!   r#   r$   r   r   r   test_minimum_time*   s    
r8   r   c              	   C   s`   ddd fi}z t  }t|d W 5 Q R X W n tk
rB   Y nX |jrNt|j r\td S )Nr   c                   S   s   dd S )Nr	   r   r   r   r   r   r   <lambda>3       z!test_clean_exit.<locals>.<lambda>)r   r4   ZeroDivisionErrorZ_runningr   Z_timeris_alive)r   r5   Zpbarr   r   r   test_clean_exit1   s    
r=   c               	   C   s~   t jtddV} tddks ttddks0ttddks@ttd	d
ksPttddks`tW 5 Q R X t| dksztd S )Nzdask.utils.format_time)matchgffffff?z 1.4sg$@z10.4sgY@z 1min 40.4sg33333C@z16min 40.4sg33333@z 2hr 46min 40.4s   )r,   ZwarnsFutureWarningr   r   len)recordr   r   r   test_format_time=   s    rC   c                 C   s\   zJt jrtt }|  t js$tttd t|  |	  t jrHtW 5 t j  X d S )Nr   )
r   activeclearr   r   registerr4   r5   r(   
unregister)r!   pr   r   r   test_registerH   s    


rI   c              	   C   s,   t   tddid W 5 Q R X t|  d S Nxr	   )r   r4   r(   )r!   r   r   r   test_no_tasksZ   s    rL   c              
   C   s   t d}ddlm} |d}||}|4 t " tdtddfiddksRtW 5 Q R X W 5 Q R X t|  |j	d dkst|< t * ttddftddfd	d
dkstW 5 Q R X W 5 Q R X t|  d S )Ncacheyr   )Cacher+   rK   r	   r
      )rK   yrP   r2   )
r,   r-   Z
dask.cacherN   r   r4   r   r   r(   r0   )r!   rM   rN   r   ccr   r   r   test_with_cache`   s    

08rR   c              	   C   sL   ddt ddft ddfdtddfd}t  t|d	 W 5 Q R X t|  d S )
Nr	   r
   r   r   r   r   r   )r   r   r   r   r   frS   )r   r   r   r4   r(   )r!   r5   r   r   r   test_with_aliass   s    rT   c               	   C   s8   t  } |  tddid W 5 Q R X t| jts4td S rJ   )r   r4   
isinstanceZlast_durationfloatr   )rH   r   r   r   test_store_time   s    rW   )r   )operatorr   r   r,   Zdask.callbacksr   Zdask.diagnosticsr   Zdask.diagnostics.progressr   Z
dask.localr   Zdask.threadedr   r4   r5   r(   r1   r6   r8   markZparametrizer=   rC   rI   rL   rR   rT   rW   r   r   r   r   <module>   s&   "



