§
    ƒÛgéM  ã                   ó  — 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	m
Z
 ddlmZ ddlmZ ddl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
j        ¦  «        Z G d„ de¦  «        ZdS )z2
Testing C implementation of the numba dictionary
é    N)ÚTestCase)Úgenerated_jitÚ
_helperlibÚjitÚtypedÚtypes)Ú	IS_32BITS)ÚUniTupleModel)Úregister_modelÚtypeof_implÚunboxéÿÿÿÿé   é   c                   óx   — 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dS )ÚDictzWA wrapper around the C-API to provide a minimal dictionary object for
    testing.
    c                 óf   — || _         || _        || _        |                      ||¦  «        | _        dS )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       úO/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_dictimpl.pyÚ__init__zDict.__init__   s4   € ð ˆŒØˆŒØˆŒØ×'Ò'¨°Ñ9Ô9ˆŒˆˆó    c                 óD   — | j                              | j        ¦  «         d S ©N)r   Únumba_dict_freer   ©r   s    r   Ú__del__zDict.__del__(   s    € ØŒ×Ò ¤Ñ(Ô(Ð(Ð(Ð(r   c                 ó*   — |                       ¦   «         S r   )Údict_lengthr    s    r   Ú__len__zDict.__len__+   s   € Ø×ÒÑ!Ô!Ð!r   c                 ój  — t          |                     ¦   «         ¦  «        }t          |                     ¦   «         ¦  «        }| j                             t	          |¦  «        | j        ¦  «         | j                             t	          |¦  «        | j        ¦  «         |                      ||¦  «         d S r   )ÚbytesÚencoder   ÚassertEqualÚlenr   r   Údict_insert)r   ÚkÚvÚbkÚbvs        r   Ú__setitem__zDict.__setitem__.   sˆ   € Ý�1—8’8‘:”:ÑÔˆÝ�1—8’8‘:”:ÑÔˆØŒ×Ò�C ™GœG T¤\Ñ2Ô2Ð2ØŒ×Ò�C ™GœG T¤\Ñ2Ô2Ð2Ø×Ò˜˜RÑ Ô Ð Ð Ð r   c                 ó  — t          |                     ¦   «         ¦  «        }| j                             t	          |¦  «        | j        ¦  «         |                      |¦  «        \  }}|t          k    rt          ‚| 	                    ¦   «         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   sl   € Ý�1—8’8‘:”:ÑÔˆØŒ×Ò�C ™GœG T¤\Ñ2Ô2Ð2Ø×"Ò" 2Ñ&Ô&‰ˆˆCØ•ÒÐÝˆNà—:’:‘<”<Ðr   c                 óê   — t          |                     ¦   «         ¦  «        }| j                             t	          |¦  «        | j        ¦  «         |                      |¦  «        st          |¦  «        ‚d S r   )r&   r'   r   r(   r)   r   Údict_delitemr3   )r   r+   r-   s      r   Ú__delitem__zDict.__delitem__>   sc   € Ý�1—8’8‘:”:ÑÔˆØŒ×Ò�C ™GœG T¤\Ñ2Ô2Ð2Ø× Ò  Ñ$Ô$ð 	Ý˜1‘+”+Ðð	ð 	r   c                 ó6   — 	 | |         S # t           $ r Y d S w xY wr   )r3   )r   r+   s     r   ÚgetzDict.getD   s2   € ð	Ø˜”7ˆNøÝð 	ð 	ð 	ØˆFˆFð	øøøs   ‚
 Š
—c                 ó    — t          | ¦  «        S r   )ÚDictIterr    s    r   Úitemsz
Dict.itemsJ   s   € Ý˜‰~Œ~Ðr   c                 ó€   — |                       ¦   «         \  }}|                     ¦   «         |                     ¦   «         fS r   )Údict_popitemr4   )r   r+   r,   s      r   ÚpopitemzDict.popitemM   s2   € Ø× Ò Ñ"Ô"‰ˆˆ1Ø�xŠx‰zŒz˜1Ÿ8š8™:œ:Ð%Ð%r   c                 óÀ   — t          j        ¦   «         }| j                             t          j        |¦  «        d||¦  «        }| 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   sX   € ÝŒ_ÑÔˆØ”×-Ò-ÝŒL˜ÑÔ˜a ¨8ñ
ô 
ˆð 	Œ×Ò˜F AÑ&Ô&Ð&Øˆ	r   c                 ó@   — | j                              | j        ¦  «        S r   )r   Únumba_dict_lengthr   r    s    r   r#   zDict.dict_length]   s   € ØŒw×(Ò(¨¬Ñ1Ô1Ð1r   c                 óž   — t          |¦  «        }| j                             | j        |||¦  «        }| j                             |d¦  «         d S rD   )Úhashr   Únumba_dict_insert_ezr   ÚassertGreaterEqual)r   Ú	key_bytesÚ	val_bytesÚhashvalrK   s        r   r*   zDict.dict_insert`   sO   € Ý�y‘/”/ˆØ”×-Ò-ØŒG�Y ¨ñ
ô 
ˆð 	Œ×"Ò" 6¨1Ñ-Ô-Ð-Ð-Ð-r   c                 óè   — t          |¦  «        }t          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   si   € Ý�y‘/”/ˆÝÔ2°4´<Ñ@Ô@ˆØŒW×&Ò&ØŒG�Y ¨ñ
ô 
ˆð 	Œ×"Ò" 2¥zÑ2Ô2Ð2Ø�<Ô%Ð%Ð%r   c                 óæ   — |                       |¦  «        \  }}|t          k    rdS t          |¦  «        }| j                             | j        ||¦  «        }| j                             |d¦  «         dS )NFr   T)r1   r2   rO   r   Únumba_dict_delitemr   r(   )r   rR   r5   ÚoldvalrT   rK   s         r   r9   zDict.dict_delitemp   sl   € Ø×%Ò% iÑ0Ô0‰
ˆˆFØ•ÒÐØ�5Ý�y‘/”/ˆØ”×+Ò+¨D¬G°W¸bÑAÔAˆØŒ×Ò˜F AÑ&Ô&Ð&Øˆtr   c                 ó.  — t          j        | j        ¦  «        }t          j        | j        ¦  «        }| j                             | j        ||¦  «        }|dk    r/|dk    rt          d¦  «        ‚| 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°YÀ	ÑJÔJˆØ�QŠ;ˆ;Ø˜Š|ˆ|ÝÐ?Ñ@Ô@Ð@à”—’˜iÑ(Ô(Ð(ØŒ 	¤Ð/Ð/r   c                 óF   — | j                              || j        ¦  «         d S r   )r   Únumba_dict_iterr   )r   Úitptrs     r   Ú	dict_iterzDict.dict_iter„   s"   € ØŒ×Ò  t¤wÑ/Ô/Ð/Ð/Ð/r   c                 ó¶  — t          j        d¦  «        }t          j        d¦  «        }| j                             |t          j        |¦  «        t          j        |¦  «        ¦  «        }|dk    rt          d¦  «        ‚|dk    rd S | j                             |d¦  «         | j                             |j        t          z  dd¬¦  «         | j                             |j        t          z  dd¬¦  «         t           j
        | j        z                       |j        ¦  «        }t           j
        | j        z                       |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Ô%5ñ
ô 
ˆð �RŠ<ˆ<ÝÐ1Ñ2Ô2Ð2Ø�rŠ\ˆ\ØˆFàŒG×&Ò& v¨qÑ1Ô1Ð1ð
 ŒG×Ò ¤­5Ñ 0°!Ð9JÐÑKÔKÐKØŒG×Ò ¤­5Ñ 0°!Ð9JÐÑKÔKÐKå”= 4¤<Ñ/×=Ò=¸b¼hÑGÔGˆCÝ”= 4¤<Ñ/×=Ò=¸b¼hÑGÔGˆCØ”9˜cœ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ð 2ð 2ð.ð .ð .ð&ð &ð &ðð ð ð	0ð 	0ð 	0ð0ð 0ð 0ð(ð (ð (ð (ð (r   r   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ ZeZdS )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                 ó  — || _         | j         j                             ¦   «         }t          j        |z  d¦  «        | _        t          j        | j        t          j        ¦  «        | _        | j          	                    | j        ¦  «         d S rD   )
Úparentr   Únumba_dict_iter_sizeofrE   Úc_char_pÚit_state_bufÚcastrF   Úitrf   )r   rz   Úitsizes      r   r   zDictIter.__init__¥   sk   € ØˆŒØ””×6Ò6Ñ8Ô8ˆÝ#œ_¨vÑ5°qÑ9Ô9ˆÔÝ”+˜dÔ/µ´ÑAÔAˆŒØŒ×Ò˜dœgÑ&Ô&Ð&Ð&Ð&r   c                 ó   — | S r   rw   r    s    r   Ú__iter__zDictIter.__iter__¬   s   € Øˆr   c                 ó¬   — | j                              | j        ¦  «        }|€t          ‚|\  }}|                     ¦   «         |                     ¦   «         fS r   )rz   rr   r   ÚStopIterationr4   )r   Úoutr+   r,   s       r   Ú__next__zDictIter.__next__¯   sH   € ØŒk×(Ò(¨¬Ñ1Ô1ˆØˆ;ÝÐà‰DˆAˆqØ—8’8‘:”:˜qŸxšx™zœzÐ)Ð)r   N)rs   rt   ru   rv   r   r‚   r†   Únextrw   r   r   r>   r>   Ÿ   sL   € € € € € ðð ð
'ð 'ð 'ðð ð ð*ð *ð *ð €D€D€Dr   r>   c                   ó   — e Zd ZdZd„ ZdS )ÚParametrizedz_supporting type for TestDictImpl.test_parametrized_types
    needs to be global to be cacheablec                 ó<   — t          d„ |D ¦   «         ¦  «        sJ ‚d S )Nc              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S r   )Ú
isinstanceÚstr)Ú.0r,   s     r   ú	<genexpr>z(Parametrized.__init__.<locals>.<genexpr>¾   s,   è è € Ð3Ð3¨!•:˜a¥Ñ%Ô%Ð3Ð3Ð3Ð3Ð3Ð3r   )Úall)r   Útups     r   r   zParametrized.__init__½   s+   € ÝÐ3Ð3¨sÐ3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3r   N)rs   rt   ru   rv   r   rw   r   r   r‰   r‰   º   s-   € € € € € ð*ð *ð4ð 4ð 4ð 4ð 4r   r‰   c                   ó>   ‡ — 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                 ó¢   •— t          t          | ¦  «                             d¦  «         t          j        | _        t          |¦  «        | _        d S )Nr“   )Úsuperr“   r   r   Úunicode_typeÚdtyper)   Ún)r   rX   Ú	__class__s     €r   r   zParametrizedType.__init__Å   s>   ø€ ÝÕ Ñ%Ô%×.Ò.Ð/AÑBÔBÐBÝÔ'ˆŒ
Ý�U‘”ˆŒˆˆr   c                 ó   — | j         S r   ©r˜   r    s    r   rp   zParametrizedType.keyÊ   s	   € àŒvˆr   c                 ó   — | j         S r   r›   r    s    r   r$   zParametrizedType.__len__Î   s	   € ØŒvˆr   )	rs   rt   ru   rv   r   Úpropertyrp   r$   Ú__classcell__)r™   s   @r   r“   r“   Á   sl   ø€ € € € € ð+ð +ðð ð ð ð ð
 ðð ñ „Xððð ð ð ð ð ð r   r“   c                   ód   — 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dS )Ú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¦  «        | _        dS )zEBind to the c_helper library and provide the ctypes wrapper.
        rw   c                 ó\   — t          j        |g|¢R Ž } |t          j        |          ¦  «        S r   )rE   Ú	CFUNCTYPEr   Ú	c_helpers)ÚnameÚrestypeÚargtypesÚprotos       r   Úwrapz TestDictImpl.setUp.<locals>.wrapÚ   s2   € ÝÔ$ WÐ8¨xÐ8Ð8Ð8ˆEØ�5�Ô-¨dÔ3Ñ4Ô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ð 	5ð 	5ð 	5ð
  $˜tØÝŒLñ 
ô  
ˆÔð %) DØÝŒLå”˜vÑ&Ô&ÝÔ ÝÔ ÝÔ ð	ñ	%
ô 	%
ˆÔ!ð  $˜tØØØˆHñ 
ô  
ˆÔð "& ØÝÔØˆHñ"
ô "
ˆÔð %) DØÝŒLàÝ”ØÝ”ð	ñ	%
ô 	%
ˆÔ!ð  "& ØÝÔàÝ”ØÝ”ð	ñ	"
ô 	"
ˆÔð #' $ØÝŒLàØÝÔ ðñ#
ô #
ˆÔð #' $ØÝŒLàÝ”Ý”ðñ#
ô #
ˆÔð '+ dØÝŒOñ'
ô '
ˆÔ#ð  $˜tØØàØðñ 
ô  
ˆÔð %) DØÝŒLàÝ”�vœÑ/Ô/Ý”�vœÑ/Ô/ðñ%
ô %
ˆÔ!Ð!Ð!r   c                 óZ   — |                       ¦   «         }|                      |d¦  «         d S rD   )r±   r(   )r   Úrets     r   Útest_simple_c_testzTestDictImpl.test_simple_c_test[  s/   € à×"Ò"Ñ$Ô$ˆØ×Ò˜˜aÑ Ô Ð Ð Ð r   c                 óÖ  — t          | dd¦  «        }|                      t          |¦  «        d¦  «         |                      |                     d¦  «        ¦  «         d|d<   |                      t          |¦  «        d¦  «         |                      |                     d¦  «        ¦  «         |                      |d         d¦  «         d|d<   |                      t          |¦  «        d¦  «         |                      |d         d¦  «         d|d	<   |                      t          |¦  «        d
¦  «         |                      |d         d¦  «         |                      |d	         d¦  «         d|d<   |                      t          |¦  «        d¦  «         |                      |d         d¦  «         |                      |d	         d¦  «         |                      |d         d¦  «         d S )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`  sÃ  € å��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                 óR  — t          | dd¦  «        }d„ }d„ }t          |¦  «        D ]?} ||¦  «        | ||¦  «        <   |                      t          |¦  «        |dz   ¦  «         Œ@t          |¦  «        D ]0}|                      | ||¦  «                  ||¦  «        ¦  «         Œ1d S )Nr   c                 ó,   — d                      | ¦  «        S )Nz	key_{:04}©Úformat©r,   s    r   Úmake_keyz3TestDictImpl.check_insertion_many.<locals>.make_key‚  ó   € Ø×%Ò% aÑ(Ô(Ð(r   c                 ó,   — d                      | ¦  «        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Ø%˜X a™[œ[ˆAˆhˆh�q‰kŒk‰NØ×Ò�S ™VœV Q¨¡UÑ+Ô+Ð+Ð+õ �t‘”ð 	:ð 	:ˆAØ×Ò˜Q˜x˜x¨™{œ{œ^¨X¨X°a©[¬[Ñ9Ô9Ð9Ð9ð	:ð 	:r   c                 ó  — |                       d¬¦  «         |                       d¬¦  «         |                       d¬¦  «         |                       d¬¦  «         |                       d¬¦  «         |                       d¬¦  «         |                       d¬¦  «         |                       d	¬¦  «         |                       d
¬¦  «         |                       d¬¦  «         |                       d¬¦  «         |                       d¬¦  «         d S )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¦  «        }|                      t          |¦  «        d¦  «         |                      |                     d¦  «        ¦  «         d|d<   d|d<   d|d	<   |                      t          |¦  «        d
¦  «         |                      |d         d¦  «         |                      |d         d¦  «         |                      |d	         d¦  «         |                      t          |¦  «        d
¦  «         |d= |                      |                     d¦  «        ¦  «         |                      |d         d¦  «         |                      |d	         d¦  «         |                      t          |¦  «        d¦  «         |                      t          ¦  «        5  |d= d d d ¦  «         n# 1 swxY w Y   |d	= |                      |                     d¦  «        ¦  «         |                      |d         d¦  «         |                      |                     d	¦  «        ¦  «         |                      t          |¦  «        d¦  «         |d= |                      |                     d¦  «        ¦  «         |                      |                     d¦  «        ¦  «         |                      |                     d	¦  «        ¦  «         |                      t          |¦  «        d¦  «         d S )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   Æ&F6Æ6F:Æ=F:r   c                 óŽ  — t          j        |¦  «         t          | dd¦  «        }i }d„ }d„ }t          |¦  «        D ]}	 ||	¦  «        | ||	¦  «        <   Œt          |¦  «        D ]9}	 ||	¦  «        }
 ||	¦  «        }|||
<   |                      ||
         |¦  «         Œ:|                      t          |¦  «        |¦  «         t          j        t          |¦  «        |¦  «        }|                     ¦   «         }t          |d¬¦  «        D ]1\  }	}
||
= ||
= |                      t          |¦  «        ||	z
  ¦  «         Œ2|                      t          |¦  «        ||z
  ¦  «         |D ]*}
|  
                    |                     |
¦  «        ¦  «         Œ+|D ]$}
|                      ||
         ||
         ¦  «         Œ%t          |¦  «        D ](}	 |||	z   ¦  «        }
 |||	z   ¦  «        }|||
<   |||
<   Œ)|                      t          |¦  «        t          |¦  «        ¦  «         |D ]$}
|                      ||
         ||
         ¦  «         Œ%d S )Nr   c                 ó,   — d                      | ¦  «        S ©Nzk_{:06x}rÍ   rÏ   s    r   rÐ   z4TestDictImpl.check_delete_randomly.<locals>.make_keyÔ  ó   € Ø×$Ò$ QÑ'Ô'Ð'r   c                 ó,   — d                      | ¦  «        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Ø%˜X a™[œ[ˆAˆhˆh�q‰kŒk‰NˆNõ �t‘”ð 	&ð 	&ˆAØ�˜‘”ˆAØ�˜‘”ˆAØˆD�‰GØ×Ò˜Q˜qœT 1Ñ%Ô%Ð%Ð%à×Ò�˜Q™œ Ñ&Ô&Ð&õ ”=¥ d¡¤¨UÑ3Ô3ˆØ—’‘”ˆÝ˜h¨aÐ0Ñ0Ô0ð 	/ð 	/‰DˆAˆqØ�!�Ø�q�	Ø×Ò�S ™VœV T¨A¡XÑ.Ô.Ð.Ð.Ø×Ò�˜Q™œ ¨¡Ñ.Ô.Ð.ð ð 	(ð 	(ˆAØ×Ò˜aŸeše A™hœhÑ'Ô'Ð'Ð'ð ð 	.ð 	.ˆAØ×Ò˜Q˜qœT 6¨!¤9Ñ-Ô-Ð-Ð-õ �w‘”ð 	ð 	ˆAØ�˜ ™Ñ"Ô"ˆAØ�˜ ™Ñ"Ô"ˆAØˆF�1‰IØˆAˆa‰DˆDà×Ò�˜V™œ¥c¨!¡f¤fÑ-Ô-Ð-ð ð 	.ð 	.ˆAØ×Ò˜Q˜qœT 6¨!¤9Ñ-Ô-Ð-Ð-ð	.ð 	.r   c                 óV  — |                       ddd¬¦  «         |                       ddd¬¦  «         |                       ddd	¬¦  «         |                       dd
d¬¦  «         |                       ddd¬¦  «         |                       ddd¬¦  «         |                       ddd¬¦  «         d S )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ÔAÐAØ×"Ò"¨°2¸sÐ"ÑCÔCÐCØ×"Ò"¨°2¸sÐ"ÑCÔCÐCØ×"Ò"¨°3ÀÐ"ÑDÔDÐDØ×"Ò"¨°CÀÐ"ÑCÔCÐCØ×"Ò"¨°CÀÐ"ÑFÔFÐFÐFÐFr   c                 ó6   — |                       ddd¬¦  «         d S )Ni   i   rÞ   r÷   rþ   r    s    r   Útest_delete_randomly_largez'TestDictImpl.test_delete_randomly_large  s%   € ð
 	×"Ò"¨°UÀEÐ"ÑJÔJÐJÐJÐJr   c                 ó   — d}t          | dd¦  «        }d„ }d„ }t          |¦  «        D ]} ||¦  «        | ||¦  «        <   Œ|                      t          |¦  «        |¦  «         |                     ¦   «         \  }}|                      t          |¦  «        |dz
  ¦  «         |                      | |t          |¦  «        ¦  «        ¦  «         |                      | |t          |¦  «        ¦  «        ¦  «         t          |¦  «        r³t          |¦  «        }|                     ¦   «         \  }}|                      t          |¦  «        |dz
  ¦  «         |                      | |t          |¦  «        ¦  «        ¦  «         |                      | |t          |¦  «        ¦  «        ¦  «         t          |¦  «        °³|                      t          |¦  «        d¦  «         |                      t          ¦  «        5 }	|                     ¦   «          d d d ¦  «         n# 1 swxY w Y   |                      dt          |	j	        ¦  «        ¦  «         d S )Nrù   r   c                 ó,   — d                      | ¦  «        S rå   rÍ   rÏ   s    r   rÐ   z+TestDictImpl.test_popitem.<locals>.make_key  ræ   r   c                 ó,   — d                      | ¦  «        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  si  € ØˆÝ��q˜!ÑÔˆð	(ð 	(ð 	(ð	(ð 	(ð 	(õ �t‘”ð 	)ð 	)ˆAØ%˜X a™[œ[ˆAˆhˆh�q‰kŒk‰NˆNà×Ò�˜Q™œ Ñ&Ô&Ð&Ø�yŠy‰{Œ{‰ˆˆ1Ø×Ò�˜Q™œ ¨¡Ñ*Ô*Ð*Ø×Ò˜˜H˜H¥S¨¡V¤VÑ,Ô,Ñ-Ô-Ð-Ø×Ò˜˜H˜H¥S¨¡V¤VÑ,Ô,Ñ-Ô-Ð-å�!‰fŒfð 	2Ý�A‘”ˆAØ—9’9‘;”;‰DˆAˆqØ×Ò�S ™VœV Q¨¡UÑ+Ô+Ð+Ø×Ò˜Q  ­¨Q©¬Ñ 0Ô 0Ñ1Ô1Ð1Ø×Ò˜Q  ­¨Q©¬Ñ 0Ô 0Ñ1Ô1Ð1õ �!‰fŒfð 	2ð 	×Ò�˜Q™œ Ñ#Ô#Ð#Ø×Ò�xÑ(Ô(ð 	¨FØ�IŠI‰KŒKˆKð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à�ŠØ,Ý�Ô Ñ!Ô!ñ	
ô 	
ð 	
ð 	
ð 	
s   Ç:HÈHÈ"Hc                 ó`  ‡— t          | dd¦  «        }dŠd„ }ˆfd„}t          ‰¦  «        D ]} ||¦  «        | ||¦  «        <   Œt          |                     ¦   «         ¦  «        D ]F\  }\  }}|                       ||¦  «        |¦  «         |                       ||¦  «        |¦  «         ŒGd S )Nr   iè  c                 ó,   — d                      | ¦  «        S ©Nz{:04}rÍ   rÏ   s    r   rÐ   z.TestDictImpl.test_iter_items.<locals>.make_key<  s   € Ø—>’> !Ñ$Ô$Ð$r   c                 ó4   •— d                      | ‰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Ø%˜X a™[œ[ˆAˆhˆh�q‰kŒk‰NˆNõ # 1§7¢7¡9¤9Ñ-Ô-ð 	-ð 	-‰IˆA‰v��1Ø×Ò˜X˜X a™[œ[¨!Ñ,Ô,Ð,Ø×Ò˜X˜X a™[œ[¨!Ñ,Ô,Ð,Ð,ð	-ð 	-r   c                 óf  ‡‡‡— t          | ‰‰¦  «        }ˆfd„}ˆˆfd„}t          ‰¦  «        D ]} ||¦  «        | ||¦  «        <   Œt          |                     ¦   «         ¦  «        D ]F\  }\  }}	|                       ||¦  «        |¦  «         |                       ||¦  «        |	¦  «         ŒGd S )Nc                 ó@   •— d                      | ‰¦  «        d ‰…         S )Nú{:0{}}rÍ   )r,   rI   s    €r   rÐ   z+TestDictImpl.check_sizing.<locals>.make_keyN  s    ø€ Ø—?’? 1 hÑ/Ô/°	°°	Ô:Ð:r   c                 óL   •— d                      ‰| 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¸9ÔEÐEr   r  )
r   rI   rJ   rÕ   rÉ   rÐ   rÓ   rÖ   r+   r,   s
    ```      r   Úcheck_sizingzTestDictImpl.check_sizingJ  s÷   øøø€ å��x Ñ*Ô*ˆð	;ð 	;ð 	;ð 	;ð 	;ð	Fð 	Fð 	Fð 	Fð 	Fð 	Fõ �t‘”ð 	)ð 	)ˆAØ%˜X a™[œ[ˆAˆhˆh�q‰kŒk‰NˆNõ # 1§7¢7¡9¤9Ñ-Ô-ð 	-ð 	-‰IˆA‰v��1Ø×Ò˜X˜X a™[œ[¨!Ñ,Ô,Ð,Ø×Ò˜X˜X a™[œ[¨!Ñ,Ô,Ð,Ð,ð	-ð 	-r   c                 ób   — t          dd¦  «        D ]}|                      ||d|z  ¬¦  «         Œd S )Nr¾   r   rÂ   )rI   rJ   rÕ   )rÔ   r  )r   rÖ   s     r   Útest_sizingzTestDictImpl.test_sizing\  sI   € å�q˜!‘”ð 	Að 	AˆAØ×Ò q°1¸1¸a¹4ÐÑ@Ô@Ð@Ð@ð	Að 	Ar   c                 ój  ‡—  t          t          ¦  «        t          ¦  «         t          j        t
          ¦  «        d„ ¦   «         }t          t          ¦  «        d„ ¦   «         }t          d„ ¦   «         Št          dd¬¦  «        ˆfd„¦   «         }t          d¦  «        t          d¦  «        }} |||¦  «          | 	                    ¦   «         ¦   «          | 
                    ¦   «          |j                             ¦   «          t          d	¦  «        D ]!}|                       |||¦  «        ¦  «         Œ"d
S )z*https://github.com/numba/numba/issues/6401c                 ó    — t          | ¦  «        S r   )r“   )rq   Úcs     r   Útypeof_unitz9TestDictImpl.test_parametrized_types.<locals>.typeof_unitf  s   € å# CÑ(Ô(Ð(r   c                 óx   — |                      t          j        | j        t	          | ¦  «        ¦  «        |¦  «        S r   )r   r   ÚUniTupler—   r)   )ÚtypÚobjÚcontexts      r   Úunbox_parametrizedz@TestDictImpl.test_parametrized_types.<locals>.unbox_parametrizedj  s*   € à—=’=¥¤°´	½3¸s¹8¼8Ñ!DÔ!DÀcÑJÔJÐJr   c                 ó   ‡— | Šˆfd„}|S )Nc                 óf   •— t           j                             t          j        ‰¦  «        }| |d<   d S )NÚdata)r   r   Úemptyr   r–   )r,   rÉ   r  s     €r   Ú%objmode_vs_cache_vs_parametrized_implzzTestDictImpl.test_parametrized_types.<locals>.dict_vs_cache_vs_parametrized.<locals>.objmode_vs_cache_vs_parametrized_implr  s*   ø€ å”J×$Ò$¥UÔ%7¸Ñ=Ô=�Ø��&‘	�	�	r   rw   )r,   r$  r  s     @r   Údict_vs_cache_vs_parametrizedzKTestDictImpl.test_parametrized_types.<locals>.dict_vs_cache_vs_parametrizedn  s)   ø€ àˆCðð ð ð ð ð
 9Ð8r   T)ÚnopythonÚcachec                 ó4   •—  ‰| ¦  «          ‰|¦  «         d S r   rw   )ÚxÚyr%  s     €r   Úset_parametrized_datazCTestDictImpl.test_parametrized_types.<locals>.set_parametrized_datay  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*  Úiir%  s          @r   Útest_parametrized_typesz$TestDictImpl.test_parametrized_typesa  so  ø€ ð 	)�Õ'Ñ(Ô(­Ñ7Ô7Ð7å	Ô	�lÑ	+Ô	+ð	)ð 	)ñ 
,Ô	+ð	)õ 
ÕÑ	 Ô	 ð	Kð 	Kñ 
!Ô	 ð	Kõ 
ð	9ð 	9ñ 
Œð	9õ 
�d $Ð	'Ñ	'Ô	'ð	-ð 	-ð 	-ð 	-ñ 
(Ô	'ð	-õ ˜JÑ'Ô'­°fÑ)=Ô)=ˆ1ˆØÐ˜a Ñ#Ô#Ð#ð 	0Ð×-Ò-Ñ/Ô/Ñ1Ô1Ð1Ø×.Ò.Ñ0Ô0Ð0ØÔ'×,Ò,Ñ.Ô.Ð.å˜‘)”)ð 	;ð 	;ˆBØ×ÒÐ3Ð3°A°qÑ9Ô9Ñ:Ô:Ð:Ð:ð	;ð 	;r   N)r   )rs   rt   ru   r·   rº   rÊ   r×   rß   râ   rõ   rÿ   r  r  r  r  r  r4  rw   r   r   r    r    Ò   sû   € € € € € ðF
ð F
ð F
ðP!ð !ð !ð
0ð 0ð 0ð<:ð :ð :ð&-ð -ð -ð&'$ð '$ð '$ðR5.ð 5.ð 5.ð 5.ðnGð Gð GðKð Kð Kð 
ð  
ð  
ðD-ð -ð -ð&-ð -ð -ð$Að Að Að
,;ð ,;ð ,;ð ,;ð ,;r   r    )rv   rE   rê   Únumba.tests.supportr   Únumbar   r   r   r   r   Únumba.core.configr	   Únumba.core.datamodel.modelsr
   Únumba.extendingr   r   r   r2   rm   Úobjectr   r>   Útupler‰   ÚTyper“   r    rw   r   r   ú<module>r=     s©  ððð ð €€€Ø €€€à (Ð (Ð (Ð (Ð (Ð (Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >ð €
ð Ðˆˆ˜A€ðG(ð G(ð G(ð G(ð G(ˆ6ñ G(ô G(ð G(ðTð ð ð ð ˆvñ ô ð ð64ð 4ð 4ð 4ð 4�5ñ 4ô 4ð 4ðð ð ð ð �u”zñ ô ð ð"{;ð {;ð {;ð {;ð {;�8ñ {;ô {;ð {;ð {;ð {;r   