Ë
    èÿæiÿ  ã                   ó²   — d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d„ Zd„ Zd„ Zd	„ Zd
„ Z G d„ de
«      Zedk(  r ej(                  «        yy)é    N)Únjit)Útypes)Úcaptured_stdoutÚTestCase)Únumpy_supportc                 ó�  — | j                   }|j                   }t        |«      D ]   }| |   }t        |«      D ]M  }||   }|xj                  |j                  |j                  z  |j                  z   |j                  z
  z  c_        ŒO |xj                  j                  z  c_        |xj                  |j                  z  c_        Œ¢ y)zbBase on https://github.com/numba/numba/issues/370

    Modified to add test-able side effect.
    N)ÚsizeÚrangeÚrowÚpÚcol)Úarr1Úarr2Ún1Ún2Úi1Úst1Úi2Úst2s           úw/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_recarray_usecases.pyÚusecase1r      s•   € ð
 
�‰€BØ	�‰€Bä�BŽiˆØ�2‰hˆÜ˜–)ˆBØ�r‘(ˆCØ�GŠG�s—u‘u˜sŸu™u‘} s§w¡wÑ.°·±Ñ8Ñ8ŽGð ð 	�Š�—‘‰�Ø�Š�3—7‘7ÑŽñ ó    c                 ó„   — t        |«      D ]2  }| |   }t        |j                  |j                  |j                  «       Œ4 y)zD
    Base on test1 of https://github.com/numba/numba/issues/381
    N©r
   ÚprintÚf1Ús1Úf2©ÚxÚNÚkÚys       r   Úusecase2r$      s3   € ô �1ŽXˆØˆa‰DˆÜˆa�d‰d�A—D‘D˜!Ÿ$™$Õñ r   c                 óŒ   — t        |«      D ]6  }t        | j                  |   | j                  |   | j                  |   «       Œ8 y)zD
    Base on test2 of https://github.com/numba/numba/issues/381
    Nr   ©r    r!   r"   s      r   Úusecase3r'   '   s6   € ô �1ŽXˆÜˆa�d‰d�1‰g�q—t‘t˜A‘w §¡ Q¡Õ(ñ r   c                 óŠ   — t        |«      D ]5  }| |   }t        |j                  | j                  |   |j                  «       Œ7 y)zD
    Base on test3 of https://github.com/numba/numba/issues/381
    Nr   r   s       r   Úusecase4r)   /   s7   € ô �1ŽXˆØˆa‰DˆÜˆa�d‰d�A—D‘D˜‘G˜QŸT™TÕ"ñ r   c                 óŒ   — t        |«      D ]6  }t        | |   j                  | j                  |   | |   j                  «       Œ8 y)zD
    Base on test4 of https://github.com/numba/numba/issues/381
    Nr   r&   s      r   Úusecase5r+   8   s6   € ô �1ŽXˆÜˆa�‰d�g‰g�q—t‘t˜A‘w  !¡§¡Õ(ñ r   c                   ó<   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚTestRecordUsecasec                 óx   — g d¢}t        j                  |«      | _        t        j                  |d¬«      | _        y )N))r   ú<f8)r   ú|S3)r   r/   T)Úalign)ÚnpÚdtypeÚunaligned_dtypeÚaligned_dtype)ÚselfÚfieldss     r   ÚsetUpzTestRecordUsecase.setUpB   s+   € Ú>ˆÜ!Ÿx™x¨Ó/ˆÔÜŸX™X f°DÔ9ˆÕr   c                 óP  — t         }t        j                  dt        j                  fdt        j                  fdt        j                  fg«      }t	        j
                  |«      } t        |d d  |d d  f«      |«      }t        j                  d|¬«      }t        j                  d|¬«      }t        j                  |j                  «      dz   |_
        t        j                  |j                  «      dz   |_        t        j                  |j                  «      dz   |_        t        j                  |j                  «      dz   |_
        t        j                  |j                  «      dz   |_        t        j                  |j                  «      dz   |_        |j                  «       }|j                  «       }|j                  «       }	|j                  «       }
 |||«        ||	|
«       t        j                  j                  ||	«       t        j                  j                  ||
«       y )Nr   r   r   é   ©r3   é   )r   r2   r3   Úfloat64r   Ú
from_dtyper   ÚrecarrayÚaranger	   r   r   r   ÚcopyÚtestingÚassert_equal)r6   ÚpyfuncÚmystruct_dtÚmystructÚcfuncr   r   Úexpect1Úexpect2Úgot1Úgot2s              r   Útest_usecase1zTestRecordUsecase.test_usecase1G   s�  € Üˆô —h‘h ¤b§j¡jÐ 1Ø!¤2§:¡:Ð.Ø!¤2§:¡:Ð.ð 0ó 1ˆô !×+Ñ+¨KÓ8ˆà0”�h™q�k 8©A ;Ð/Ó0°Ó8ˆä�k‰k˜! ;Ô/ˆÜ�k‰k˜! ;Ô/ˆä—	‘	˜#Ÿ(™(Ó# aÑ'ˆŒÜ—)‘)˜CŸH™HÓ%¨Ñ)ˆŒÜ—)‘)˜CŸH™HÓ%¨Ñ)ˆŒä—	‘	˜#Ÿ(™(Ó# aÑ'ˆŒÜ—)‘)˜CŸH™HÓ%¨Ñ)ˆŒÜ—)‘)˜CŸH™HÓ%¨Ñ)ˆŒà—(‘(“*ˆØ—(‘(“*ˆà�|‰|‹~ˆØ�|‰|‹~ˆáˆw˜Ô Ùˆd�DÔä
�
‰
×Ñ ¨Ô.Ü
�
‰
×Ñ ¨Õ.r   c                 ó  — d}t        j                  ||¬«      }t        j                  |«      |_        t        j                  d|dz   «      |_        t        j
                  dg|j                  d   z  d¬«      |_        |S )Né   r;   é   Úabcr   r0   )r2   r?   r@   r   r   ÚarrayÚshaper   )r6   r3   r!   Úas       r   Ú_setup_usecase2to5z$TestRecordUsecase._setup_usecase2to5i   sb   € ØˆÜ�K‰K˜ Ô'ˆÜ�y‰y˜‹|ˆŒÜ�y‰y˜˜A ™EÓ"ˆŒÜ�x‰x˜˜ !§'¡'¨!¡*Ñ,°EÔ:ˆŒØˆr   c                 óø  — | j                  |«      }t        j                  |«      } t        |d d  t        j
                  f«      |«      }t        «       5   ||t        |«      «       t        j                  j                  «       }d d d «       t        «       5   ||t        |«      «       t        j                  j                  «       }d d d «       | j                  «       y # 1 sw Y   Œ_xY w# 1 sw Y   Œ(xY w©N)rT   r   r>   r   r   Úintpr   ÚlenÚsysÚstdoutÚgetvalueÚassertEqual)r6   rD   r3   rQ   Úrecord_typerG   ÚexpectÚgots           r   Ú_test_usecase2to5z#TestRecordUsecase._test_usecase2to5q   s¼   € Ø×'Ñ'¨Ó.ˆÜ#×.Ñ.¨uÓ5ˆØ2”�k¡!�n¤e§j¡jÐ1Ó2°6Ó:ˆäÕÙ�5œ#˜e›*Ô%Ü—Z‘Z×(Ñ(Ó*ˆF÷ ô ÕÙ�%œ˜U›Ô$Ü—*‘*×%Ñ%Ó'ˆC÷ ð 	×Ñ˜ Õ%÷ Ðú÷ Ðús   Á1C$Â1C0Ã$C-Ã0C9c                 ó„   — | j                  t        | j                  «       | j                  t        | j                  «       y rV   )r`   r$   r4   r5   ©r6   s    r   Útest_usecase2zTestRecordUsecase.test_usecase2€   ó.   € Ø×Ñœx¨×)=Ñ)=Ô>Ø×Ñœx¨×);Ñ);Õ<r   c                 ó„   — | j                  t        | j                  «       | j                  t        | j                  «       y rV   )r`   r'   r4   r5   rb   s    r   Útest_usecase3zTestRecordUsecase.test_usecase3„   rd   r   c                 ó„   — | j                  t        | j                  «       | j                  t        | j                  «       y rV   )r`   r)   r4   r5   rb   s    r   Útest_usecase4zTestRecordUsecase.test_usecase4ˆ   rd   r   c                 ó„   — | j                  t        | j                  «       | j                  t        | j                  «       y rV   )r`   r+   r4   r5   rb   s    r   Útest_usecase5zTestRecordUsecase.test_usecase5Œ   rd   r   N)Ú__name__Ú
__module__Ú__qualname__r8   rL   rT   r`   rc   rf   rh   rj   © r   r   r-   r-   @   s+   „ ò:ò
 /òDò&ò=ò=ò=ó=r   r-   Ú__main__)rY   ÚunittestÚnumpyr2   Únumbar   Ú
numba.corer   Únumba.tests.supportr   r   Únumba.npr   r   r$   r'   r)   r+   r-   rk   Úmainrn   r   r   Ú<module>rw      s\   ðÛ 
Û ã å Ý ß 9Ý "òò$ ò)ò#ò)ôN=˜ô N=ðb ˆzÒØ€H‡M�M…Oð r   