Ë
    èÿæiFN  ã                   óþ   — d Z ddlZddlZddlmZ ddlmZmZmZm	Z	 ddl
mZ ddlmZ ddlmZmZmZmZ dZerd	nd
Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de	j4                  «      Z G d„ de«      Zy)z2
Testing C implementation of the numba dictionary
é    N)ÚTestCase)Ú
_helperlibÚjitÚtypedÚtypes)Ú	IS_32BITS)ÚUniTupleModel)Úregister_modelÚtypeof_implÚunboxÚoverloadéÿÿÿÿé   é   c                   óv   — 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„ Zd„ Zd„ Zy)ÚDictzWA wrapper around the C-API to provide a minimal dictionary object for
    testing.
    c                 ó\   — || _         || _        || _        | j                  ||«      | _        y)zÀ
        Parameters
        ----------
        tc : TestCase instance
        keysize : int
            byte size for the key
        valsize : int
            byte size for the value
        N)ÚtcÚkeysizeÚvalsizeÚdict_new_minsizeÚdp)Úselfr   r   r   s       ún/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_dictimpl.pyÚ__init__zDict.__init__   s-   € ð ˆŒØˆŒØˆŒØ×'Ñ'¨°Ó9ˆ�ó    c                 óN   — | j                   j                  | j                  «       y ©N)r   Únumba_dict_freer   ©r   s    r   Ú__del__zDict.__del__(   s   € Ø�‰×Ñ §¡Õ(r   c                 ó"   — | j                  «       S r   )Údict_lengthr    s    r   Ú__len__zDict.__len__+   s   € Ø×ÑÓ!Ð!r   c                 óH  — t        |j                  «       «      }t        |j                  «       «      }| j                  j                  t	        |«      | j
                  «       | j                  j                  t	        |«      | j                  «       | j                  ||«       y r   )ÚbytesÚencoder   ÚassertEqualÚlenr   r   Údict_insert)r   ÚkÚvÚbkÚbvs        r   Ú__setitem__zDict.__setitem__.   sj   € Ü�1—8‘8“:ÓˆÜ�1—8‘8“:ÓˆØ�‰×ÑœC ›G T§\¡\Ô2Ø�‰×ÑœC ›G T§\¡\Ô2Ø×Ñ˜˜RÕ r   c                 óø   — t        |j                  «       «      }| j                  j                  t	        |«      | j
                  «       | j                  |«      \  }}|t        k(  rt        ‚|j                  «       S r   )
r&   r'   r   r(   r)   r   Údict_lookupÚ
DKIX_EMPTYÚKeyErrorÚdecode)r   r+   r-   ÚixÚolds        r   Ú__getitem__zDict.__getitem__5   s[   € Ü�1—8‘8“:ÓˆØ�‰×ÑœC ›G T§\¡\Ô2Ø×"Ñ" 2Ó&‰ˆˆCØ”ÒÜˆNà—:‘:“<Ðr   c                 óÌ   — t        |j                  «       «      }| j                  j                  t	        |«      | j
                  «       | j                  |«      st        |«      ‚y r   )r&   r'   r   r(   r)   r   Údict_delitemr3   )r   r+   r-   s      r   Ú__delitem__zDict.__delitem__>   sK   € Ü�1—8‘8“:ÓˆØ�‰×ÑœC ›G T§\¡\Ô2Ø× Ñ  Ô$Ü˜1“+Ðð %r   c                 ó,   — 	 | |   S # t         $ r Y y w xY wr   )r3   )r   r+   s     r   ÚgetzDict.getD   s"   € ð	Ø˜‘7ˆNøÜò 	Ùð	ús   ‚ ‡	’c                 ó   — t        | «      S r   )ÚDictIterr    s    r   Úitemsz
Dict.itemsJ   s   € Ü˜‹~Ðr   c                 óh   — | j                  «       \  }}|j                  «       |j                  «       fS r   )Údict_popitemr4   )r   r+   r,   s      r   ÚpopitemzDict.popitemM   s+   € Ø× Ñ Ó"‰ˆˆ1Ø�x‰x‹z˜1Ÿ8™8›:Ð%Ð%r   c                 óÈ   — t        j                  «       }| j                  j                  t        j                  |«      d||«      }| j                  j                  |d«       |S ©Nr   )ÚctypesÚc_void_pr   Únumba_dict_new_sizedÚbyrefr(   )r   Úkey_sizeÚval_sizer   Ústatuss        r   r   zDict.dict_new_minsizeU   sO   € Ü�_‰_ÓˆØ—‘×-Ñ-Ü�L‰L˜Ó˜a ¨8ó
ˆð 	�‰×Ñ˜F AÔ&Øˆ	r   c                 óL   — | j                   j                  | j                  «      S r   )r   Únumba_dict_lengthr   r    s    r   r#   zDict.dict_length]   s   € Ø�w‰w×(Ñ(¨¯©Ó1Ð1r   c                 ó¢   — t        |«      }| j                  j                  | j                  |||«      }| j                  j	                  |d«       y rD   )Úhashr   Únumba_dict_insert_ezr   ÚassertGreaterEqual)r   Ú	key_bytesÚ	val_bytesÚhashvalrK   s        r   r*   zDict.dict_insert`   sB   € Ü�y“/ˆØ—‘×-Ñ-Ø�G‰G�Y ¨ó
ˆð 	�‰×"Ñ" 6¨1Õ-r   c                 ó  — t        |«      }t        j                  | j                  «      }| j                  j                  | j                  |||«      }| j                  j                  |t        «       ||j                  fS r   )
rO   rE   Úcreate_string_bufferr   r   Únumba_dict_lookupr   rQ   r2   Úvalue)r   rR   rT   Úoldval_bytesr5   s        r   r1   zDict.dict_lookupg   sg   € Ü�y“/ˆÜ×2Ñ2°4·<±<Ó@ˆØ�W‰W×&Ñ&Ø�G‰G�Y ¨ó
ˆð 	�‰×"Ñ" 2¤zÔ2Ø�<×%Ñ%Ð%Ð%r   c                 óÜ   — | j                  |«      \  }}|t        k(  ryt        |«      }| j                  j	                  | j
                  ||«      }| j                  j                  |d«       y)NFr   T)r1   r2   rO   r   Únumba_dict_delitemr   r(   )r   rR   r5   ÚoldvalrT   rK   s         r   r9   zDict.dict_delitemp   s]   € Ø×%Ñ% iÓ0‰
ˆˆFØ”ÒØÜ�y“/ˆØ—‘×+Ñ+¨D¯G©G°W¸bÓAˆØ�‰×Ñ˜F AÔ&Ør   c                 ó\  — t        j                  | j                  «      }t        j                  | j                  «      }| j                  j                  | j                  ||«      }|dk7  r+|dk(  rt        d«      ‚| j                  j                  d«       |j                  |j                  fS )Nr   éüÿÿÿúpopitem(): dictionary is emptyÚUnknown)
rE   rV   r   r   r   Únumba_dict_popitemr   r3   Ú_failrX   )r   rR   rS   rK   s       r   rA   zDict.dict_popitemy   sƒ   € Ü×/Ñ/°·±Ó=ˆ	Ü×/Ñ/°·±Ó=ˆ	Ø—‘×+Ñ+¨D¯G©G°YÀ	ÓJˆØ�QŠ;Ø˜Š|ÜÐ?Ó@Ð@à—‘—‘˜iÔ(Ø�‰ 	§¡Ð/Ð/r   c                 óP   — | j                   j                  || j                  «       y r   )r   Únumba_dict_iterr   )r   Úitptrs     r   Ú	dict_iterzDict.dict_iter„   s   € Ø�‰×Ñ  t§w¡wÕ/r   c                 ó  — t        j                  d«      }t        j                  d«      }| j                  j                  |t        j                  |«      t        j                  |«      «      }|dk(  rt        d«      ‚|dk(  ry | j                  j                  |d«       | j                  j                  |j                  t        z  dd¬«       | j                  j                  |j                  t        z  dd¬«       t         j                  | j                  z  j                  |j                  «      }t         j                  | j                  z  j                  |j                  «      }|j                  |j                  fS )Nr   éþÿÿÿzdictionary mutatedéýÿÿÿzkey not aligned)Úmsgzval not aligned)rE   rF   r   Únumba_dict_iter_nextrH   Ú
ValueErrorrQ   r(   rX   ÚALIGNÚc_charr   Úfrom_addressr   )r   re   r-   r.   rK   ÚkeyÚvals          r   Údict_iter_nextzDict.dict_iter_next‡   s  € Ü�_‰_˜QÓˆÜ�_‰_˜QÓˆØ—‘×-Ñ-Ø”6—<‘< Ó#¤V§\¡\°"Ó%5ó
ˆð �RŠ<ÜÐ1Ó2Ð2Ø�rŠ\Øà�G‰G×&Ñ& v¨qÔ1ð
 �G‰G×Ñ §¡¬5Ñ 0°!Ð9JÐÔKØ�G‰G×Ñ §¡¬5Ñ 0°!Ð9JÐÔKä—=‘= 4§<¡<Ñ/×=Ñ=¸b¿h¹hÓGˆCÜ—=‘= 4§<¡<Ñ/×=Ñ=¸b¿h¹hÓGˆCØ—9‘9˜cŸi™iÐ'Ð'r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r!   r$   r/   r7   r:   r<   r?   rB   r   r#   r*   r1   r9   rA   rf   rr   © r   r   r   r      s\   „ ñò:ò)ò"ò!ò òòòò&òò2ò.ò&òò	0ò0ó(r   r   c                   ó&   — e Zd ZdZd„ Zd„ Zd„ ZeZy)r>   z�A iterator for the `Dict.items()`.

    Only the `.items()` is needed.  `.keys` and `.values` can be trivially
    implemented on the `.items` iterator.
    c                 óD  — || _         | j                   j                  j                  «       }t        j                  |z  d«      | _        t        j                  | j
                  t        j                  «      | _        | j                   j                  | j                  «       y rD   )
Úparentr   Únumba_dict_iter_sizeofrE   Úc_char_pÚit_state_bufÚcastrF   Úitrf   )r   rz   Úitsizes      r   r   zDictIter.__init__¥   sg   € ØˆŒØ—‘—‘×6Ñ6Ó8ˆÜ#Ÿ_™_¨vÑ5°qÓ9ˆÔÜ—+‘+˜d×/Ñ/´·±ÓAˆŒØ�‰×Ñ˜dŸg™gÕ&r   c                 ó   — | S r   rw   r    s    r   Ú__iter__zDictIter.__iter__¬   s   € Øˆr   c                 ó¦   — | j                   j                  | j                  «      }|€t        ‚|\  }}|j	                  «       |j	                  «       fS r   )rz   rr   r   ÚStopIterationr4   )r   Úoutr+   r,   s       r   Ú__next__zDictIter.__next__¯   sE   € Ø�k‰k×(Ñ(¨¯©Ó1ˆØˆ;ÜÐà‰DˆAˆqØ—8‘8“:˜qŸx™x›zÐ)Ð)r   N)rs   rt   ru   rv   r   r‚   r†   Únextrw   r   r   r>   r>   Ÿ   s   „ ñò
'òò*ð �Dr   r>   c                   ó   — e Zd ZdZd„ Zy)ÚParametrizedz_supporting type for TestDictImpl.test_parametrized_types
    needs to be global to be cacheablec                 ó,   — t        d„ |D «       «      sJ ‚y )Nc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr   )Ú
isinstanceÚstr)Ú.0r,   s     r   Ú	<genexpr>z(Parametrized.__init__.<locals>.<genexpr>¾   s   è ø€ Ð3©s¨!”:˜a¤×%©sùs   ‚)Úall)r   Útups     r   r   zParametrized.__init__½   s   € ÜÑ3©sÓ3Ô3Ð3Ñ3r   N)rs   rt   ru   rv   r   rw   r   r   r‰   r‰   º   s   „ ñ*ó4r   r‰   c                   ó8   ‡ — e Zd ZdZˆ fd„Zed„ «       Zd„ Zˆ xZS )ÚParametrizedTypezUthis is essentially UniTuple(unicode_type, n)
    BUT type name is the same for all nc                 óv   •— t         t        | �  d«       t        j                  | _        t        |«      | _        y )Nr“   )Úsuperr“   r   r   Úunicode_typeÚdtyper)   Ún)r   rX   Ú	__class__s     €r   r   zParametrizedType.__init__Å   s,   ø€ ÜÔ Ñ.Ð/AÔBÜ×'Ñ'ˆŒ
Ü�U“ˆ�r   c                 ó   — | j                   S r   ©r˜   r    s    r   rp   zParametrizedType.keyÊ   s   € à�v‰vˆr   c                 ó   — | j                   S r   r›   r    s    r   r$   zParametrizedType.__len__Î   s   € Ø�v‰vˆr   )	rs   rt   ru   rv   r   Úpropertyrp   r$   Ú__classcell__)r™   s   @r   r“   r“   Á   s&   ø„ ñ+ôð
 ñó ðör   r“   c                   ób   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestDictImplc           	      ó¢  — t         j                  }t         j                  }t         j                  }dd„} |dt         j                  «      | _         |dt         j                  t        j
                  |«      t         j                  t         j                  t         j                  g«      | _         |dd|g«      | _         |dt         j                  |g«      | _         |dt         j                  |t         j                  |t         j                  g«      | _
         |dt         j                  |t         j                  |t         j                  g«      | _         |d	t         j                  ||t         j                  g«      | _         |d
t         j                  |t         j                  t         j                  g«      | _         |dt         j                  «      | _         |dd||g«      | _         |dt         j                  |t        j
                  t         j                  «      t        j
                  t         j                  «      g«      | _        y)zEBind to the c_helper library and provide the ctypes wrapper.
        c                 ó`   — t        j                  |g|¢­Ž } |t        j                  |    «      S r   )rE   Ú	CFUNCTYPEr   Ú	c_helpers)ÚnameÚrestypeÚargtypesÚprotos       r   Úwrapz TestDictImpl.setUp.<locals>.wrapÚ   s-   € Ü×$Ñ$ WÐ8¨xÒ8ˆEÙœ×-Ñ-¨dÑ3Ó4Ð4r   Ú	test_dictÚdict_new_sizedÚ	dict_freeNr#   Údict_insert_ezr1   r9   rA   Údict_iter_sizeofrf   rr   )rw   )rE   rF   Ú	c_ssize_tÚc_intÚnumba_test_dictÚPOINTERrG   r   rM   r|   rP   rW   r[   ra   Úc_size_tr{   rd   rk   )r   Údict_tÚiter_tÚhash_tr©   s        r   ÚsetUpzTestDictImpl.setUpÓ   sú  € ô —‘ˆÜ—‘ˆÜ×!Ñ!ˆó	5ñ
  $ØÜ�L‰Ló 
ˆÔñ %)ØÜ�L‰Lä—‘˜vÓ&Ü× Ñ Ü× Ñ Ü× Ñ ð	ó	%
ˆÔ!ñ  $ØØØˆHó 
ˆÔñ "&ØÜ×ÑØˆHó"
ˆÔñ %)ØÜ�L‰LàÜ—‘ØÜ—‘ð	ó	%
ˆÔ!ñ  "&ØÜ×ÑàÜ—‘ØÜ—‘ð	ó	"
ˆÔñ #'ØÜ�L‰LàØÜ× Ñ ðó#
ˆÔñ #'ØÜ�L‰LàÜ—‘Ü—‘ðó#
ˆÔñ '+ØÜ�O‰Oó'
ˆÔ#ñ  $ØØàØðó 
ˆÔñ %)ØÜ�L‰LàÜ—‘œvŸ™Ó/Ü—‘œvŸ™Ó/ðó%
ˆÕ!r   c                 óH   — | j                  «       }| j                  |d«       y rD   )r±   r(   )r   Úrets     r   Útest_simple_c_testzTestDictImpl.test_simple_c_test[  s    € à×"Ñ"Ó$ˆØ×Ñ˜˜aÕ r   c                 óú  — t        | dd«      }| j                  t        |«      d«       | j                  |j	                  d«      «       d|d<   | j                  t        |«      d«       | j                  |j	                  d«      «       | j                  |d   d«       d|d<   | j                  t        |«      d«       | j                  |d   d«       d|d	<   | j                  t        |«      d
«       | j                  |d   d«       | j                  |d	   d«       d|d<   | j                  t        |«      d«       | j                  |d   d«       | j                  |d	   d«       | j                  |d   d«       y )Nr   r   r   ÚabcdÚbeefcafeé   Úcafe0000Úcafe0001Úabceé   Úcafe0002Úabcfé   )r   r(   r)   ÚassertIsNoner<   ÚassertIsNotNone©r   Úds     r   Útest_insertion_smallz!TestDictImpl.test_insertion_small`  sX  € ä��q˜!ÓˆØ×Ñœ˜Q› Ô#Ø×Ñ˜!Ÿ%™% ›-Ô(ð ˆˆ&‰	Ø×Ñœ˜Q› Ô#Ø×Ñ˜QŸU™U 6›]Ô+Ø×Ñ˜˜6™ JÔ/ð ˆˆ&‰	Ø×Ñœ˜Q› Ô#Ø×Ñ˜˜6™ JÔ/ð ˆˆ&‰	Ø×Ñœ˜Q› Ô#Ø×Ñ˜˜6™ JÔ/Ø×Ñ˜˜6™ JÔ/ð ˆˆ&‰	Ø×Ñœ˜Q› Ô#Ø×Ñ˜˜6™ JÔ/Ø×Ñ˜˜6™ JÔ/Ø×Ñ˜˜6™ JÕ/r   c                 ó
  — t        | dd«      }d„ }d„ }t        |«      D ]1  } ||«      | ||«      <   | j                  t        |«      |dz   «       Œ3 t        |«      D ]#  }| j                  | ||«          ||«      «       Œ% y )Nr   c                 ó$   — dj                  | «      S )Nz	key_{:04}©Úformat©r,   s    r   Úmake_keyz3TestDictImpl.check_insertion_many.<locals>.make_key‚  ó   € Ø×%Ñ% aÓ(Ð(r   c                 ó$   — dj                  | «      S )Nz	val_{:04}rÍ   rÏ   s    r   Úmake_valz3TestDictImpl.check_insertion_many.<locals>.make_val…  rÑ   r   r¾   )r   Úranger(   r)   )r   ÚnmaxrÉ   rÐ   rÓ   Úis         r   Úcheck_insertion_manyz!TestDictImpl.check_insertion_many~  s   € ä��q˜!Óˆò	)ò	)ô �t–ˆAÙ% a›[ˆA‰h�q‹k‰NØ×ÑœS ›V Q¨¡UÕ+ð ô
 �t–ˆAØ×Ñ˜Q™x¨›{™^©X°a«[Õ9ñ r   c                 ó´  — | j                  d¬«       | j                  d¬«       | j                  d¬«       | j                  d¬«       | j                  d¬«       | j                  d¬«       | j                  d¬«       | j                  d	¬«       | j                  d
¬«       | j                  d¬«       | j                  d¬«       | j                  d¬«       y )Né   )rÕ   r   é	   é   é    é!   iÿ  é   i  iÿ  i   i  )r×   r    s    r   Útest_insertion_manyz TestDictImpl.test_insertion_many‘  sÐ   € ð 	×!Ñ! qÐ!Ô)Ø×!Ñ! qÐ!Ô)Ø×!Ñ! qÐ!Ô)à×!Ñ! rÐ!Ô*Ø×!Ñ! rÐ!Ô*Ø×!Ñ! rÐ!Ô*à×!Ñ! tÐ!Ô,Ø×!Ñ! tÐ!Ô,Ø×!Ñ! tÐ!Ô,à×!Ñ! tÐ!Ô,Ø×!Ñ! tÐ!Ô,Ø×!Ñ! tÐ!Õ,r   c                 ó¨  — t        | dd«      }| j                  t        |«      d«       | j                  |j	                  d«      «       d|d<   d|d<   d|d	<   | j                  t        |«      d
«       | j                  |d   d«       | j                  |d   d«       | j                  |d	   d«       | j                  t        |«      d
«       |d= | j                  |j	                  d«      «       | j                  |d   d«       | j                  |d	   d«       | j                  t        |«      d«       | j                  t        «      5  |d= d d d «       |d	= | j                  |j	                  d«      «       | j                  |d   d«       | j                  |j	                  d	«      «       | j                  t        |«      d«       |d= | j                  |j	                  d«      «       | j                  |j	                  d«      «       | j                  |j	                  d	«      «       | j                  t        |«      d«       y # 1 sw Y   ŒûxY w)Nr   r   r   r¼   r¿   rÀ   rÁ   rÃ   rÄ   rÅ   rÂ   r¾   )r   r(   r)   rÆ   r<   ÚassertRaisesr3   rÈ   s     r   Útest_deletion_smallz TestDictImpl.test_deletion_small¤  sõ  € ä��q˜!ÓˆØ×Ñœ˜Q› Ô#Ø×Ñ˜!Ÿ%™% ›-Ô(àˆˆ&‰	Øˆˆ&‰	Øˆˆ&‰	à×Ñœ˜Q› Ô#Ø×Ñ˜˜6™ JÔ/Ø×Ñ˜˜6™ JÔ/Ø×Ñ˜˜6™ JÔ/Ø×Ñœ˜Q› Ô#ð ˆfˆIØ×Ñ˜!Ÿ%™% ›-Ô(Ø×Ñ˜˜6™ JÔ/Ø×Ñ˜˜6™ JÔ/Ø×Ñœ˜Q› Ô#ð ×ÑœxÕ(Ø�&�	÷ )ð ˆfˆIØ×Ñ˜!Ÿ%™% ›-Ô(Ø×Ñ˜˜6™ JÔ/Ø×Ñ˜!Ÿ%™% ›-Ô(Ø×Ñœ˜Q› Ô#ð ˆfˆIØ×Ñ˜!Ÿ%™% ›-Ô(Ø×Ñ˜!Ÿ%™% ›-Ô(Ø×Ñ˜!Ÿ%™% ›-Ô(Ø×Ñœ˜Q› Õ#÷ )Ð(ús   Å
IÉIc                 óÂ  — t        j                  |«       t        | dd«      }i }d„ }d„ }t        |«      D ]  }	 ||	«      | ||	«      <   Œ t        |«      D ],  }	 ||	«      }
 ||	«      }|||
<   | j	                  ||
   |«       Œ. | j	                  t        |«      |«       t        j                  t        |«      |«      }|j                  «       }t        |d¬«      D ])  \  }	}
||
= ||
= | j	                  t        |«      ||	z
  «       Œ+ | j	                  t        |«      ||z
  «       |D ]"  }
| j                  |j                  |
«      «       Œ$ |D ]  }
| j	                  ||
   ||
   «       Œ t        |«      D ]"  }	 |||	z   «      }
 |||	z   «      }|||
<   |||
<   Œ$ | j	                  t        |«      t        |«      «       |D ]  }
| j	                  ||
   ||
   «       Œ y )Nr   c                 ó$   — dj                  | «      S ©Nzk_{:06x}rÍ   rÏ   s    r   rÐ   z4TestDictImpl.check_delete_randomly.<locals>.make_keyÔ  ó   € Ø×$Ñ$ QÓ'Ð'r   c                 ó$   — dj                  | «      S ©Nzv_{:06x}rÍ   rÏ   s    r   rÓ   z4TestDictImpl.check_delete_randomly.<locals>.make_val×  ræ   r   r¾   )Ústart)ÚrandomÚseedr   rÔ   r(   r)   ÚsampleÚlistÚcopyÚ	enumeraterÆ   r<   )r   rÕ   ÚndropÚnrefillrë   rÉ   ÚkeysrÐ   rÓ   rÖ   r+   r,   ÚdroplistÚremains                 r   Úcheck_delete_randomlyz"TestDictImpl.check_delete_randomlyÍ  sÙ  € ä�‰�DÔä��q˜!ÓˆØˆò	(ò	(ô �t–ˆAÙ% a›[ˆA‰h�q‹kŠNð ô �t–ˆAÙ˜“ˆAÙ˜“ˆAØˆD�‰GØ×Ñ˜Q˜q™T 1Õ%ð	 ð 	×Ñœ˜Q› Ô&ô —=‘=¤ d£¨UÓ3ˆØ—‘“ˆÜ˜h¨a×0‰DˆAˆqØ�!�Ø�q�	Ø×ÑœS ›V T¨A¡XÕ.ð 1ð 	×Ñœ˜Q› ¨¡Ô.ó ˆAØ×Ñ˜aŸe™e A›hÕ'ð ó ˆAØ×Ñ˜Q˜q™T 6¨!¡9Õ-ð ô �w–ˆAÙ˜ ™Ó"ˆAÙ˜ ™Ó"ˆAØˆF�1‰IØˆAˆaŠDð	  ð 	×Ñœ˜V›¤c¨!£fÔ-ó ˆAØ×Ñ˜Q˜q™T 6¨!¡9Õ-ñ r   c                 ó  — | j                  ddd¬«       | j                  ddd¬«       | j                  ddd	¬«       | j                  dd
d¬«       | j                  ddd¬«       | j                  ddd¬«       | j                  ddd¬«       y )Nr   rÂ   ©rÕ   rð   rñ   é   é
   rÛ   éd   é2   éÈ   éc   rÞ   iç  r¾   i   ©rõ   r    s    r   Útest_delete_randomlyz!TestDictImpl.test_delete_randomly  s•   € à×"Ñ"¨°¸AÐ"Ô>Ø×"Ñ"¨°"¸bÐ"ÔAØ×"Ñ"¨°2¸sÐ"ÔCØ×"Ñ"¨°2¸sÐ"ÔCØ×"Ñ"¨°3ÀÐ"ÔDØ×"Ñ"¨°CÀÐ"ÔCØ×"Ñ"¨°CÀÐ"ÕFr   c                 ó,   — | j                  ddd¬«       y )Ni   i   rÞ   r÷   rþ   r    s    r   Útest_delete_randomly_largez'TestDictImpl.test_delete_randomly_large  s   € ð
 	×"Ñ"¨°UÀEÐ"ÕJr   c                 óª  — d}t        | dd«      }d„ }d„ }t        |«      D ]  } ||«      | ||«      <   Œ | j                  t        |«      |«       |j	                  «       \  }}| j                  t        |«      |dz
  «       | j                  | |t        |«      «      «       | j                  | |t        |«      «      «       t        |«      rŠt        |«      }|j	                  «       \  }}| j                  t        |«      |dz
  «       | j                  | |t        |«      «      «       | j                  | |t        |«      «      «       t        |«      rŒŠ| j                  t        |«      d«       | j                  t        «      5 }	|j	                  «        d d d «       | j                  dt        	j                  «      «       y # 1 sw Y   Œ/xY w)Nrù   r   c                 ó$   — dj                  | «      S rå   rÍ   rÏ   s    r   rÐ   z+TestDictImpl.test_popitem.<locals>.make_key  ræ   r   c                 ó$   — dj                  | «      S rè   rÍ   rÏ   s    r   rÓ   z+TestDictImpl.test_popitem.<locals>.make_val  ræ   r   r¾   r   r_   )
r   rÔ   r(   r)   rB   rá   r3   ÚassertInr�   Ú	exception)
r   rÕ   rÉ   rÐ   rÓ   rÖ   r+   r,   r˜   Úraisess
             r   Útest_popitemzTestDictImpl.test_popitem  s{  € ØˆÜ��q˜!Óˆò	(ò	(ô �t–ˆAÙ% a›[ˆA‰h�q‹kŠNð ð 	×Ñœ˜Q› Ô&Ø�y‰y‹{‰ˆˆ1Ø×Ñœ˜Q› ¨¡Ô*Ø×Ñ˜™H¤S¨£VÓ,Ô-Ø×Ñ˜™H¤S¨£VÓ,Ô-ä�!ŒfÜ�A“ˆAØ—9‘9“;‰DˆAˆqØ×ÑœS ›V Q¨¡UÔ+Ø×Ñ˜Q¡¬¨Q«Ó 0Ô1Ø×Ñ˜Q¡¬¨Q«Ó 0Ô1ô �!�fð 	×Ñœ˜Q› Ô#Ø×ÑœxÔ(¨FØ�I‰IŒK÷ )à�‰Ø,Ü�× Ñ Ó!õ	
÷ )Ð(ús   Æ
G	Ç	Gc                 ó  ‡— t        | dd«      }dŠd„ }ˆfd„}t        ‰«      D ]  } ||«      | ||«      <   Œ t        |j                  «       «      D ]8  \  }\  }}| j	                   ||«      |«       | j	                   ||«      |«       Œ: y )Nr   iè  c                 ó$   — dj                  | «      S ©Nz{:04}rÍ   rÏ   s    r   rÐ   z.TestDictImpl.test_iter_items.<locals>.make_key<  s   € Ø—>‘> !Ó$Ð$r   c                 ó,   •— dj                  | ‰z   «      S r  rÍ   )r,   rÕ   s    €r   rÓ   z.TestDictImpl.test_iter_items.<locals>.make_val?  s   ø€ Ø—>‘> ! d¡(Ó+Ð+r   ©r   rÔ   rï   r?   r(   )r   rÉ   rÐ   rÓ   rÖ   r+   r,   rÕ   s          @r   Útest_iter_itemszTestDictImpl.test_iter_items7  sˆ   ø€ ä��q˜!ÓˆØˆò	%ô	,ô �t–ˆAÙ% a›[ˆA‰h�q‹kŠNð ô # 1§7¡7£9Ö-‰IˆA‰v��1Ø×Ñ™X a›[¨!Ô,Ø×Ñ™X a›[¨!Õ,ñ .r   c                 ó$  ‡‡‡— t        | ‰‰«      }ˆfd„}ˆˆfd„}t        ‰«      D ]  } ||«      | ||«      <   Œ t        |j                  «       «      D ]8  \  }\  }}	| j	                   ||«      |«       | j	                   ||«      |	«       Œ: y )Nc                 ó.   •— dj                  | ‰«      d ‰ S )Nú{:0{}}rÍ   )r,   rI   s    €r   rÐ   z+TestDictImpl.check_sizing.<locals>.make_keyN  s   ø€ Ø—?‘? 1 hÓ/°	°Ð:Ð:r   c                 ó:   •— dj                  ‰| z
  dz
  ‰«      d ‰ S )Nr  r¾   rÍ   )r,   rÕ   rJ   s    €€r   rÓ   z+TestDictImpl.check_sizing.<locals>.make_valQ  s#   ø€ Ø—?‘? 4¨!¡8¨a¡<°Ó:¸9¸HÐEÐEr   r  )
r   rI   rJ   rÕ   rÉ   rÐ   rÓ   rÖ   r+   r,   s
    ```      r   Úcheck_sizingzTestDictImpl.check_sizingJ  s„   ú€ ä��x Ó*ˆô	;õ	Fô �t–ˆAÙ% a›[ˆA‰h�q‹kŠNð ô # 1§7¡7£9Ö-‰IˆA‰v��1Ø×Ñ™X a›[¨!Ô,Ø×Ñ™X a›[¨!Õ,ñ .r   c                 óT   — t        dd«      D ]  }| j                  ||d|z  ¬«       Œ y )Nr¾   r   rÂ   )rI   rJ   rÕ   )rÔ   r  )r   rÖ   s     r   Útest_sizingzTestDictImpl.test_sizing\  s+   € ä�q˜!–ˆAØ×Ñ q°1¸1¸a¹4ÐÕ@ñ r   c                 óþ  ‡—  t        t        «      t        «       t        j                  t
        «      d„ «       }t        t        «      d„ «       }d„ Št        ‰«      d„ «       }t        dd¬«      ˆfd„«       }t        d«      t        d	«      }} |||«        |j                  «       «        |j                  «        |j                  j                  «        t        d
«      D ]  }| j                   |||«      «       Œ y)z*https://github.com/numba/numba/issues/6401c                 ó   — t        | «      S r   )r“   )rq   Úcs     r   Útypeof_unitz:TestDictImpl.test_parameterized_types.<locals>.typeof_unitf  s   € ä# CÓ(Ð(r   c                 ót   — |j                  t        j                  | j                  t	        | «      «      |«      S r   )r   r   ÚUniTupler—   r)   )ÚtypÚobjÚcontexts      r   Úunbox_parametrizedzATestDictImpl.test_parameterized_types.<locals>.unbox_parametrizedj  s&   € à—=‘=¤§¡°·	±	¼3¸s»8Ó!DÀcÓJÐJr   c                 ó   — J ‚r   rw   rÏ   s    r   Údict_vs_cache_vs_parametrizedzLTestDictImpl.test_parameterized_types.<locals>.dict_vs_cache_vs_parametrizedn  s   € Ø�1r   c                 ó   ‡— | Šˆfd„}|S )Nc                 ól   •— t         j                  j                  t        j                  ‰«      }| |d<   y )NÚdata)r   r   Úemptyr   r–   )r,   rÉ   r  s     €r   Ú%objmode_vs_cache_vs_parametrized_implz~TestDictImpl.test_parameterized_types.<locals>.ol_dict_vs_cache_vs_parametrized.<locals>.objmode_vs_cache_vs_parametrized_implu  s(   ø€ ä—J‘J×$Ñ$¤U×%7Ñ%7¸Ó=�Ø��&’	r   rw   )r,   r&  r  s     @r   Ú ol_dict_vs_cache_vs_parametrizedzOTestDictImpl.test_parameterized_types.<locals>.ol_dict_vs_cache_vs_parametrizedq  s   ø€ àˆCôð
 9Ð8r   T)ÚnopythonÚcachec                 ó&   •—  ‰| «        ‰|«       y r   rw   )ÚxÚyr!  s     €r   Úset_parametrized_datazDTestDictImpl.test_parameterized_types.<locals>.set_parametrized_data|  s   ø€ ñ *¨!Ô,Ù)¨!Õ,r   )ÚaÚb)r.  rû   N)r
   r“   r	   r   Úregisterr‰   r   r   r   Ú_make_finalizerÚ_reset_overloadsÚ	targetctxÚinitrÔ   rÆ   )	r   r  r  r'  r-  r+  r,  Úiir!  s	           @r   Útest_parameterized_typesz%TestDictImpl.test_parameterized_typesa  sý   ø€ ð 	)ŒÔ'Ó(¬Ô7ä	×	Ñ	œlÓ	+ñ	)ó 
,ð	)ô 
ÔÓ	 ñ	Kó 
!ð	Kò	ô 
Ð/Ó	0ñ	9ó 
1ð	9ô 
�d $Ô	'ó	-ó 
(ð	-ô ˜JÓ'¬°fÓ)=ˆ1ˆÙ˜a Ô#ð 	0Ð×-Ñ-Ó/Ô1Ø×.Ñ.Ô0Ø×'Ñ'×,Ñ,Ô.ä˜–)ˆBØ×ÑÑ3°A°qÓ9Õ:ñ r   N)r   )rs   rt   ru   r·   rº   rÊ   r×   rß   râ   rõ   rÿ   r  r  r  r  r  r6  rw   r   r   r    r    Ò   sP   „ òF
òP!ò
0ò<:ò&-ò&'$óR5.ònGòKò 
òD-ò&-ò$Aó
/;r   r    )rv   rE   rê   Únumba.tests.supportr   Únumbar   r   r   r   Únumba.core.configr   Únumba.core.datamodel.modelsr	   Únumba.extendingr
   r   r   r   r2   rm   Úobjectr   r>   Útupler‰   ÚTyper“   r    rw   r   r   Ú<module>r?     s~   ðñó Û å (ß /Ó /Ý 'Ý 5ß HÓ Hð €
ñ ‰˜A€ôG(ˆ6ô G(ôTˆvô ô64�5ô 4ô�u—z‘zô ô"~;�8õ ~;r   