o
    xi)                     @   s   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	d
d Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d! Zd#d$ Zd%d& Zd'd( Zd)d* Zd+S ),    )raises)Promiseasync_instance)
DataLoaderc                     s8   g  |  dtj fdd}t|fi | }| fS )Nresolvec                    s     |  | S N)appendkeys
load_callsr    d/home/ubuntu/.local/lib/python3.10/site-packages/wandb/vendor/promise-2.3.0/tests/test_dataloader.pyfn   s   
zid_loader.<locals>.fn)popr   r   r   )optionsr   identity_loaderr   r   r   	id_loader   s
   r   c                  C   s@   dd } t | }|d}t|tsJ | }|dksJ d S )Nc                 S   
   t | S r   r   r   r	   r   r   r   call_fn      
z0test_build_a_simple_data_loader.<locals>.call_fn   )r   load
isinstancer   get)r   r   promise1value1r   r   r   test_build_a_simple_data_loader   s   
r   c                  C   st   dd } t | }|ddg}t|tsJ | }|ddgks"J |g }t|ts.J | }|g ks8J d S )Nc                 S   r   r   r   r	   r   r   r   r   "   r   z@test_supports_loading_multiple_keys_in_one_call.<locals>.call_fnr      )r   	load_manyr   r   r   )r   r   promise_allvaluesr   r   r   /test_supports_loading_multiple_keys_in_one_call!   s   
r#   c                  C      t jdd } |    d S )Nc                  S   sf   t  \} }| d}| d}t||g}| \}}|dks"J |dks(J |ddggks1J d S )Nr   r   r   r   r   allr   r   r   r   promise2pr   value2r   r   r   do5   s   


z*test_batches_multiple_requests.<locals>.dor   safer   r+   r   r   r   test_batches_multiple_requests4   s   
r/   c                  C   r$   )Nc            	      S   s   t dd\} }| d}| d}| d}t|||g}| \}}}|dks+J |dks1J |dks7J |ddgdggksBJ d S )Nr   )max_batch_sizer      r%   )	r   r   r   r(   promise3r)   r   r*   value3r   r   r   r+   I   s   


z?test_batches_multiple_requests_with_max_batch_sizes.<locals>.dor,   r.   r   r   r   3test_batches_multiple_requests_with_max_batch_sizesH   s   
r4   c                  C   r$   )Nc                  S   sp   t  \} }| d}| d}||ksJ t||g}| \}}|dks(J |dks.J |dggks6J d S )Nr   r%   r'   r   r   r   r+   _   s   


z-test_coalesces_identical_requests.<locals>.dor,   r.   r   r   r   !test_coalesces_identical_requests^   s   
r5   c                  C   r$   )Nc            	      S   s  t  \} }t| d| dg \}}|dksJ |dks"J |ddggks+J t| d| dg \}}|dksBJ |dksHJ |ddgdggksSJ t| d| d| dg \}}}|dksoJ |dksuJ |dks{J |ddgdggksJ d S )NABCr   r   r&   r   r   )	r   r   aba2ca3b2c2r   r   r   r+   t   s2   
"z)test_caches_repeated_requests.<locals>.dor,   r.   r   r   r   test_caches_repeated_requestss   s   
!rA   c                  C   r$   )Nc                  S   s   t  \} }t| d| dg \}}|dksJ |dks"J |ddggks+J | d t| d| dg \}}|dksGJ |dksMJ |ddgdggksXJ d S Nr6   r7   )r   r   r&   r   r   clearr   r   r:   r;   r<   r?   r   r   r   r+      s   
"
z.test_clears_single_value_in_loader.<locals>.dor,   r.   r   r   r   "test_clears_single_value_in_loader      
rE   c                  C   r$   )Nc                  S   s   t  \} }t| d| dg \}}|dksJ |dks"J |ddggks+J |   t| d| dg \}}|dksFJ |dksLJ |ddgddggksXJ d S rB   )r   r   r&   r   r   	clear_allrD   r   r   r   r+      s   
"z,test_clears_all_values_in_loader.<locals>.dor,   r.   r   r   r    test_clears_all_values_in_loader   rF   rH   c                  C   r$   )Nc                  S   sl   t  \} }t| d| dg \}}|dksJ |dks"J | j}|   t| jt|ks4J d S rB   )r   r   r&   r   r   _promise_cacherG   id)r   _r:   r;   	cache_mapr   r   r   r+      s   
"z+test_does_not_replace_cache_map.<locals>.dor,   r.   r   r   r   test_does_not_replace_cache_map      
rM   c                  C   r$   )Nc                  S   sd   t  \} }| dd t| d| dg \}}|dks"J |dks(J |dggks0J d S rB   )r   primer   r&   r   r   )r   r   r:   r;   r   r   r   r+      s   
"z)test_allows_priming_the_cache.<locals>.dor,   r.   r   r   r   test_allows_priming_the_cache   s   
rP   c                  C   r$   )Nc                  S   s   t  \} }| dd | d }| d }|dksJ |dks%J | dd | dd | d }| d }|dksEJ |dksKJ |dggksSJ d S )Nr6   Xr7   Y)r   rO   r   r   )r   r   a1b1r<   r?   r   r   r   r+      s   
z7test_does_not_prime_keys_that_already_exist.<locals>.dor,   r.   r   r   r   +test_does_not_prime_keys_that_already_exist   s   
rU   c                  C   r$   )Nc                  S   s   dd } t | d\}}tt}|d  W d    n1 s!w   Y  t|jdks/J |d }|dks<J |dgdggksFJ d S )Nc                 S      dd | D }t |S )Nc                 S   *   g | ]}|d  dkr|nt d|qS r   r   zOdd: {}	Exceptionformat.0keyr   r   r   
<listcomp>      z[test_resolves_to_error_to_indicate_failure.<locals>.do.<locals>.resolve.<locals>.<listcomp>r   r
   mapped_keysr   r   r   r        
zGtest_resolves_to_error_to_indicate_failure.<locals>.do.<locals>.resolver   r   Odd: 1r   r   r   rZ   r   r   strvalue)r   even_loaderr   exc_infor*   r   r   r   r+     s   
z6test_resolves_to_error_to_indicate_failure.<locals>.dor,   r.   r   r   r   *test_resolves_to_error_to_indicate_failure     
rk   c                  C   r$   )Nc                  S   s   dd } t | d\}}|d}|d}tt}|  W d    n1 s(w   Y  t|jdks6J | }|dks@J |ddggksIJ d S )Nc                 S   rV   )Nc                 S   rW   rX   rY   r\   r   r   r   r_   *  r`   zitest_can_represent_failures_and_successes_simultaneously.<locals>.do.<locals>.resolve.<locals>.<listcomp>r   ra   r   r   r   r   )  rc   zUtest_can_represent_failures_and_successes_simultaneously.<locals>.do.<locals>.resolverd   r   r   re   )r   r   r   rZ   r   rg   rh   )r   ri   r   r   r(   rj   r*   r   r   r   r+   '  s   



zDtest_can_represent_failures_and_successes_simultaneously.<locals>.dor,   r.   r   r   r   8test_can_represent_failures_and_successes_simultaneously&  rF   rm   c                  C   r$   )Nc                  S   s   dd } t | d\}}tt}|d  W d    n1 s!w   Y  t|jdks/J tt}|d  W d    n1 sEw   Y  t|jdksSJ |dggks[J d S )Nc                 S   rV   )Nc                 S   s   g | ]	}t d |qS )z	Error: {}rY   r\   r   r   r   r_   D  s    zKtest_caches_failed_fetches.<locals>.do.<locals>.resolve.<locals>.<listcomp>r   ra   r   r   r   r   C  s   
z7test_caches_failed_fetches.<locals>.do.<locals>.resolverd   r   Error: 1rf   )r   error_loaderr   rj   r   r   r   r+   A  s   

&test_caches_failed_fetches.<locals>.dor,   r.   r   r   r   test_caches_failed_fetches@  rl   rq   c                  C   r$   )Nc                  S   s`   t  \} }| dtd tt}| d  W d    n1 s#w   Y  |g ks.J d S )Nr   rn   )r   rO   rZ   r   r   r   )r   r   rj   r   r   r   r+   Y  s   

rp   r,   r.   r   r   r   rq   X  s   

c                  C   r$   )Nc                  S   sb   dd } t | d\}}tt}|d  W d    n1 s!w   Y  t|jdks/J d S )Nc                 S   s   t d)NAOH!)rZ   xr   r   r   
do_resolve|  s   zKtest_catches_error_if_loader_resolver_fails.<locals>.do.<locals>.do_resolverd   A1rr   rf   )ru   a_loadera_load_callsrj   r   r   r   r+   z  s   
z7test_catches_error_if_loader_resolver_fails.<locals>.dor,   r.   r   r   r   +test_catches_error_if_loader_resolver_failsy  s   
ry   c                  C   r$   )Nc            	         s   t  \ } t  fddd\}}t  fddd\}}t|d|d|d|dg \}}}}|dks<J |dksBJ |dksHJ |dksNJ |ddggksWJ |ddggks`J | d	d
ggksiJ d S )Nc                         t| S r   r   tupler	   deep_loaderr   r   <lambda>      zBtest_can_call_a_loader_from_a_loader.<locals>.do.<locals>.<lambda>rd   c                    rz   r   r{   r	   r}   r   r   r     r   rv   B1A2B2)rv   r   )r   r   r9   )	deep_load_callsrw   rx   b_loaderb_load_callsrS   rT   r<   r?   r   r}   r   r+     s.   





	z0test_can_call_a_loader_from_a_loader.<locals>.dor,   r.   r   r   r   $test_can_call_a_loader_from_a_loader  s   
r   c                  C   r$   )Nc                  S   s,   dd } t | d\}}|d|ksJ d S )Nc                 S      | S r   r   rs   r   r   r   ru        zLtest_dataloader_clear_with_missing_key_works.<locals>.do.<locals>.do_resolverd   rv   )r   rC   ru   rw   rx   r   r   r   r+     s   z8test_dataloader_clear_with_missing_key_works.<locals>.dor,   r.   r   r   r   ,test_dataloader_clear_with_missing_key_works  s   
r   c                  C   r$   )Nc                  S   s   dd } t | d\}}tt |d  W d    n1 s!w   Y  tjs+J tt |d  W d    n1 sAw   Y  tjsKJ d S )Nc                 S   r   r   r   rs   r   r   r   ru     r   z[test_wrong_loader_return_type_does_not_block_async_instance.<locals>.do.<locals>.do_resolverd   rv   r   )r   r   rZ   r   r   r   have_drained_queuesr   r   r   r   r+     s   


zGtest_wrong_loader_return_type_does_not_block_async_instance.<locals>.dor,   r.   r   r   r   ;test_wrong_loader_return_type_does_not_block_async_instance  rN   r   N)pytestr   promiser   r   promise.dataloaderr   r   r   r#   r/   r4   r5   rA   rE   rH   rM   rP   rU   rk   rm   rq   ry   r   r   r   r   r   r   r   <module>   s.    &! 