+
    BiH                     
   ^ RI t ^ RIt^ RIHt ^ RIHtHt ^ RIHtH	t	 ^ RI
Ht ^ RIHt ^ RIHt ^
tRt ! R	 R
]4      t]P&                  ! 4        ! R R] P(                  4      4       t]R8X  d   ] P.                  ! 4        R# R# )    N)Enum)BarrierLock)shufflerandint)threading_helper)run_concurrently
test_heapq  c                       ] tR t^t^t^tRtR# )Heap N)__name__
__module____qualname____firstlineno__MINMAX__static_attributes__r       :/usr/lib/python3.14/test/test_free_threading/test_heapq.pyr   r      s    
C
Cr   r   c                      a  ] tR t^t o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR t]R 4       t]R 4       t]R 4       t]R 4       tRtV tR# )	TestHeapqc                :    \         P                  ! 4       V n         R # N)r   TestHeapPython)selfs   &r   setUpTestHeapq.setUp   s    $335r   c                    \        \        \        4      4      p\        V4       \	        \
        P                  \        V3R 7       V P                  P                  V4       R# worker_funcnthreadsargsN)
listrangeOBJECT_COUNTr   r	   heapqheapifyNTHREADSr   check_invariant)r   heaps   & r   test_racing_heapifyTestHeapq.test_racing_heapify   sA    E,'(w	
 	''-r   c                l    . pR  p\        V\        V3R7       V P                  P                  V4       R# )c                 p    \        \        \        4      4       F  p\        P                  ! W4       K  	  R # r   )reversedr(   r)   r*   heappush)r.   items   & r   heappush_func5TestHeapq.test_racing_heappush.<locals>.heappush_func(   s"     |!45t* 6r   r#   N)r	   r,   r   r-   )r   r.   r6   s   &  r   test_racing_heappushTestHeapq.test_racing_heappush%   s3    	+ 	%w	
 	''-r   c                  a  S P                  \        \        P                  4      pS P	                  \        \
        ,          ^ 4       \        \
        ,          pV 3R lp\        V\
        W3R7       S P	                  \        V4      ^ 4       R# )r   c                    < . p\        V4       F*  p\        P                  ! V 4      pVP                  V4       K,  	  SP	                  SP                  V4      4       R # r   )r(   r*   heappopappend
assertTrueis_sorted_ascending)r.   	pop_count
local_list_r5   r   s   &&   r   heappop_func3TestHeapq.test_racing_heappop.<locals>.heappop_func8   sL    J9%}}T*!!$' &
 OOD44Z@Ar   r#   N)create_heapr)   r   r   assertEqualr,   r	   len)r   r.   per_thread_pop_countrC   s   f   r   test_racing_heappopTestHeapq.test_racing_heappop1   sm    dhh7 	0!4+x7	B 	$-	

 	TA&r   c                $  a  S P                  \        \        P                  4      pS P	                  RR\        4      pV 3R lp\        V\        W3R7       S P                  \        V4      \        4       S P                  P                  V4       R# )r   '  c                 l   < V F,  p\         P                  ! W4      pSP                  W28*  4       K.  	  R # r   )r*   heappushpopr>   )r.   pushpop_itemsr5   popped_itemr   s   &&  r   heappushpop_func;TestHeapq.test_racing_heappushpop.<locals>.heappushpop_funcL   s,    %#//; 34 &r   r#   NxrE   r)   r   r   create_random_listr	   r,   rF   rG   r   r-   )r   r.   rO   rQ   s   f   r   test_racing_heappushpop!TestHeapq.test_racing_heappushpopH   sp    dhh7//M	5
 	(&	

 	TL1''-r   c                   V P                  \        \        P                  4      pV P	                  RR\        4      pR p\        V\        W3R7       V P                  \        V4      \        4       V P                  P                  V4       R# )r   rL   c                 D    V F  p\         P                  ! W4       K  	  R # r   )r*   heapreplace)r.   replace_itemsr5   s   && r   heapreplace_func;TestHeapq.test_racing_heapreplace.<locals>.heapreplace_func]   s    %!!$- &r   r#   NrS   rT   )r   r.   r[   r\   s   &   r   test_racing_heapreplace!TestHeapq.test_racing_heapreplaceY   so    dhh7//M	. 	(&	

 	TL1''-r   c                    \        \        \        4      4      p\        V4       \	        \
        P                  \        V3R 7       V P                  P                  V4       R# r"   )
r'   r(   r)   r   r	   r*   heapify_maxr,   r   check_max_invariant)r   max_heaps   & r   test_racing_heapify_max!TestHeapq.test_racing_heapify_maxi   sD    l+,))HH;	
 	++H5r   c                l    . pR  p\        V\        V3R7       V P                  P                  V4       R# )c                 ^    \        \        4       F  p\        P                  ! W4       K  	  R # r   )r(   r)   r*   heappush_max)rc   r5   s   & r   heappush_max_func=TestHeapq.test_racing_heappush_max.<locals>.heappush_max_funcu   s    l+""82 ,r   r#   N)r	   r,   r   rb   )r   rc   ri   s   &  r   test_racing_heappush_max"TestHeapq.test_racing_heappush_maxr   s3    	3 	)HH;	
 	++H5r   c                  a  S P                  \        \        P                  4      pS P	                  \        \
        ,          ^ 4       \        \
        ,          pV 3R lp\        V\
        W3R7       S P	                  \        V4      ^ 4       R# )r   c                    < . p\        V4       F*  p\        P                  ! V 4      pVP                  V4       K,  	  SP	                  SP                  V4      4       R # r   )r(   r*   heappop_maxr=   r>   is_sorted_descending)rc   r@   rA   rB   r5   r   s   &&   r   heappop_max_func;TestHeapq.test_racing_heappop_max.<locals>.heappop_max_func   sN    J9%((2!!$' &
 OOD55jABr   r#   N)rE   r)   r   r   rF   r,   r	   rG   )r   rc   rH   rq   s   f   r   test_racing_heappop_max!TestHeapq.test_racing_heappop_max~   sm    ##L$((; 	0!4+x7	C 	(1	

 	X*r   c                $  a  S P                  \        \        P                  4      pS P	                  RR\        4      pV 3R lp\        V\        W3R7       S P                  \        V4      \        4       S P                  P                  V4       R# )r   rL   c                 l   < V F,  p\         P                  ! W4      pSP                  W28  4       K.  	  R # r   )r*   heappushpop_maxr>   )rc   rO   r5   rP   r   s   &&  r   heappushpop_max_funcCTestHeapq.test_racing_heappushpop_max.<locals>.heappushpop_max_func   s,    %#33HC 34 &r   r#   NrS   rE   r)   r   r   rU   r	   r,   rF   rG   r   rb   )r   rc   rO   rx   s   f   r   test_racing_heappushpop_max%TestHeapq.test_racing_heappushpop_max   sp    ##L$((;//M	5
 	,*	

 	X5++H5r   c                   V P                  \        \        P                  4      pV P	                  RR\        4      pR p\        V\        W3R7       V P                  \        V4      \        4       V P                  P                  V4       R# )r   rL   c                 D    V F  p\         P                  ! W4       K  	  R # r   )r*   heapreplace_max)rc   r[   r5   s   && r   heapreplace_max_funcCTestHeapq.test_racing_heapreplace_max.<locals>.heapreplace_max_func   s    %%%h5 &r   r#   NrS   rz   )r   rc   r[   r   s   &   r   test_racing_heapreplace_max%TestHeapq.test_racing_heapreplace_max   so    ##L$((;//M	6 	,*	

 	X5++H5r   c                   aaaaa R ^
uop. o\        V^,          4      o^ o\        4       oVVVVV3R lp\        W!^,          4       R# )i  c                  b  < S;_uu_ 4        Sp S^,          oRRR4       SP                  4        \        S4       FK  pX ^,          '       d0   \        P                  ! S^4       \        P                  ! S4       KA   S^ ,           KM  	  R#   + '       g   i     L|; i  \
         d     Kr  i ; i   N)waitr(   r*   r4   r<   
IndexError)xibarriercountllockns     r   worker2TestHeapq.test_lock_free_list_read.<locals>.worker   s    
 
 LLN1Xq55NN1a(MM!$!   & s   B=	BB	B.-B.N)r   r   r	   )r   	n_threadsr   r   r   r   r   r   s   &  @@@@@r   test_lock_free_list_read"TestHeapq.test_lock_free_list_read   sE    b9)a-(v	 	" 	Q/r   c           	        a  \         ;QJ d2    V 3R  l\        ^\        S 4      4       4       F  '       d   K   R# 	  R# ! V 3R  l\        ^\        S 4      4       4       4      # )c              3   X   <"   T F  pSV^,
          ,          SV,          8*  x  K!  	  R# 5ir   r   .0r   lsts   & r   	<genexpr>0TestHeapq.is_sorted_ascending.<locals>.<genexpr>   $     D1CA3q1u:Q'1C   '*FTallr(   rG   r   s   fr   r?   TestHeapq.is_sorted_ascending   D    
 sDq#c(1CDssDsDsDq#c(1CDDDr   c           	        a  \         ;QJ d2    V 3R  l\        ^\        S 4      4       4       F  '       d   K   R# 	  R# ! V 3R  l\        ^\        S 4      4       4       4      # )c              3   X   <"   T F  pSV^,
          ,          SV,          8  x  K!  	  R# 5ir   r   r   s   & r   r   1TestHeapq.is_sorted_descending.<locals>.<genexpr>   r   r   FTr   r   s   fr   rp   TestHeapq.is_sorted_descending   r   r   c                    \        \        \        4      4      p\        V4       V\        P
                  8X  d   \        P                  ! V4       V# \        P                  ! V4       V# r   )	r'   r(   r)   r   r   r   r*   r+   ra   )size	heap_kindr.   s   && r   rE   TestHeapq.create_heap   sN     E,'( MM$  d#r   c                X    \        V4       Uu. uF  p\        V ) V4      NK  	  up# u upi r   )r(   r   )abr   rB   s   &&& r   rU   TestHeapq.create_random_list   s(    
 ).d41A444s   'r
   N)r   r   r   r   r   r/   r8   rI   rV   r^   rd   rk   rs   r{   r   r   staticmethodr?   rp   rE   rU   r   __classdictcell__)__classdict__s   @r   r   r      s     6.
.'..". 6
6+.6"6 06 E E E E   5 5r   r   __main__)unittestr*   enumr   	threadingr   r   randomr   r   test.supportr   test.support.threading_helperr	   testr   r,   r)   r   requires_working_threadingTestCaser   r   mainr   r   r   <module>r      s{       # # ) :  4 
 ,,.[5!! [5 /[5| zMMO r   