§
    ƒÛgv  ã                   ó¾   — 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	m
Z
 d dl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        ¦   «          dS dS )é    N)Útypes)Úcompile_isolated)Úcaptured_stdoutÚtagÚTestCase)Únumpy_supportc                 ó8  — | j         }|j         }t          |¦  «        D ]{}| |         }t          |¦  «        D ]7}||         }|xj        |j        |j        z  |j        z   |j        z
  z  c_        Œ8|xj        |j        z  c_        |xj        |j        z  c_        Œ|dS )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           úX/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_recarray_usecases.pyÚusecase1r      s¥   € ð
 
Œ€BØ	Œ€Bå�B‰iŒið ð ˆØ�2ŒhˆÝ˜‘)”)ð 	9ð 	9ˆBØ�r”(ˆCØˆGŒG�s”u˜sœu‘} s¤wÑ.°´Ñ8Ñ8ˆGŒGˆGàˆŒ�”‰ˆŒØˆŒ�3”7ÑˆŒˆðð ó    c                 óz   — t          |¦  «        D ]*}| |         }t          |j        |j        |j        ¦  «         Œ+dS )zD
    Base on test1 of https://github.com/numba/numba/issues/381
    N©r   ÚprintÚf1Ús1Úf2©ÚxÚNÚkÚys       r   Úusecase2r%      sG   € õ �1‰XŒXð  ð  ˆØˆaŒDˆÝˆaŒd�A”D˜!œ$ÑÔÐÐð ð  r   c                 óŽ   — t          |¦  «        D ]4}t          | j        |         | j        |         | j        |         ¦  «         Œ5dS )zD
    Base on test2 of https://github.com/numba/numba/issues/381
    Nr   ©r!   r"   r#   s      r   Úusecase3r(   '   sJ   € õ �1‰XŒXð )ð )ˆÝˆaŒd�1Œg�q”t˜A”w ¤ Q¤Ñ(Ô(Ð(Ð(ð)ð )r   c                 ó†   — t          |¦  «        D ]0}| |         }t          |j        | j        |         |j        ¦  «         Œ1dS )zD
    Base on test3 of https://github.com/numba/numba/issues/381
    Nr   r    s       r   Úusecase4r*   /   sK   € õ �1‰XŒXð #ð #ˆØˆaŒDˆÝˆaŒd�A”D˜”G˜QœTÑ"Ô"Ð"Ð"ð#ð #r   c                 óŽ   — t          |¦  «        D ]4}t          | |         j        | j        |         | |         j        ¦  «         Œ5dS )zD
    Base on test4 of https://github.com/numba/numba/issues/381
    Nr   r'   s      r   Úusecase5r,   8   sJ   € õ �1‰XŒXð )ð )ˆÝˆa�ŒdŒg�q”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
d	S )
ÚTestRecordUsecasec                 óv   — g d¢}t          j        |¦  «        | _        t          j        |d¬¦  «        | _        d S )N))r   ú<f8)r   ú|S3)r   r0   T)Úalign)ÚnpÚdtypeÚunaligned_dtypeÚaligned_dtype)ÚselfÚfieldss     r   ÚsetUpzTestRecordUsecase.setUpB   s<   € Ø>Ð>Ð>ˆÝ!œx¨Ñ/Ô/ˆÔÝœX f°DÐ9Ñ9Ô9ˆÔÐÐr   c                 ó8  — t           }t          j        dt          j        fdt          j        fdt          j        fg¦  «        }t	          j        |¦  «        }t          ||d d …         |d d …         f¦  «        }|j        }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   |_        |                     ¦   «         }|                     ¦   «         }	|                     ¦   «         }
|	                     ¦   «         } |||	¦  «          ||
|¦  «         t          j                             ||
¦  «         t          j                             |	|¦  «         d S )Nr   r   r   é   ©r4   é   )r   r3   r4   Úfloat64r   Ú
from_dtyper   Úentry_pointÚrecarrayÚaranger
   r   r   r   ÚcopyÚtestingÚassert_equal)r7   ÚpyfuncÚmystruct_dtÚmystructÚcresÚcfuncr   r   Úexpect1Úexpect2Úgot1Úgot2s               r   Útest_usecase1zTestRecordUsecase.test_usecase1G   sÀ  € Ýˆõ ”h ¥b¤jÐ 1Ø!¥2¤:Ð.Ø!¥2¤:Ð.ð 0ñ 1ô 1ˆõ !Ô+¨KÑ8Ô8ˆå ¨°!°!°!¬°h¸q¸q¸q´kÐ(BÑCÔCˆØÔ ˆåŒk˜! ;Ð/Ñ/Ô/ˆÝŒk˜! ;Ð/Ñ/Ô/ˆå”	˜#œ(Ñ#Ô# aÑ'ˆŒÝ”)˜CœHÑ%Ô%¨Ñ)ˆŒÝ”)˜CœHÑ%Ô%¨Ñ)ˆŒå”	˜#œ(Ñ#Ô# aÑ'ˆŒÝ”)˜CœHÑ%Ô%¨Ñ)ˆŒÝ”)˜Cœ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   r1   )r3   rA   rB   r   r   ÚarrayÚshaper   )r7   r4   r"   Úas       r   Ú_setup_usecase2to5z$TestRecordUsecase._setup_usecase2to5j   si   € ØˆÝŒK˜ Ð'Ñ'Ô'ˆÝŒy˜‰|Œ|ˆŒÝŒy˜˜A ™EÑ"Ô"ˆŒÝŒx˜˜ !¤'¨!¤*Ñ,°EÐ:Ñ:Ô:ˆŒØˆr   c                 óN  — |                       |¦  «        }t          j        |¦  «        }t          ||d d …         t          j        f¦  «        }|j        }t          ¦   «         5   ||t          |¦  «        ¦  «         t          j
                             ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          ¦   «         5   ||t          |¦  «        ¦  «         t          j
                             ¦   «         }d d d ¦  «         n# 1 swxY w Y   |                      ||¦  «         d S ©N)rW   r   r?   r   r   Úintpr@   r   ÚlenÚsysÚstdoutÚgetvalueÚassertEqual)	r7   rF   r4   rT   Úrecord_typerI   rJ   ÚexpectÚgots	            r   Ú_test_usecase2to5z#TestRecordUsecase._test_usecase2to5r   sƒ  € Ø×'Ò'¨Ñ.Ô.ˆÝ#Ô.¨uÑ5Ô5ˆÝ ¨°Q°Q°Q¬½¼Ð(DÑEÔEˆØÔ ˆåÑÔð 	+ð 	+ØˆF�5�#˜e™*œ*Ñ%Ô%Ð%Ý”Z×(Ò(Ñ*Ô*ˆFð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+õ ÑÔð 	(ð 	(ØˆE�%�˜U™œÑ$Ô$Ð$Ý”*×%Ò%Ñ'Ô'ˆCð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	×Ò˜ Ñ%Ô%Ð%Ð%Ð%s$   Á#8B'Â'B+Â.B+Ã 8DÄDÄDc                 ó†   — |                       t          | j        ¦  «         |                       t          | j        ¦  «         d S rY   )rc   r%   r5   r6   ©r7   s    r   Útest_usecase2zTestRecordUsecase.test_usecase2‚   ó:   € Ø×Ò�x¨Ô)=Ñ>Ô>Ð>Ø×Ò�x¨Ô);Ñ<Ô<Ð<Ð<Ð<r   c                 ó†   — |                       t          | j        ¦  «         |                       t          | j        ¦  «         d S rY   )rc   r(   r5   r6   re   s    r   Útest_usecase3zTestRecordUsecase.test_usecase3†   rg   r   c                 ó†   — |                       t          | j        ¦  «         |                       t          | j        ¦  «         d S rY   )rc   r*   r5   r6   re   s    r   Útest_usecase4zTestRecordUsecase.test_usecase4Š   rg   r   c                 ó†   — |                       t          | j        ¦  «         |                       t          | j        ¦  «         d S rY   )rc   r,   r5   r6   re   s    r   Útest_usecase5zTestRecordUsecase.test_usecase5Ž   rg   r   N)Ú__name__Ú
__module__Ú__qualname__r9   rO   rW   rc   rf   ri   rk   rm   © r   r   r.   r.   @   s�   € € € € € ð:ð :ð :ð
!/ð !/ð !/ðFð ð ð&ð &ð &ð =ð =ð =ð=ð =ð =ð=ð =ð =ð=ð =ð =ð =ð =r   r.   Ú__main__)r\   Únumpyr3   Ú
numba.corer   Únumba.core.compilerr   Únumba.tests.supportr   r   r   ÚunittestÚnumba.npr   r   r%   r(   r*   r,   r.   rn   Úmainrq   r   r   ú<module>rz      s  ðØ 
€
€
€
à Ð Ð Ð à Ð Ð Ð Ð Ð Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø €€€Ø "Ð "Ð "Ð "Ð "Ð "ðð ð ð$ ð  ð  ð)ð )ð )ð#ð #ð #ð)ð )ð )ðP=ð P=ð P=ð P=ð P=˜ñ P=ô P=ð P=ðf ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   