§
    ƒÛgj"  ã                   óF  — d dl Z d dlZd dlmZ d dlmZmZmZ d dl	Z	 ed¬¦  «        d„ ¦   «         Z
 ed¬¦  «        d„ ¦   «         Z ed¬¦  «        d„ ¦   «         Z ed¬¦  «        d	„ ¦   «         Z ed¬¦  «        d
„ ¦   «         Zd„ Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z G d„ dee¦  «        Z G d„ dee¦  «        Zedk    r e	j        ¦   «          dS dS )é    N)Újit)ÚTestCaseÚcompile_functionÚMemoryLeakMixinT©Únopythonc                 ó    — t          | ¦  «        S ©N)Úlen)Úbufs    úV/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_buffer_protocol.pyÚlen_usecaser   
   s   € åˆs‰8Œ8€Oó    c                 ó   — | |         S r
   © )r   Úis     r   Úgetitem_usecaser      s   € àˆqŒ6€Mr   c                 ó>   — | ||…         }|d         d|d         z  z   S )Nr   é   éÿÿÿÿr   )r   r   ÚjÚss       r   Úgetslice_usecaser      s&   € àˆAˆaˆCŒ€AØˆQŒ4�!�a˜”e‘)ÑÐr   c                 ó   — || |<   d S r
   r   )r   r   Úvs      r   Úsetitem_usecaser      s   € à€Cˆ�F€F€Fr   c                 óN   — d}t          | ¦  «        D ]\  }}||z  }||dz   z  }Œ|S )Ng        é   )Ú	enumerate)r   Úresr   Úxs       r   Úiter_usecaser"      s=   € à
€CÝ˜#‘”ð ð ‰ˆˆ1Øˆq‰ˆØˆq�1‰u‰ˆˆØ€Jr   c                 ó�   — dt          ¦   «         z  }t          d|t          ¦   «         ¦  «        } t          d¬¦  «        |¦  «        S )Nz'def func(x):
        return x.%(attr)s
ÚfuncTr   )Úlocalsr   Úglobalsr   )ÚattrÚcodeÚpyfuncs      r   Ú
attrgetterr*   (   sG   € ðå�h„hñ€Dõ ˜f d­G©I¬IÑ6Ô6€FØ�3˜ÐÑÔ˜fÑ%Ô%Ð%r   Ú
contiguousÚc_contiguousÚf_contiguousÚitemsizeÚnbytesÚndimÚreadonlyÚshapeÚstridesc                   óf   — e 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S )ÚTestBufferProtocolz6
    Test operations on buffer-providing objects.
    c              #   ó€   ‡K  — d}dD ]5\  }Št          j         |ˆfd„t          |¦  «        D ¦   «         ¦  «        V — Œ6d S )Né
   ))Úbéýÿÿÿ)ÚBr   )Úhéxìÿÿ)ÚHé@œ  )r   é`yþÿ)ÚIé@B )Úlr?   )ÚLrA   )Úqìûÿÿÿ         )ÚQl           )Úfç      ø?)Údg      ø¿c                 ó   •— g | ]}|‰z   ‘ŒS r   r   )Ú.0r   Úoffsets     €r   ú
<listcomp>z.TestBufferProtocol._arrays.<locals>.<listcomp>P   s   ø€ Ð&DÐ&DÐ&D°a q¨6¡zÐ&DÐ&DÐ&Dr   )ÚarrayÚrange)ÚselfÚnÚletterrL   s      @r   Ú_arrayszTestBufferProtocol._arrays@   sg   øè è € Øˆðð 	Fð 	F‰NˆF�Fõ ”+˜fÐ&DÐ&DÐ&DÐ&D½5À¹8¼8Ð&DÑ&DÔ&DÑEÔEÐEÐEÐEÐEð	Fð 	Fr   c              #   ób  K  — d}t          t          d¦  «        ¦  «        V — t          d¦  «        V — dD ]>\  }}}t          t          j        |||¦  «                             |¦  «        ¦  «        V — Œ?t          j        d¦  «                             d¦  «        }|j        j        r|j        j	        rJ ‚t          |¦  «        V — |j
        }|j        j	        r|j        j        rJ ‚t          |¦  «        V — |d d d…         }|j        j	        s|j        j        rJ ‚t          |¦  «        V — d S )Nr7   ó	   abcdefghi))Úint8iöÿÿÿr7   )Úuint8r   r7   )Úint16r<   iè  )Úuint16r>   iPÃ  )Úint32r?   i † )Úuint32r   rA   )Úint64rE   r7   )Úuint64r   l   öÿÿÿ )Úfloat32rH   ç      @)Úfloat64rH   r_   )Ú	complex64ù       €       Àù      (@      @)Ú
complex128rb   rc   é   ©é   é   r   )Ú
memoryviewÚ	bytearrayÚnpÚlinspaceÚastypeÚarangeÚreshapeÚflagsr,   r-   ÚT)rP   rQ   ÚdtypeÚstartÚstopÚarrs         r   Ú_memoryviewszTestBufferProtocol._memoryviewsR   sH  è è € ØˆÝ� <Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1Ý˜Ñ&Ô&Ð&Ð&Ð&ð#ð 	Hð 	HÑˆE�5˜$õ �Rœ[¨°°aÑ8Ô8×?Ò?ÀÑFÔFÑGÔGÐGÐGÐGÐGåŒi˜‰mŒm×#Ò# FÑ+Ô+ˆØŒyÔ%ÐD¨c¬iÔ.DÐDÐDÐDÝ˜‰oŒoÐÐÐØŒeˆØŒyÔ%ÐD¨c¬iÔ.DÐDÐDÐDÝ˜‰oŒoÐÐÐØ�#�#�A�#ŒhˆØ”9Ô)ÐH°#´)Ô2HÐHÐHÐHÝ˜‰oŒoÐÐÐÐÐr   c              #   óª   K  — dV — t          d¦  «        V — t          j        d¦  «        }|                     d¬¦  «         t          |¦  «        V — d S )Nó   xyzrU   é   F©Úwrite)ri   rk   rn   Úsetflags©rP   ru   s     r   Ú_readonlieszTestBufferProtocol._readonliesq   s\   è è € ØˆˆˆÝ˜Ñ&Ô&Ð&Ð&Ð&ÝŒi˜‰lŒlˆØ�Š˜5ˆÑ!Ô!Ð!Ý˜‰oŒoÐÐÐÐÐr   c                 óL   — |j         }|                       ||Ž  ||Ž ¦  «         d S r
   )Úpy_funcÚassertPreciseEqual)rP   ÚjitfuncÚargsr)   s       r   Ú_check_unaryzTestBufferProtocol._check_unaryx   s1   € Ø”ˆØ×Ò  ¨ °°¸°Ñ>Ô>Ð>Ð>Ð>r   c                 ó<   — |                       t          |¦  «         d S r
   )r„   r   ©rP   Úobjs     r   Ú	check_lenzTestBufferProtocol.check_len|   s   € Ø×Ò�+ sÑ+Ô+Ð+Ð+Ð+r   c                 ó<   — |                       t          |¦  «         d S r
   )r„   r"   r†   s     r   Ú
check_iterzTestBufferProtocol.check_iter   s   € Ø×Ò�,¨Ñ,Ô,Ð,Ð,Ð,r   c                 óú   — d„ } ||¦  «        D ]k}	 ||         }n;# t           t          f$ r' t          |t          ¦  «        r|j        |         }n‚ Y nw xY w|                      t          ||¦  «        |¦  «         Œld S )Nc              3   óÎ   K  — 	 | j         }n # t          $ r t          | ¦  «        f}Y nw xY wt          j        |¦  «        D ]$}t          |¦  «        dk    r|d         V — Œ |V — Œ%d S )Nr   r   )r2   ÚAttributeErrorr   rk   Úndindex)r‡   r2   Útups      r   Úyield_indicesz7TestBufferProtocol.check_getitem.<locals>.yield_indices…   sŽ   è è € ð"Øœ	��øÝ!ð "ð "ð "Ý˜C™œ˜	���ð"øøøå”z %Ñ(Ô(ð ð �õ �s‘8”8˜q’=�=Ø˜aœ&�L�L�L�Là�I�I�I�Iðð s   „ Œ)¨))ÚNotImplementedErrorÚ	TypeErrorÚ
isinstanceri   r‡   r�   r   )rP   r‡   r�   r   Úexpecteds        r   Úcheck_getitemz TestBufferProtocol.check_getitem‚   sº   € ð	ð 	ð 	ð �˜sÑ#Ô#ð 
	Gð 
	GˆAðØ˜qœ6��øÝ'­Ð3ð ð ð Ý˜c¥:Ñ.Ô.ð ð  #œw qœz�H�Hàð �Hð	øøøð ×#Ò#¥O°C¸Ñ$;Ô$;¸XÑFÔFÐFÐFð
	Gð 
	Gs   ’›5AÁAc                 óF  — t          t          |¦  «        ¦  «        D ]ƒ}t          |¦  «        }||         dz  dz   }t          |||¦  «         |                      ||         |¦  «         t          |¦  «        D ]'\  }}||k    r|                      ||         |¦  «         Œ(Œ„d S )Nr   r   )rO   r   Úlistr   ÚassertEqualr   )rP   r‡   r   ÚorigÚvalr   s         r   Úcheck_setitemz TestBufferProtocol.check_setitemž   s±   € Ý•s˜3‘x”x‘”ð 	2ð 	2ˆAÝ˜‘9”9ˆDØ�a”&˜A‘+ ‘/ˆCÝ˜C  CÑ(Ô(Ð(Ø×Ò˜S œV SÑ)Ô)Ð)Ý# D™/œ/ð 2ð 2‘��3Ø˜’6�6Ø×$Ò$ S¨¤V¨SÑ1Ô1Ð1øð2ð	2ð 	2r   c                 ó`   — |                       t          |dt          |¦  «        dz
  ¦  «         d S )Nr   )r„   r   r   r†   s     r   Úcheck_getslicez!TestBufferProtocol.check_getslice¨   s-   € Ø×ÒÕ*¨C°µC¸±H´H¸q±LÑAÔAÐAÐAÐAr   c                 ó|  — |                       t          d¦  «        ¦  «         |                       d¦  «         |                      ¦   «         D ]}|                       |¦  «         Œ|                      ¦   «         D ]}|                       |¦  «         Œ|                      ¦   «         D ]}|                      |¦  «         Œd S )Nry   rx   )rˆ   rj   rv   rS   r~   r•   ©rP   Úmemru   r   s       r   Útest_lenzTestBufferProtocol.test_len«   sÄ   € Ø�Š•y ‘|”|Ñ$Ô$Ð$Ø�Š�vÑÔÐØ×$Ò$Ñ&Ô&ð 	 ð 	 ˆCØ�NŠN˜3ÑÔÐÐØ—<’<‘>”>ð 	 ð 	 ˆCØ�NŠN˜3ÑÔÐÐØ×#Ò#Ñ%Ô%ð 	$ð 	$ˆCØ×Ò˜sÑ#Ô#Ð#Ð#ð	$ð 	$r   c                 ó|  — |                       t          d¦  «        ¦  «         |                       d¦  «         |                      ¦   «         D ]}|                       |¦  «         Œ|                      ¦   «         D ]}|                       |¦  «         Œ|                      ¦   «         D ]}|                       |¦  «         Œd S ©Ns   abcrx   )r•   rj   rv   rS   r~   rŸ   s       r   Útest_getitemzTestBufferProtocol.test_getitemµ   sÎ   € Ø×Ò�9 VÑ,Ô,Ñ-Ô-Ð-Ø×Ò˜6Ñ"Ô"Ð"Ø×$Ò$Ñ&Ô&ð 	$ð 	$ˆCØ×Ò˜sÑ#Ô#Ð#Ð#Ø—<’<‘>”>ð 	$ð 	$ˆCØ×Ò˜sÑ#Ô#Ð#Ð#Ø×#Ò#Ñ%Ô%ð 	$ð 	$ˆCØ×Ò˜sÑ#Ô#Ð#Ð#ð	$ð 	$r   c           	      ó*  — |                       ¦   «         5  |                      t          d¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      d¦  «         |                      t          d¦  «        ¦  «         |                       ¦   «         5  |                      t	          j        dt          d¦  «        ¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      ¦   «         D ]}|                      |¦  «         Œd S )Ns   abcdes   xyzuvwr   r7   )ÚassertTypingErrorr�   rj   ri   rN   rO   r~   r•   )rP   r   s     r   Útest_getslicez TestBufferProtocol.test_getslice¿   s~  € Ø×#Ò#Ñ%Ô%ð 	5ð 	5Ø×Ò¥	¨(Ñ 3Ô 3Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5à×Ò˜IÑ&Ô&Ð&Ø×Ò�J yÑ1Ô1Ñ2Ô2Ð2Ø×#Ò#Ñ%Ô%ð 	=ð 	=Ø×Ò¥¤¨Cµ°r±´Ñ ;Ô ;Ñ<Ô<Ð<ð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=à×#Ò#Ñ%Ô%ð 	$ð 	$ˆCØ×Ò˜sÑ#Ô#Ð#Ð#ð	$ð 	$s#   •#AÁAÁAÂ6CÃC Ã#C c                 óª  — |                       t          d¦  «        ¦  «         |                      ¦   «         D ]}|                       |¦  «         Œ|                      ¦   «         D ]}|                      |¦  «         Œ|                      ¦   «         D ]C}|                      ¦   «         5  |                       |¦  «         d d d ¦  «         n# 1 swxY w Y   ŒDd S )NrU   )r›   rj   rS   rv   r•   r~   r¦   )rP   ru   r    r   s       r   Útest_setitemzTestBufferProtocol.test_setitemÉ   s  € Ø×Ò�9 \Ñ2Ô2Ñ3Ô3Ð3Ø—<’<‘>”>ð 	$ð 	$ˆCØ×Ò˜sÑ#Ô#Ð#Ð#Ø×$Ò$Ñ&Ô&ð 	$ð 	$ˆCØ×Ò˜sÑ#Ô#Ð#Ð#à×#Ò#Ñ%Ô%ð 	(ð 	(ˆCØ×'Ò'Ñ)Ô)ð (ð (Ø×"Ò" 3Ñ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (øð	(ð 	(s   Â%CÃC	ÃC	c                 óh  — |                       t          d¦  «        ¦  «         |                       d¦  «         |                       t          d¦  «        ¦  «         |                      ¦   «         D ]}|                       |¦  «         Œ|                      ¦   «         D ]}|                      |¦  «         Œd S r£   )rŠ   rj   ri   rS   r~   r•   )rP   ru   r   s      r   Ú	test_iterzTestBufferProtocol.test_iterÔ   s°   € Ø�Š�	 &Ñ)Ô)Ñ*Ô*Ð*Ø�Š˜ÑÔÐØ�Š�
 6Ñ*Ô*Ñ+Ô+Ð+Ø—<’<‘>”>ð 	!ð 	!ˆCØ�OŠO˜CÑ Ô Ð Ð Ø×#Ò#Ñ%Ô%ð 	$ð 	$ˆCØ×Ò˜sÑ#Ô#Ð#Ð#ð	$ð 	$r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rS   rv   r~   r„   rˆ   rŠ   r•   r›   r�   r¡   r¤   r§   r©   r«   r   r   r   r5   r5   ;   sù   € € € € € ðð ðFð Fð Fð$ð ð ð>ð ð ð?ð ?ð ?ð,ð ,ð ,ð-ð -ð -ðGð Gð Gð82ð 2ð 2ðBð Bð Bð$ð $ð $ð$ð $ð $ð$ð $ð $ð	(ð 	(ð 	(ð$ð $ð $ð $ð $r   r5   c                   óB   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
S )ÚTestMemoryViewz=
    Test memoryview-specific attributes and operations.
    c              #   ó  K  — t          j        d¦  «        }|V — |                     d¦  «        }|V — |j        V — |d d d…         V — |                     d¬¦  «         |V — t          j        d¦  «        }|j        dk    sJ ‚|V — d S )Nre   rf   r   Frz   r   r   )rk   rn   ro   rq   r|   Úzerosr0   r}   s     r   rS   zTestMemoryView._arraysã   sš   è è € ÝŒi˜‰mŒmˆØˆ	ˆ	ˆ	Ø�kŠk˜&Ñ!Ô!ˆØˆ	ˆ	ˆ	ØŒeˆˆˆØ�#�#�A�#ŒhˆˆˆØ�Š˜5ˆÑ!Ô!Ð!Øˆ	ˆ	ˆ	ÝŒh�r‰lŒlˆØŒx˜1Š}ˆ}ˆ}ˆ}Øˆ	ˆ	ˆ	ˆ	ˆ	r   c                 ó¢   — |                       ¦   «         D ]9}t          |¦  «        }|                      t          |¦  «        |j        ¦  «         Œ:d S r
   )rS   ri   r�   Úndim_usecaser0   ©rP   ru   Úms      r   Ú	test_ndimzTestMemoryView.test_ndimð   sO   € Ø—<’<‘>”>ð 	?ð 	?ˆCÝ˜3‘”ˆAØ×#Ò#¥L°¡O¤O°S´XÑ>Ô>Ð>Ð>ð	?ð 	?r   c                 ó¢   — |                       ¦   «         D ]9}t          |¦  «        }|                      t          |¦  «        |j        ¦  «         Œ:d S r
   )rS   ri   r�   Úshape_usecaser2   r¶   s      r   Ú
test_shapezTestMemoryView.test_shapeõ   sU   € Ø—<’<‘>”>ð 	Að 	AˆCÝ˜3‘”ˆAØ×#Ò#¥M°!Ñ$4Ô$4°c´iÑ@Ô@Ð@Ð@ð	Að 	Ar   c                 ó¢   — |                       ¦   «         D ]9}t          |¦  «        }|                      t          |¦  «        |j        ¦  «         Œ:d S r
   )rS   ri   r�   Ústrides_usecaser3   r¶   s      r   Útest_strideszTestMemoryView.test_stridesú   sU   € Ø—<’<‘>”>ð 	Eð 	EˆCÝ˜3‘”ˆAØ×#Ò#¥O°AÑ$6Ô$6¸¼ÑDÔDÐDÐDð	Eð 	Er   c                 ó¢   — |                       ¦   «         D ]9}t          |¦  «        }|                      t          |¦  «        |j        ¦  «         Œ:d S r
   )rS   ri   r�   Úitemsize_usecaser.   r¶   s      r   Útest_itemsizezTestMemoryView.test_itemsizeÿ   sV   € Ø—<’<‘>”>ð 	Gð 	GˆCÝ˜3‘”ˆAØ×#Ò#Õ$4°QÑ$7Ô$7¸¼ÑFÔFÐFÐFð	Gð 	Gr   c                 ó²   — |                       ¦   «         D ]A}t          |¦  «        }|                      t          |¦  «        |j        |j        z  ¦  «         ŒBd S r
   )rS   ri   r�   Únbytes_usecaseÚsizer.   r¶   s      r   Útest_nbyteszTestMemoryView.test_nbytes  s\   € Ø—<’<‘>”>ð 	Pð 	PˆCÝ˜3‘”ˆAØ×#Ò#¥N°1Ñ$5Ô$5°s´xÀ#Ä,Ñ7NÑOÔOÐOÐOð	Pð 	Pr   c                 ó�  — |                       ¦   «         D ]?}t          |¦  «        }|                      t          |¦  «        |j        j         ¦  «         Œ@t          d¦  «        }|                      t          |¦  «        d¦  «         t          t          d¦  «        ¦  «        }|                      t          |¦  «        d¦  «         d S )Nrx   TF)rS   ri   ÚassertIsÚreadonly_usecaserp   Ú	writeablerj   r¶   s      r   Útest_readonlyzTestMemoryView.test_readonly	  s°   € Ø—<’<‘>”>ð 	Hð 	HˆCÝ˜3‘”ˆAØ�MŠMÕ*¨1Ñ-Ô-°3´9Ô3FÐ/FÑGÔGÐGÐGÝ�vÑÔˆØ�ŠÕ& qÑ)Ô)¨4Ñ0Ô0Ð0Ý•y Ñ(Ô(Ñ)Ô)ˆØ�ŠÕ& qÑ)Ô)¨5Ñ1Ô1Ð1Ð1Ð1r   c                 ó‚  — t          t          d¦  «        ¦  «        }|                      t          |¦  «        d¦  «         |                      t	          |¦  «        d¦  «         |                      t          |¦  «        d¦  «         |                      ¦   «         D ]¤}t          |¦  «        }|                      t          |¦  «        |j        j        p|j        j	        ¦  «         |                      t	          |¦  «        |j        j	        ¦  «         |                      t          |¦  «        |j        j        ¦  «         Œ¥d S )Nrx   T)
ri   rj   rÇ   Úcontiguous_usecaseÚc_contiguous_usecaseÚf_contiguous_usecaserS   rp   r-   r,   )rP   r·   ru   s      r   Útest_contiguouszTestMemoryView.test_contiguous  s  € Ý•y Ñ(Ô(Ñ)Ô)ˆØ�ŠÕ(¨Ñ+Ô+¨TÑ2Ô2Ð2Ø�ŠÕ*¨1Ñ-Ô-¨tÑ4Ô4Ð4Ø�ŠÕ*¨1Ñ-Ô-¨tÑ4Ô4Ð4Ø—<’<‘>”>ð 	Kð 	KˆCÝ˜3‘”ˆAà�MŠMÕ,¨QÑ/Ô/Øœ)Ô0ÐJ°C´IÔ4JñLô Lð Là�MŠMÕ.¨qÑ1Ô1°3´9Ô3IÑJÔJÐJØ�MŠMÕ.¨qÑ1Ô1°3´9Ô3IÑJÔJÐJÐJð	Kð 	Kr   N)r¬   r­   r®   r¯   rS   r¸   r»   r¾   rÁ   rÅ   rÊ   rÏ   r   r   r   r±   r±   Þ   s§   € € € € € ðð ðð ð ð?ð ?ð ?ð
Að Að Að
Eð Eð Eð
Gð Gð Gð
Pð Pð Pð
2ð 2ð 2ðKð Kð Kð Kð Kr   r±   Ú__main__)rN   Únumpyrk   Únumbar   Únumba.tests.supportr   r   r   Úunittestr   r   r   r   r"   r*   rÌ   rÍ   rÎ   rÀ   rÃ   rµ   rÈ   rº   r½   r5   r±   r¬   Úmainr   r   r   ú<module>rÖ      sM  ðØ €€€à Ð Ð Ð à Ð Ð Ð Ð Ð Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ €€€ð €ˆdÐÑÔðð ñ Ôðð €ˆdÐÑÔðð ñ Ôðð €ˆdÐÑÔðð ñ Ôðð
 €ˆdÐÑÔðð ñ Ôðð €ˆdÐÑÔðð ñ Ôðð&ð &ð &ð  �Z Ñ-Ô-Ð Ø!�z .Ñ1Ô1Ð Ø!�z .Ñ1Ô1Ð Ø�:˜jÑ)Ô)Ð Ø�˜HÑ%Ô%€Øˆz˜&Ñ!Ô!€Ø�:˜jÑ)Ô)Ð Ø�
˜7Ñ#Ô#€Ø�*˜YÑ'Ô'€ð`$ð `$ð `$ð `$ð `$˜¨(ñ `$ô `$ð `$ðF?Kð ?Kð ?Kð ?Kð ?K�_ hñ ?Kô ?Kð ?KðD ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   