
    xKgx8                         d dl Zd dlZd dlZd dlmZmZ d dlm	Z	m
Z
 d Zd Zd Zd Zd Zd	 Zd
 Z G d de
      Z G d dee	      Z G d dee	      Zy)    N)jittyped)TestCaseMemoryLeakMixinc                 ,    t        j                  |       S N)hqheapify)xs    Z/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_heapq.pyr
   r
   
   s    ::a=    c                 ,    t        j                  |       S r   )r	   heappop)heaps    r   r   r      s    ::dr   c                 .    t        j                  | |      S r   )r	   heappushr   items     r   r   r      s    ;;tT""r   c                 .    t        j                  | |      S r   )r	   heappushpopr   s     r   r   r          >>$%%r   c                 .    t        j                  | |      S r   )r	   heapreplacer   s     r   r   r      r   r   c                 .    t        j                  | |      S r   )r	   	nsmallestniterables     r   r   r      s    <<8$$r   c                 .    t        j                  | |      S r   )r	   nlargestr   s     r   r    r    "   s    ;;q(##r   c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )
_TestHeapqc                 r    t         t        |           t        j                  j                  d      | _        y )N*   )superr"   setUpnprandomRandomStaternd)self	__class__s    r   r&   z_TestHeapq.setUp(   s&    j$%'99((,r   c                    t         } t        d      |      }g d}| j                  |      } ||        ||       | j                  |t	        |             dddt
        j                  t
        j                   t
        j                  g}t        j                  |d      D ]I  }t	        |      }| j                  |      } ||        ||       | j                  |t	        |             K t        t        |            D ]D  }||   g}| j                  |      } ||        ||       | j                  |t	        |             F g d}| j                  |      } ||        ||       | j                  |t	        |             y )	NTnopython
            	               r   A`"	@g      $g      @r8   )r2   !   )r1      )r6      )r
   r   listimplassertPreciseEquallistr'   naninf	itertoolscombinations_with_replacementrangelen)r+   pyfunccfuncabelement_poolr   is           r   test_heapify_basic_sanityz$_TestHeapq.test_heapify_basic_sanity,   sK   "T"6**MM!q	a47+ uc266BFF7BFFC 88qIAQAa A1I!H##AtAw/ J s<()Aa!Aa A1I!H##AtAw/ * (MM!q	a47+r   c                 n    t        |      D ]'  \  }}|s	|dz
  dz	  }| j                  ||   |k         ) y )Nr1   )	enumerate
assertTrue)r+   r   posr   	parentposs        r   check_invariantz_TestHeapq.check_invariantS   s9    "4IC 1WN	Y4 78 )r   c                 |   t         } t        d      |      }t        } t        d      |      }| j                  dg      }| j                  dg      }| j	                  |       t        d      D ]W  }| j                  j                  d      j                  d      }|j                  |        |||       | j	                  |       Y g }	|r- ||      }| j	                  |       |	j                  |       |r-|d d  }
|
j                          | j                  t        |
      |	       | j	                  |	       y )NTr.            r1   r   )r   r   r   r?   rT   rF   r*   randnr   appendsortr@   rA   )r+   pyfunc_heappushcfunc_heappushpyfunc_heappopcfunc_heappopr   datarM   r   resultsdata_sorteds              r   test_push_popz_TestHeapq.test_push_popY   s    #+d+O< *T*>:}}dV$}}dV$T"sA88>>!$))!,DKK4&  &	 
  &D  &NN4   1g[ 17;W%r   c                     t         } t        d      |      }t        t        dd            dgz   D ]E  }| j	                  | j
                  j                  |            } ||       | j                  |       G y )NTr.   r1      i N  )r
   r   rA   rF   r?   r*   random_samplerT   )r+   rH   rI   sizer   s        r   test_heapifyz_TestHeapq.test_heapifyt   sh     "T"6*q"&%0D==!7!7!=>D$K  & 1r   c                    t         } t        d      |      }| j                          | j                         5 } |d       d d d        d}| j	                  |t        j                               | j                         5 } || j                  ddg             d d d        d}| j	                  |t        |j                               y # 1 sw Y   xY w# 1 sw Y   =xY w)NTr.   r1   r3   r7   heap argument must be a listy      ?      ?y       @      z>'<' not supported between instances of 'complex' and 'complex')r
   r   disable_leak_checkassertTypingErrorassertInstr	exceptionr?   r+   rH   rI   emsgs        r   test_heapify_exceptionsz"_TestHeapq.test_heapify_exceptions   s    "T"6* 	!##%) & -c3q{{+,##%$-- 012 &,c3q{{+, &% &%s   	CCCC c                 6   t         } t        d      |      }d } |       D ]t  }t        |       | j                  |      }t	        t        |            D ]?  } ||      } ||      }| j                  |t        |             | j                  ||       A v y )NTr.   c               3      K   g d g d t        j                  dt         j                        j                          t        j                  ddd      j                          y w)Nr0   )r;   )r1   o   )r6   i  r3   )
fill_valued   )r'   fullrB   tolistlinspace r   r   a_variationsz:_TestHeapq.test_heappop_basic_sanity.<locals>.a_variations   sL     0000''!/6688++c2s+2244s   A*A,)r   r   r
   r?   rF   rG   r@   rA   )	r+   rH   rI   r   rJ   rK   rM   val_pyval_cs	            r   test_heappop_basic_sanityz$_TestHeapq.test_heappop_basic_sanity   s    "T"6*	5 AAJa A3q6]a''473''6	 #	  r   c                     t         } t        d      |      }| j                          | j                         5 } |d       d d d        d}| j	                  |t        j                               y # 1 sw Y   1xY w)NTr.   ri   rj   )r   r   rk   rl   rm   rn   ro   rp   s        r   test_heappop_exceptionsz"_TestHeapq.test_heappop_exceptions   sh    "T"6* 	!##%) & -c3q{{+,	 &%s   	A22A;c              #     K   | j                  g d       t        j                  ddd      }| j                  |       | j                  |d d d          | j                  j	                  |       | j                  |       y w)Nr0   rx   r6      )r?   r'   r}   r*   shuffle)r+   rJ   s     r   	iterablesz_TestHeapq.iterables   so     mm:;;KKQ#mmAmmAddG$$mmAs   BB
c                    t         } t        d      |      }t        } t        d      |      }| j                         D ]w  }t	        |      }| j                  |j                  d      g      }|D ]  } |||        t        t        |            D 	cg c]
  }	 ||       }
}	| j                  ||
       y y c c}	w )NTr.   r   )
r   r   r   r   sortedr?   poprF   rG   r@   )r+   pyfunc_push
cfunc_push
pyfunc_pop	cfunc_popr   expectedr   value_gots              r   test_heappush_basicz_TestHeapq.test_heappush_basic   s    'S$'4

&C&z2	(Hh'H==(,,q/!23D!4' " -2#d),<=,<q9T?,<C=##Hc2 ) >s   B<c                    t         } t        d      |      }| j                          | j                         5 } |dd       d d d        d}| j	                  |t        j                               | j                         5 } || j                  g d      d       d d d        d}| j	                  |t        |j                               y # 1 sw Y   xY w# 1 sw Y   =xY w)NTr.   ri   r8   rj   g      @'heap type must be the same as item type)r   r   rk   rl   rm   rn   ro   r?   rp   s        r   test_heappush_exceptionsz#_TestHeapq.test_heappush_exceptions   s    "T"6* 	!##%)Q & -c3q{{+,##%$--	*C0 & 8c3q{{+, &% &%   
CCCC"c                 ,   t         } t        d      |      }| j                         D ]C  }t        dt	        |      dz         D ]&  } |d|      } |d|      }| j                  ||       ( E  |d| j                  g d            }| j                  |g         |d| j                  g d            }| j                  |dg        |dd	      }| j                  |ddg        |dt        j                  d
            }| j                  |g d       y )NTr.   ry   r2   r1   Fr2   r6   r1   r6   r8   r3   r7   r2   r6   r1   r8   )r   r1   r6   )	r   r   r   rF   rG   r@   r?   r'   aranger+   rH   rI   r   r   r   r   outs           r   test_nsmallest_basicz_TestHeapq.test_nsmallest_basic   s    "T"6*(H2s8}q01!!X.Ax(''#6 2 ) E4==34R(D$--	23aS) A)*aV,Aryy|$Y/r   c                 ,   t         } t        d      |      }| j                         D ]C  }t        dt	        |      dz         D ]&  } |d|      } |d|      }| j                  ||       ( E  |d| j                  g d            }| j                  |g         |d| j                  g d            }| j                  |dg        |dd	      }| j                  |d
dg        |dt        j                  d
            }| j                  |g d       y )NTr.   ry   r2   r1   Fr   r6   r   r8   r3   )r3   r7   r2   )	r    r   r   rF   rG   r@   r?   r'   r   r   s           r   test_nlargest_basicz_TestHeapq.test_nlargest_basic   s    "T"6*(H2s8}q01!!X.Ax(''#6 2 ) E4==34R(D$--	23aS) A)*aV,Aryy|$Y/r   c                    | j                          | j                         5 } |d| j                  g d             d d d        d}| j                  |t	        j
                               | j                         5 } |dd       d d d        d}| j                  |t	        |j
                               y # 1 sw Y   zxY w# 1 sw Y   =xY w)Ng@r   z%First argument 'n' must be an integerr6   rz   z+Second argument 'iterable' must be iterable)rk   rl   r?   rm   rn   ro   )r+   rI   rq   rr   s       r   _assert_typing_errorz_TestHeapq._assert_typing_error  s     	!##%#t}}Y/0 & 6c3q{{+,##%!SM & <c3q{{+, &% &%s   B5;
C5B>C
c                 V    t         } t        d      |      }| j                  |       y NTr.   )r   r   r   r+   rH   rI   s      r   test_nsmallest_exceptionsz$_TestHeapq.test_nsmallest_exceptions!  s&    "T"6*!!%(r   c                 V    t         } t        d      |      }| j                  |       y r   )r    r   r   r   s      r   test_nlargest_exceptionsz#_TestHeapq.test_nlargest_exceptions&  s&    "T"6*!!%(r   c                 X   t         } t        d      |      }g d}t        |       | j                  |      }dD ]/  } |||        |||       | j	                  |t        |             1 t        j                  ddd      }t        j                  |d<   t        j                  |d	<   |j                         }t        |       | j                  |      }d
dt        j                   t        j                  fD ]/  } |||        |||       | j	                  |t        |             1 y )NTr.   r0   )r7            r7   r   g      r:   )r   r   r
   r?   r@   rA   r'   r}   rB   rC   r|   )r+   rH   rI   rJ   rK   r   s         r   test_heapreplace_basicz!_TestHeapq.test_heapreplace_basic+  s    "T"6**
MM!D1dO!TN##AtAw/  
 KKB#vv!"HHJ
MM!5266'2662D1dO!TN##AtAw/ 3r   c                    t         } t        d      |      }| j                          | j                         5 } |dd       d d d        d}| j	                  |t        j                               | j                         5 } || j                  g d      d       d d d        d}| j	                  |t        |j                               y # 1 sw Y   xY w# 1 sw Y   =xY w)NTr.   ri   r   rj   rV   r   )r   r   rk   rl   rm   rn   ro   r?   rp   s        r   test_heapreplace_exceptionsz&_TestHeapq.test_heapreplace_exceptionsF  s    "T"6* 	!##%)R  & -c3q{{+,##%$--	*D1 & 8c3q{{+, &% &%r   c              #   H   K   	 	 t        |       # t        $ r Y y w xY wwr   )r   
IndexError)r+   r   s     r   heapiterz_TestHeapq.heapiterY  s.     	dm#  		s   " 	""c           	          t        d      t              } t        d      t              }| j                  j	                  t        d      d      j                         }| j                  |d d       } ||       |dd  D ]  }||d   kD  s |||        | j                  t        | j                  t        |                  t        |      dd         y )NTr.       
   r   rx   )r   r
   r   r*   choicerF   r|   r?   r@   rA   r   r   )r+   cfunc_heapifycfunc_heapreplacer_   r   r   s         r   
test_nbestz_TestHeapq.test_nbest`  s     +T*73.C.{;xxuT{D188:}}T#2Y'dIDd1g~!$-  	T]]4:%> ? &tST 2	4r   c                 :    t        d      t              } t        d      t              } t        d      t              }t	        d      D ]  }t        j                  dt
        j                        }| j                  | j                  j                  |d            }|dz  r|d d  } ||       n(| j                  |d   g      }|dd  D ]  } |||        t	        d      D 	cg c]
  }	 ||       }
}	| j                  |
t        |              y c c}	w )	NTr.   rz   r3   dtyper   r1   r   )r   r
   r   r   rF   r'   r   float64r?   r*   r   r@   r   )r+   r   r\   r^   trialvaluesr_   r   r   r   heap_sorteds              r   test_heapsortz_TestHeapq.test_heapsortq  s     +T*73+d+H5*T*733ZE YYq

3F==!<=DqyAwd#}}d1gY/ HD"4. %8=b	B	1=.	KB##K>   Cs   )Dc           	         t         } t        d      |      }| j                  | j                  j	                  t        d      d            }dD ]0  }| j                  t         |||            t        |      d |        2 y )NTr.   r   r   	r   r1   r6   r   rz   i  i  r   iL  )	r   r   r?   r*   r   rF   r@   rA   r   r+   rH   rI   r_   r   s        r   test_nsmallestz_TestHeapq.test_nsmallest  sk     "T"6*}}TXX__U4[$?@9A##Dq$$8&,r:JK :r   c           	      
   t         } t        d      |      }| j                  | j                  j	                  t        d      d            }dD ]2  }| j                  t         |||            t        |d      d |        4 y )NTr.   r   r   r   )reverse)	r    r   r?   r*   r   rF   r@   rA   r   r   s        r   test_nlargestz_TestHeapq.test_nlargest  sr     "T"6*}}TXX__U4[$?@9A##Dq$$8$*4$>r$BD :r   c           	         t         } t        d      |      }t        } t        d      |      }t        j                  dt        j
                        }| j                  | j                  j                  |d            }|d d } ||       |dd  D ]  } |||        | j                  t        | j                  t        |                  t        |      dd         y )NTr.   r   r   r   r   rx   )r   r   r
   r'   r   r   r?   r*   r   r@   rA   r   r   )	r+   pyfunc_heappushpopcfunc_heappushpoppyfunc_heapifyr   r   r_   r   r   s	            r   test_nbest_with_pushpopz"_TestHeapq.test_nbest_with_pushpop  s     ).C./AB *T*>: 4rzz2}}TXX__VT:;CRydIDdD)  	T]]4:%> ? &tST 2	4r   c                    t         } t        d      |      }| j                  dg      } ||d      }| j                  t	        |      |fdgdf       | j                  t        |d         t               | j                  t        |      t               | j                  dg      } ||d      }| j                  t	        |      |fdgdf       | j                  dg      } ||d      }| j                  t	        |      |fdgdf       y )	NTr.   g      ?g      $@r   r   r5   r=   )r   r   r?   r@   rA   typefloat)r+   rH   rI   hr   s        r   test_heappushpopz_TestHeapq.test_heappushpop  s     "T"6*MM3% !TNa!vsm<QqT
E2Q/MM2$!QKa!tQi8MM2$!RLa!tRj9r   c                    t         } t        d      |      }| j                          | j                         5 } |dd       d d d        d}| j	                  |t        j                               | j                         5 } || j                  g d      d       d d d        d}| j	                  |t        |j                               y # 1 sw Y   xY w# 1 sw Y   =xY w)NTr.   ri   r   rj   Fr   )r   r   rk   rl   rm   rn   ro   r?   rp   s        r   test_heappushpop_exceptionsz&_TestHeapq.test_heappushpop_exceptions  s    "T"6* 	!##%)R  & -c3q{{+,##%$--	*E2 & 8c3q{{+, &% &%r   )__name__
__module____qualname__r&   rN   rT   rb   rg   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__)r,   s   @r   r"   r"   &   s    -%,N9&6	'-(7(-3"-&0000-")
)
06-&4"?,	L
D4*:(-r   r"   c                       e Zd ZdZeZy)TestHeapqReflectedListzTest heapq with reflected listsN)r   r   r   __doc__rA   r?   r~   r   r   r   r     s
    )Hr   r   c                   (    e Zd ZdZej
                  Zy)TestHeapqTypedListzTest heapq with typed listsN)r   r   r   r   r   Listr?   r~   r   r   r   r     s    %zzHr   r   )heapqr	   rD   numpyr'   numbar   r   numba.tests.supportr   r   r
   r   r   r   r   r   r    r"   r   r   r~   r   r   <module>r      sb        9#&&%$r- r-jZ X r   