a
    
d9                     @   s   d dl 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mZmZ e	 Zde_dd Zdd	 Zd
d Zdd Zdd Zdd Zdd ZG dd deZG dd deeZG dd deeZdS )    N)jittyped)Flags)TestCaseCompilationCacheMemoryLeakMixinTc                 C   s
   t | S N)hqheapify)x r   _/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/numba/tests/test_heapq.pyr
      s    r
   c                 C   s
   t | S r   )r	   heappop)heapr   r   r   r      s    r   c                 C   s   t | |S r   )r	   heappushr   itemr   r   r   r      s    r   c                 C   s   t | |S r   )r	   heappushpopr   r   r   r   r      s    r   c                 C   s   t | |S r   )r	   heapreplacer   r   r   r   r      s    r   c                 C   s   t | |S r   )r	   	nsmallestniterabler   r   r   r   "   s    r   c                 C   s   t | |S r   )r	   nlargestr   r   r   r   r   &   s    r   c                       s   e Zd Z f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)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Z  ZS )5
_TestHeapqc                    s(   t t|   t | _tjd| _d S )N*   )	superr   setUpr   ZccachenprandomZRandomStaternd)self	__class__r   r   r   ,   s    z_TestHeapq.setUpc                 C   s  t }tdd|}g d}| |}|| || | |t| dddtjtj tjg}t	|dD ]6}t|}| |}|| || | |t| qht
t|D ]8}|| g}| |}|| || | |t| qg d}| |}|| || | |t| d S )	NTZnopython
            	               r   A`"	@g      $g      @r-   )r'   !   )r&      )r+      )r
   r   listimplassertPreciseEquallistr   naninf	itertoolscombinations_with_replacementrangelen)r!   pyfunccfuncabZelement_poolr   ir   r   r   test_heapify_basic_sanity1   s2    




z$_TestHeapq.test_heapify_basic_sanityc                 C   s8   t |D ]*\}}|r|d d? }| || |k qd S )Nr&   )	enumerate
assertTrue)r!   r   posr   	parentposr   r   r   check_invariantX   s    z_TestHeapq.check_invariantc                 C   s   t }tdd|}t}tdd|}| dg}| dg}| | tdD ]4}| jdd}|	| ||| | | qNg }	|r||}| | |		| q|d d  }
|

  | t|
|	 | |	 d S )NTr$            r&   r   )r   r   r   r4   rG   r;   r    Zrandnr   appendsortr5   r6   )r!   Zpyfunc_heappushcfunc_heappushZpyfunc_heappopcfunc_heappopr   datarA   r   resultsZdata_sortedr   r   r   test_push_pop^   s*    



z_TestHeapq.test_push_popc                 C   sT   t }tdd|}ttdddg D ](}| | j|}|| | | q&d S )NTr$   r&      i N  )r
   r   r6   r;   r4   r    Zrandom_samplerG   )r!   r=   r>   sizer   r   r   r   test_heapifyy   s    z_TestHeapq.test_heapifyc                 C   s   t }tdd|}|   |  }|d W d    n1 s@0    Y  d}| |t|j |  "}|| ddg W d    n1 s0    Y  d}| |t|j d S )NTr$   r&   r(   r,   heap argument must be a listy      ?      ?y       @      z>'<' not supported between instances of 'complex' and 'complex')r
   r   disable_leak_checkassertTypingErrorassertInstr	exceptionr4   r!   r=   r>   emsgr   r   r   test_heapify_exceptions   s    
&
0z"_TestHeapq.test_heapify_exceptionsc           	      C   sz   t }tdd|}dd }| D ]T}t| | |}tt|D ]0}||}||}| |t| | || qBq d S )NTr$   c                   s   sB   g dV  g dV  t jdt jd V  t ddd V  d S )Nr%   )r0   )r&   o   )r+   i  r(   )Z
fill_valued   )r   fullr7   tolistlinspacer   r   r   r   a_variations   s    

z:_TestHeapq.test_heappop_basic_sanity.<locals>.a_variations)r   r   r
   r4   r;   r<   r5   r6   )	r!   r=   r>   rf   r?   r@   rA   Zval_pyZval_cr   r   r   test_heappop_basic_sanity   s    

z$_TestHeapq.test_heappop_basic_sanityc                 C   sd   t }tdd|}|   |  }|d W d    n1 s@0    Y  d}| |t|j d S )NTr$   rT   rU   )r   r   rV   rW   rX   rY   rZ   r[   r   r   r   test_heappop_exceptions   s    
&z"_TestHeapq.test_heappop_exceptionsc                 c   s\   |  g dV  tddd}|  |V  |  |d d d V  | j| |  |V  d S )Nr%   r`   r+      )r4   r   re   r    shuffle)r!   r?   r   r   r   	iterables   s    z_TestHeapq.iterablesc                    s   t }tdd|}t}tdd| |  D ]Z}t|}| |dg|D ]}|| qN fddttD }| 	|| q,d S )NTr$   r   c                    s   g | ]} qS r   r   .0_Z	cfunc_popr   r   r   
<listcomp>       z2_TestHeapq.test_heappush_basic.<locals>.<listcomp>)
r   r   r   rl   sortedr4   popr;   r<   r5   )r!   Zpyfunc_pushZ
cfunc_pushZ
pyfunc_popr   expectedvaluegotr   rp   r   test_heappush_basic   s    z_TestHeapq.test_heappush_basicc                 C   s   t }tdd|}|   |  }|dd W d    n1 sB0    Y  d}| |t|j |  $}|| g dd W d    n1 s0    Y  d}| |t|j d S )NTr$   rT   r-   rU   g      @'heap type must be the same as item type)r   r   rV   rW   rX   rY   rZ   r4   r[   r   r   r   test_heappush_exceptions   s    
(
2z#_TestHeapq.test_heappush_exceptionsc                 C   s   t }tdd|}|  D ]<}tdt|d D ]$}|d|}|d|}| || q0q|d| g d}| |g  |d| g d}| |dg |dd	}| |ddg |dtd
}| |g d d S )NTr$   ra   r'   r&   Fr'   r+   r&   r+   r-   r(   r,   r'   r+   r&   r-   )r   r&   r+   )	r   r   rl   r;   r<   r5   r4   r   aranger!   r=   r>   r   r   ru   rw   outr   r   r   test_nsmallest_basic   s    


z_TestHeapq.test_nsmallest_basicc                 C   s   t }tdd|}|  D ]<}tdt|d D ]$}|d|}|d|}| || q0q|d| g d}| |g  |d| g d}| |dg |dd	}| |d
dg |dtd
}| |g d d S )NTr$   ra   r'   r&   Fr{   r+   r|   r-   r(   )r(   r,   r'   )	r   r   rl   r;   r<   r5   r4   r   r}   r~   r   r   r   test_nlargest_basic   s    


z_TestHeapq.test_nlargest_basicc                 C   s   |    |  $}|d| g d W d    n1 s:0    Y  d}| |t|j |  }|dd W d    n1 s0    Y  d}| |t|j d S )Ng@r{   z%First argument 'n' must be an integerr+   rb   z+Second argument 'iterable' must be iterable)rV   rW   r4   rX   rY   rZ   )r!   r>   r\   r]   r   r   r   _assert_typing_error  s    
2
(z_TestHeapq._assert_typing_errorc                 C   s    t }tdd|}| | d S NTr$   )r   r   r   r!   r=   r>   r   r   r   test_nsmallest_exceptions&  s    z$_TestHeapq.test_nsmallest_exceptionsc                 C   s    t }tdd|}| | d S r   )r   r   r   r   r   r   r   test_nlargest_exceptions+  s    z#_TestHeapq.test_nlargest_exceptionsc                 C   s   t }tdd|}g d}t| | |}dD ](}||| ||| | |t| q0tddd}tj|d< tj	|d	< |
 }t| | |}d
dtj	 tj	fD ](}||| ||| | |t| qd S )NTr$   r%   )r,            r,   rj   g      r/   )r   r   r
   r4   r5   r6   r   re   r7   r8   rd   )r!   r=   r>   r?   r@   r   r   r   r   test_heapreplace_basic0  s&    







z!_TestHeapq.test_heapreplace_basicc                 C   s   t }tdd|}|   |  }|dd W d    n1 sB0    Y  d}| |t|j |  $}|| g dd W d    n1 s0    Y  d}| |t|j d S )NTr$   rT   rj   rU   rH   ry   )r   r   rV   rW   rX   rY   rZ   r4   r[   r   r   r   test_heapreplace_exceptionsK  s    
(
2z&_TestHeapq.test_heapreplace_exceptionsc                 c   s(   zt |V  qW n ty"   Y n0 d S r   )r   
IndexError)r!   r   r   r   r   heapiter^  s    z_TestHeapq.heapiterc                 C   s   t ddt}t ddt}| jtdd }| |d d }|| |dd  D ]}||d krX||| qX| t	| 
t	|t|dd   d S )NTr$       
   r   r`   )r   r
   r   r    choicer;   rd   r4   r5   r6   r   rs   )r!   cfunc_heapifyZcfunc_heapreplacerN   r   r   r   r   r   
test_nbeste  s    z_TestHeapq.test_nbestc                    s   t ddt}t ddt}t ddt tdD ]}tjdtjd}| | j	
|d}|d@ rx|d d  | n,| |d g|dd  D ]}|| q fd	d
tdD }| |t| q2d S )NTr$   rb   r(   Zdtyper   r&   r   c                    s   g | ]} qS r   r   rm   rM   r   r   r   rq     rr   z,_TestHeapq.test_heapsort.<locals>.<listcomp>)r   r
   r   r   r;   r   r}   float64r4   r    r   r5   rs   )r!   r   rL   ZtrialvaluesrN   r   Zheap_sortedr   r   r   test_heapsortv  s    
z_TestHeapq.test_heapsortc                 C   sZ   t }tdd|}| | jtdd}dD ]&}| t|||t|d |  q.d S )NTr$   r   r   	r   r&   r+   r   rb   i  i  r   iL  )	r   r   r4   r    r   r;   r5   r6   rs   r!   r=   r>   rN   r   r   r   r   test_nsmallest  s
    z_TestHeapq.test_nsmallestc                 C   s^   t }tdd|}| | jtdd}dD ]*}| t|||t|ddd |  q.d S )NTr$   r   r   r   )reverse)	r   r   r4   r    r   r;   r5   r6   rs   r   r   r   r   test_nlargest  s    z_TestHeapq.test_nlargestc           	      C   s   t }tdd|}t}tdd|}tjdtjd}| | j|d}|d d }|| |dd  D ]}||| qh| 	t
| t
|t|dd   d S )NTr$   r   r   r   r   r`   )r   r   r
   r   r}   r   r4   r    r   r5   r6   r   rs   )	r!   Zpyfunc_heappushpopZcfunc_heappushpopZpyfunc_heapifyr   r   rN   r   r   r   r   r   test_nbest_with_pushpop  s    z"_TestHeapq.test_nbest_with_pushpopc                 C   s   t }tdd|}| dg}||d}| t||fdgdf | t|d t | t|t | dg}||d}| t||fdgdf | dg}||d}| t||fdgdf d S )	NTr$   g      ?g      $@r   r   r*   r2   )r   r   r4   r5   r6   typefloat)r!   r=   r>   hr   r   r   r   test_heappushpop  s    


z_TestHeapq.test_heappushpopc                 C   s   t }tdd|}|   |  }|dd W d    n1 sB0    Y  d}| |t|j |  $}|| g dd W d    n1 s0    Y  d}| |t|j d S )NTr$   rT   rj   rU   Fry   )r   r   rV   rW   rX   rY   rZ   r4   r[   r   r   r   test_heappushpop_exceptions  s    
(
2z&_TestHeapq.test_heappushpop_exceptions)__name__
__module____qualname__r   rB   rG   rP   rS   r^   rg   rh   rl   rx   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__r   r   r"   r   r   *   s4   'r   c                   @   s   e Zd ZdZeZdS )TestHeapqReflectedListzTest heapq with reflected listsN)r   r   r   __doc__r6   r4   r   r   r   r   r     s   r   c                   @   s   e Zd ZdZejZdS )TestHeapqTypedListzTest heapq with typed listsN)r   r   r   r   r   Listr4   r   r   r   r   r     s   r   )heapqr	   r9   numpyr   Znumbar   r   Znumba.core.compilerr   Znumba.tests.supportr   r   r   Zno_pyobj_flagsZnrtr
   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s(      9