Ë
    èÿæiÃ  ã                   ó  — d dl Z d dlZd dlmZmZ d dlmZmZ d dl	m
Z
 d dlmZmZ d dlmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ  G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Zy)é    N)ÚTestCaseÚcaptured_stdout)ÚnjitÚ	literally)Útypes)Útuple_setitemÚbuild_full_slice_tuple)Úto_fixed_tupleÚempty_inferred)Úmemcpy_region)Údump_refcount)Útrailing_zerosÚleading_zeros)ÚTypingErrorc                   ó   — e Zd ZdZd„ Zd„ Zy)ÚTestTupleIntrinsicz!Tests for numba.unsafe.tuple
    c           
      óà  — t         d„ «       }t        j                  d«       t        d«      D �]4  }t        j                  dd«      }t        t        |«      D �cg c]  }t        j                  d|«      ‘Œ c}«      }t        t        |«      D �cg c]  }t        j                  dd«      ‘Œ c}«      }t        t        t        |«      «      «      }t        j                  |«       t        |«      }t        |«      }t        j                  |«      }	||	t        j                  |«      <    ||||«      \  }
}| j                  |
|«       | j                  |t        |	«      «       �Œ7 y c c}w c c}w )Nc                 óP   — | }t        ||«      D ]  \  }}t        |||«      }Œ | |fS ©N)Úzipr   )ÚtupÚidxsÚvalsÚout_tupÚiÚvs         úw/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_unsafe_intrinsics.pyÚfooz2TestTupleIntrinsic.test_tuple_setitem.<locals>.foo   s3   € àˆGÜ˜D $ž‘��1Ü'¨°°AÓ6‘ð (à˜�<Ðó    é{   é   é   é
   r   )r   ÚrandomÚseedÚrangeÚrandintÚtupleÚlistÚlenÚshuffleÚnpÚasarrayÚassertEqual)Úselfr   Ú_Únr   r   r   r   Ú
expect_tupÚ
expect_outÚgot_tupÚgot_outs               r   Útest_tuple_setitemz%TestTupleIntrinsic.test_tuple_setitem   s#  € Ü	ñ	 ó 
ð	 ô 	�‰�CÔÜ�r—ˆAä—‘˜q "Ó%ˆAÜ´u¸Q´xÓ@±x°!œŸ™¨¨1Õ-°xÑ@ÓAˆCÜ¼%À¼(ÓC¹(°Qœ&Ÿ.™.¨¨RÕ0¸(ÑCÓDˆDÜœœc $›iÓ(Ó)ˆDÜ�N‰N˜4Ô Ü˜“;ˆDä˜s›ˆJÜŸ™ JÓ/ˆJØ+/ˆJ”r—z‘z $Ó'Ñ(á" 3¨¨dÓ3ÑˆG�Wà×Ñ˜W jÔ1Ø×Ñ˜W¤e¨JÓ&7Ö8ñ! ùò AùÚCs   ÁE&
ÂE+
c           	      óŠ  — t         d„ «       }t        dd«      D ]œ  }t        j                  j                  t        j                  |«      dz   «      }t        d|dz   «      D ])  }t        j
                  j                  | |||«      «       Œ+ | j                  t        «      5   |||dz   «       d d d «       Œž y # 1 sw Y   Œ©xY w)Nc                 ó0   — | t        t        |«      «         S r   )r	   r   )Úar1   s     r   Úfull_slice_arrayz=TestTupleIntrinsic.test_slice_tuple.<locals>.full_slice_array.   s   € ð Ô+¬I°a«LÓ9Ñ:Ð:r   r"   é   )	r   r&   r,   r$   ÚarangeÚtestingÚassert_array_equalÚassertRaisesr   )r/   r:   r1   r9   r   s        r   Útest_slice_tuplez#TestTupleIntrinsic.test_slice_tuple-   s¤   € Ü	ñ	;ó 
ð	;ô �q˜!–ˆAÜ—	‘	× Ñ ¤§¡¨1£°Ñ!1Ó2ˆAÜ˜1˜a !™e–_�Ü—
‘
×-Ñ-¨aÑ1AÀ!ÀQÓ1GÕHð %à×"Ñ"¤;Õ/á   A¨¡EÔ*÷ 0Ð/ñ	 ÷ 0Ð/ús   Â!B9Â9C	N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r6   r@   © r   r   r   r      s   „ ñò9ó6+r   r   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚTestNdarrayIntrinsicz#Tests for numba.unsafe.ndarray
    c           	      ó¢  ‡— dŠt         ˆfd„«       }t        j                  j                  d«       t	        d«      D ]š  }t        j                  j                  d«      } ||«      \  }}}}| j                  |t        |d d «      «       | j                  |t        |d d «      «       | j                  |t        |d d «      «       | j                  |d«       Œœ | j                  t        «      5 } |t        j                  j                  d«      «       d d d «       | j                  d	t        j                  «      «       t         d
„ «       }	| j                  t        «      5 } |	t        j                  j                  d«      d«       d d d «       d}
| j                  |
t        |j                  «      «       y # 1 sw Y   Œ¦xY w# 1 sw Y   Œ=xY w)Nr;   c                 ór   •— t        | d¬«      }t        | d«      }t        | ‰«      }t        | d«      }||||fS )Nr"   )Úlengthé   r   ©r
   )Úarrayr9   ÚbÚcÚdÚconsts        €r   r   z5TestNdarrayIntrinsic.test_to_fixed_tuple.<locals>.fooB   sA   ø€ ä˜u¨QÔ/ˆAÜ˜u aÓ(ˆAÜ˜u eÓ,ˆAÜ˜u aÓ(ˆAØ�a˜˜A�:Ðr   r    r#   r"   rK   rE   ©r"   rK   zNot supported on array.ndim=2c                 ó   — t        | |«      S r   rL   )rM   rJ   s     r   Útuple_with_lengthzCTestNdarrayIntrinsic.test_to_fixed_tuple.<locals>.tuple_with_length]   s   € ä! %¨Ó0Ð0r   z$*length* argument must be a constant)r   r,   r$   r%   r&   r.   r(   r?   r   ÚassertInÚstrÚ	exception)r/   r   r0   Úarrr9   rN   rO   rP   ÚraisesrT   Ú	expectmsgrQ   s              @r   Útest_to_fixed_tuplez(TestNdarrayIntrinsic.test_to_fixed_tuple?   s|  ø€ Øˆä	ó	ó 
ð	ô 	�	‰	�‰�sÔÜ�r–ˆAä—)‘)×"Ñ" 1Ó%ˆCá˜S›‰JˆAˆq�!�Qà×Ñ˜Q¤ c¨"¨1 g£Ô/Ø×Ñ˜Q¤ c¨"¨1 g£Ô/Ø×Ñ˜Q¤ c¨"¨1 g£Ô/Ø×Ñ˜Q Õ#ð ð ×Ñœ{Ô+¨vÙ”—	‘	× Ñ  Ó(Ô)÷ ,à�‰Ð5Ü˜&×*Ñ*Ó+ô	-ô 
ñ	1ó 
ð	1ð ×Ñœ{Ô+¨vÙœbŸi™i×.Ñ.¨qÓ1°1Ô5÷ ,à:ˆ	Ø�‰�i¤ V×%5Ñ%5Ó!6Õ7÷ ,Ð+ú÷ ,Ð+ús   Ã.&F9Å"'GÆ9GÇGc                 óœ   — t         d„ «       } |«       }t        j                  dgdz  «      }t        j                  j	                  ||«       y )Nc                  ób   — t        d«      } d}t        t        | «      «      D ]
  }|dz   | |<   Œ | S ©N)r#   gš™™™™™ñ?rK   )r   r&   r*   ©ÚSr9   r   s      r   Úfuncz;TestNdarrayIntrinsic.test_issue_3586_variant1.<locals>.funcg   s5   € ä˜uÓ%ˆAØˆAÜœ3˜q›6–]�Ø˜1‘u��!’ð #àˆHr   çÍÌÌÌÌÌ@r#   ©r   r,   r-   r=   r>   ©r/   ra   ÚgotÚexpects       r   Útest_issue_3586_variant1z-TestNdarrayIntrinsic.test_issue_3586_variant1f   óE   € Ü	ñ	ó 
ð	ñ ‹fˆÜ—‘˜S˜E B™JÓ'ˆÜ
�
‰
×%Ñ% c¨6Õ2r   c                 óœ   — t         d„ «       } |«       }t        j                  dgdz  «      }t        j                  j	                  ||«       y )Nc                  ód   — t        d«      } d}t        | j                  «      D ]
  }|dz   | |<   Œ | S r^   )r   r&   Úsizer_   s      r   ra   z;TestNdarrayIntrinsic.test_issue_3586_variant2.<locals>.funct   s5   € ä˜uÓ%ˆAØˆAÜ˜1Ÿ6™6–]�Ø˜1‘u��!’ð #àˆHr   rb   r#   rc   rd   s       r   Útest_issue_3586_variant2z-TestNdarrayIntrinsic.test_issue_3586_variant2s   rh   r   N)rA   rB   rC   rD   r[   rg   rl   rE   r   r   rG   rG   <   s   „ ñò%8òN3ó3r   rG   c                   ó   — e Zd ZdZd„ Zy)ÚTestBytesIntrinsicz!Tests for numba.unsafe.bytes
    c                 ó  — t         d„ «       }t        j                  dt        j                  ¬«      }t        j                  dt        j                  ¬«      } ||d|dd«       g d¢}t        j
                  j                  ||«       y )Nc                 ót   — t        | j                  j                  ||j                  j                  ||d«       y )Nr"   )r   ÚctypesÚdata)ÚdstÚ	dst_indexÚsrcÚ	src_indexÚnbytess        r   r   z2TestBytesIntrinsic.test_memcpy_region.<locals>.foo…   s*   € ô ˜#Ÿ*™*Ÿ/™/¨9ØŸ*™*Ÿ/™/¨9°f¸aõAr   r#   )Údtypeé   r"   é   )
r   r   r   r   r"   rK   r;   ry   rz   r   )r   r,   ÚzerosÚint8r<   r=   r>   )r/   r   rP   ÚsÚexpecteds        r   Útest_memcpy_regionz%TestBytesIntrinsic.test_memcpy_region„   sk   € Ü	ñ	Aó 
ð	Aô
 �H‰H�RœrŸw™wÔ'ˆÜ�I‰I�b¤§¡Ô(ˆñ 	ˆAˆq�!�Q˜Ôâ1ˆÜ
�
‰
×%Ñ% a¨Õ2r   N)rA   rB   rC   rD   r   rE   r   r   rn   rn   �   s   „ ñó3r   rn   c                   ó   — e Zd Zd„ Zy)ÚTestRefCountc                 ó‚  — t         d„ «       }t        «       5 } |«        d d d «       j                  «       }d}t        j                  d d d…   }t        j
                  j                  |gdz  «      }| j                  |j                  |«      |«       | j                  |j                  |«      |«       y # 1 sw Y   Œ—xY w)Nc                  ób   — t        j                  d«      } | | f}t        | «       t        |«       y )Nr#   )r,   Úonesr   )r9   rN   s     r   Úuse_dump_refcountz:TestRefCount.test_dump_refcount.<locals>.use_dump_refcount—   s(   € ä—‘˜“ˆAØ�A�ˆAÜ˜!ÔÜ˜!Õr   zdump refct of {}r"   rK   )	r   r   Úgetvaluer   Úfloat64ÚTupleÚ
from_typesrU   Úformat)r/   r…   ÚstreamÚoutputÚpatÚarytyÚtuptys          r   Útest_dump_refcountzTestRefCount.test_dump_refcount–   sŸ   € Ü	ñ	ó 
ð	ô Ô &ÙÔ÷ ð —‘Ó"ˆà ˆÜ—‘™c ˜cÑ"ˆÜ—‘×&Ñ&¨ w°¡{Ó3ˆØ�‰�c—j‘j Ó'¨Ô0Ø�‰�c—j‘j Ó'¨Õ0÷ Ðús   —B5Â5B>N)rA   rB   rC   r�   rE   r   r   r�   r�   •   s   „ ó1r   r�   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚTestZeroCountsc           
      ó¶  — t        d„ «      }t        d„ «      }g d¢}t        j                  D ]Ü  }| j                   | |d«      «       | |d«      «      cxk(  xr |j                  k(  nc «       t        |j                  «      D ];  } |d|z  «      }| j                   ||«       ||«      z   dz   |j                  «       Œ= |D ]A  }| j                   | ||«      «      d«       | j                   | ||dz   «      «      d«       ŒC ŒÞ t        j                  D �]:  }| j                   | |d«      «       | |d«      «      cxk(  xr |j                  k(  nc «       t        |j                  dz
  «      D ]s  } |d|z  «      }| j                   ||«       ||«      z   dz   |j                  «       | j                   || «      d«       | j                   ||«       || «      «       Œu |D ]c  }|j                  |cxk  r|j                  k  sn Œ%| j                   | ||«      «      d«       | j                   | ||dz   «      «      d«       Œe �Œ= y )Nc                 ó   — t        | «      S r   )r   ©Úxs    r   Ú<lambda>z0TestZeroCounts.test_zero_count.<locals>.<lambda>­   s	   € œM¨!Ô,r   c                 ó   — t        | «      S r   )r   r•   s    r   r—   z0TestZeroCounts.test_zero_count.<locals>.<lambda>®   s	   € œN¨1Ô-r   )rK   é*   é~   é€   r   rK   r"   )r   r   Úunsigned_domainÚ
assertTrueÚbitwidthr&   r.   ÚassertGreaterÚsigned_domainÚminvalÚmaxval)r/   ÚlzÚtzÚevensÚTr   Úvalr1   s           r   Útest_zero_countzTestZeroCounts.test_zero_count¬   së  € ÜÑ,Ó-ˆÜÑ-Ó.ˆâ!ˆä×&Ô&ˆAØ�O‰O™B™q ›t›H©©1¨Q«4«Ö>°A·J±JÔ>Ô?Ü˜1Ÿ:™:Ö&�Ù˜˜Q™“i�Ø× Ñ ¡ C£©2¨c«7Ñ!2°QÑ!6¸¿
¹
ÕCð 'ó �Ø×"Ñ"¡2¡a¨£d£8¨QÔ/Ø× Ñ ¡¡A a¨!¡e£H£¨qÕ1ñ ð 'ô ×$Õ$ˆAØ�O‰O™B™q ›t›H©©1¨Q«4«Ö>°A·J±JÔ>Ô?Ü˜1Ÿ:™:¨™>Ö*�Ù˜˜Q™“i�Ø× Ñ ¡ C£©2¨c«7Ñ!2°QÑ!6¸¿
¹
ÔCØ× Ñ ¡ S D£¨1Ô-Ø× Ñ ¡ C£©"¨c¨T«(Õ3ð	 +ó
 �Ø—x‘x 1Ô0¨¯©Ô0ØØ×"Ñ"¡2¡a¨£d£8¨QÔ/Ø× Ñ ¡¡A a¨!¡e£H£¨qÕ1ò	 ñ %r   c                 ó®  ‡ ‡‡‡— t        ˆfd„«      Š‰j                  Št        d„ t        j                  «      }t        |t        ¬«      D ]c  }‰ j                  t        «      5 } ‰ |d«      «       d d d «       ‰ j                  dj                  ‰|«      t        j                  «      «       Œe ˆˆˆ fd„} |dd«        |d	d
«       y # 1 sw Y   ŒZxY w)Nc                  ó   •—  ‰| Ž S r   rE   )r–   ra   s    €r   r—   z0TestZeroCounts.check_error_msg.<locals>.<lambda>É   s	   ø€ ¡ a¡r   c                 ó8   — t        | t        j                  «       S r   )Ú
isinstancer   ÚIntegerr•   s    r   r—   z0TestZeroCounts.check_error_msg.<locals>.<lambda>Í   s   € œ* Q¬¯©Ó6Ñ6r   )ÚkeyrK   z;{} is only defined for integers, but value passed was '{}'.c                 óØ   •— ‰j                  t        t        f«      5 } ‰| Ž  d d d «       ‰j                  dj	                  ‰«      t        j                  «      «       y # 1 sw Y   Œ>xY w)Nz{}() )r?   r   Ú	TypeErrorrU   rŠ   rV   rW   )ÚargsÚstringÚeÚcfuncÚ	func_namer/   s      €€€r   Úcheckz-TestZeroCounts.check_error_msg.<locals>.checkÙ   sQ   ø€ Ø×"Ñ"¤K´Ð#;Ô<ÀÙ�t‘÷ =à�M‰MØ—‘˜yÓ)Ü�A—K‘KÓ õ÷ =Ð<ús   �A Á A)rR   z-takes 2 positional arguments but 3 were givenrE   z&missing 1 required positional argument)r   Ú_nameÚfilterr   Únumber_domainÚsortedrV   r?   r   rU   rŠ   rW   )r/   ra   Úunsupported_typesÚtypr³   r¶   r´   rµ   s   ``    @@r   Úcheck_error_msgzTestZeroCounts.check_error_msgÈ   s®   û€ ÜÓ(Ó)ˆØ—J‘Jˆ	ä"Ù6¼×8KÑ8Kó
Ðô Ð+´×5ˆCØ×"Ñ"¤;Ô/°1Ù‘c˜!“f”÷ 0à�M‰MØMß‘˜	 3Ó'Ü�A—K‘KÓ õð 6ö	ñ 	ˆfÐEÔFÙˆbÐ:Õ;÷% 0Ð/ús   Á#CÃC	c                 ó.   — | j                  t        «       y r   )r½   r   ©r/   s    r   Útest_trailing_zeros_errorz(TestZeroCounts.test_trailing_zeros_errorä   s   € Ø×Ñœ^Õ,r   c                 ó.   — | j                  t        «       y r   )r½   r   r¿   s    r   Útest_leading_zeros_errorz'TestZeroCounts.test_leading_zeros_errorç   s   € Ø×Ñœ]Õ+r   N)rA   rB   rC   r¨   r½   rÀ   rÂ   rE   r   r   r’   r’   «   s   „ ò2ò8<ò8-ó,r   r’   )r$   Únumpyr,   Únumba.tests.supportr   r   Únumbar   r   Ú
numba.corer   Únumba.cpython.unsafe.tupler   r	   Únumba.np.unsafe.ndarrayr
   r   Únumba.core.unsafe.bytesr   Únumba.core.unsafe.refcountr   Únumba.cpython.unsafe.numbersr   r   Únumba.core.errorsr   r   rG   rn   r�   r’   rE   r   r   Ú<module>rÍ      sf   ðÛ Û ç 9ß !Ý ß Lß BÝ 1Ý 4ß FÝ )ô*+˜ô *+ôZB3˜8ô B3ôJ3˜ô 3ô(1�8ô 1ô,=,�Xõ =,r   