U
    iâËd¬ ã                   @   sð  d Z ddlZddlZddlZddlmZmZ ddlmZm	Z	m
Z
mZ ddlmZ ddlmZmZmZ ddlmZ ddlm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  G dd„ deeƒZ!G dd„ deƒZ"G dd„ deeƒZ#G dd„ dƒZ$G dd„ dee$ƒZ%G dd„ dee$ƒZ&G dd„ deeƒZ'G dd„ deƒZ(G dd„ deƒZ)G dd „ d eƒZ*ed!ej+fgd"�G d#d$„ d$e,ƒƒZ-G d%d&„ d&eƒZ.G d'd(„ d(eƒZ/G d)d*„ d*eƒZ0G d+d,„ d,eeƒZ1G d-d.„ d.eeƒZ2e3d/k�rìe 4¡  dS )0zâ
Testing numba implementation of the numba dictionary.

The tests here only check that the numba typing and codegen are working
correctly.  Detailed testing of the underlying dictionary operations is done
in test_dictimpl.py.
é    N)ÚnjitÚ	literally)Úint32Úint64Úfloat32Úfloat64)Útypeof)ÚDictÚ
dictobjectÚList©Ú_sentry_safe_cast)ÚTypingError)Útypes)ÚTestCaseÚMemoryLeakMixinÚunittestÚoverride_configÚforbid_codegen)Újitclass)Úoverloadc                   @   s´  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!e" #e$j%d?kd@¡dAdB„ ƒZ&dCdD„ Z'dEdF„ Z(dGdH„ Z)dIdJ„ Z*dKdL„ Z+dMdN„ Z,dOdP„ Z-dQdR„ Z.dSdT„ Z/dUdV„ Z0e"j1dWdX„ ƒZ2dYdZ„ Z3d[d\„ Z4d]d^„ Z5d_d`„ Z6dadb„ Z7dcdd„ Z8dedf„ Z9dgS )hÚTestDictObjectc                 C   sX   t dd„ ƒ}|  |dd�d¡ |  |dd�d¡ |  |dd�d¡ |  |d	d�d¡ d
S )z%
        Exercise bool(dict)
        c                 S   s.   t  tt¡}t| ƒD ]}|d ||< qt|ƒS ©Né   )r
   Únew_dictr   r   ÚrangeÚbool©ÚnÚdÚi© r!   úT/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/tests/test_dictobject.pyÚfoo    s    z*TestDictObject.test_dict_bool.<locals>.foor   ©r   Fr   Té   éd   N©r   ÚassertEqual©Úselfr#   r!   r!   r"   Útest_dict_bool   s    
zTestDictObject.test_dict_boolc                 C   sX   t dd„ ƒ}|  |dd�d¡ |  |dd�d¡ |  |dd�d¡ |  |dd�d¡ dS )	zA
        Exercise dictionary creation, insertion and len
        c                 S   s.   t  tt¡}t| ƒD ]}|d ||< qt|ƒS r   )r
   r   r   r   r   Úlenr   r!   r!   r"   r#   4   s    z,TestDictObject.test_dict_create.<locals>.foor   r$   r   r%   r&   Nr'   r)   r!   r!   r"   Útest_dict_create0   s    
zTestDictObject.test_dict_createc                 C   sj   t dd„ ƒ}|  |ddddgƒdddg¡ |  |ddddgƒdddg¡ |  |dd	ddgƒdddg¡ dS )
zA
        Exercise dictionary creation, insertion and get
        c                 S   sD   t  tt¡}t| ƒD ]}|||< qg }|D ]}| | |¡¡ q*|S ©N)r
   r   r   r   r   ÚappendÚget)r   Útargetsr   r    ÚoutputÚtr!   r!   r"   r#   H   s    
z)TestDictObject.test_dict_get.<locals>.fooé   r   r   é	   Né
   éÿÿÿÿr'   r)   r!   r!   r"   Útest_dict_getD   s
    
zTestDictObject.test_dict_getc                 C   s8   t dd„ ƒ}|  |dddƒd¡ |  |dddƒd¡ dS )z8
        Exercise dict.get(k, d) where d is set
        c                 S   s.   t  tt¡}t| ƒD ]}|||< q| ||¡S r.   ©r
   r   r   r   r   r0   )r   ÚtargetÚdefaultr   r    r!   r!   r"   r#   \   s    
z6TestDictObject.test_dict_get_with_default.<locals>.foor4   é   r7   Nr'   r)   r!   r!   r"   Útest_dict_get_with_defaultX   s    
z)TestDictObject.test_dict_get_with_defaultc              	   C   s´   t dd„ ƒ}dddg}dddg}|  |||dƒd¡ |  |||dƒd¡ |  |||dƒd¡ |  ¡  |  ¡  |  t¡� |||d	ƒ W 5 Q R X |  t¡� |||d
ƒ W 5 Q R X dS )z1
        Exercise dictionary __getitem__
        c                 S   s0   t  tt¡}t| |ƒD ]\}}|||< q|| S r.   ©r
   r   r   r   Úzip©ÚkeysÚvalsr:   r   ÚkÚvr!   r!   r"   r#   l   s    
z-TestDictObject.test_dict_getitem.<locals>.foor   r%   r<   çš™™™™™¹?çš™™™™™É?ç333333Ó?r   é   N©r   r(   Úassert_no_memory_leakÚdisable_leak_checkÚassertRaisesÚKeyError©r*   r#   rA   rB   r!   r!   r"   Útest_dict_getitemh   s    
	

z TestDictObject.test_dict_getitemc                 C   sn   t dd„ ƒ}dddg}dddg}tdt|ƒƒD ]:}|  ||d	|… |d	|… ƒ||d  ||d  f¡ q.d	S )
ú.
        Exercise dictionary .popitem
        c                 S   s0   t  tt¡}t| |ƒD ]\}}|||< q| ¡ S r.   )r
   r   r   r   r?   Úpopitem©rA   rB   r   rC   rD   r!   r!   r"   r#   ˆ   s    
z-TestDictObject.test_dict_popitem.<locals>.foor   r%   r<   rE   rF   rG   N)r   r   r,   r(   ©r*   r#   rA   rB   r    r!   r!   r"   Útest_dict_popitem„   s    
	

þz TestDictObject.test_dict_popitemc              	      s¤   t dd„ ƒ‰ t ‡ fdd„ƒ}dddg}dd	d
g}tt|ƒƒD ].}|  |||dd�ˆ jtt||ƒƒdd�¡ q<|  ¡  |  ¡  |  	t
¡� |||dd� W 5 Q R X dS )rP   c                 S   s:   d\}}t |ƒD ] }|  ¡ \}}||7 }||8 }q||fS )N©r   r   )r   rQ   )r   ÚnpopZkeysumZvalsumÚ_rC   rD   r!   r!   r"   ÚcoreŸ   s    
z3TestDictObject.test_dict_popitem_many.<locals>.corec                    s2   t  tt¡}t| |ƒD ]\}}|||< qˆ ||ƒS r.   )r
   r   r   r?   )rA   rB   rV   r   rC   rD   ©rX   r!   r"   r#   ©   s    
z2TestDictObject.test_dict_popitem_many.<locals>.foor   r%   r<   r6   é   é   )rV   rH   N)r   r   r,   r(   Úpy_funcÚdictr?   rJ   rK   rL   rM   rS   r!   rY   r"   Útest_dict_popitem_manyš   s    
	

þz%TestDictObject.test_dict_popitem_manyc              	   C   s¬   t dd„ ƒ}dddg}dddg}|  |||dƒd	¡ |  |||dƒd
¡ |  |||dƒd¡ |  |||dƒd¡ |  ¡  |  ¡  t dd„ ƒ}|  t¡� |ƒ  W 5 Q R X dS )ú*
        Exercise dictionary .pop
        c                 S   s<   t  tt¡}t| |ƒD ]\}}|||< q| |d ¡t|ƒfS r.   )r
   r   r   r   r?   Úpopr,   r@   r!   r!   r"   r#   Ç   s    
z)TestDictObject.test_dict_pop.<locals>.foor   r%   r<   rE   rF   rG   )rE   r%   )rF   r%   )rG   r%   r   ©Nr<   c                  S   s   t  tt¡} |  d¡S )Nr   ©r
   r   r   r   r`   ©r   r!   r!   r"   r#   Þ   s    NrI   rN   r!   r!   r"   Útest_dict_popÃ   s    
	


zTestDictObject.test_dict_popc              	      sp   t dd„ ƒ‰ t ‡ fdd„ƒ}dddg}dd	d
g}dddddddddg	}|  ||||ƒˆ  tt||ƒƒ|¡¡ dS )r_   c                 S   s6   d}|D ](}|||   |d¡ t| ƒ 7 }|d9 }q|S )Nr   g°rh‘í|¿?r%   )r`   r,   )r   ÚpopsÚtotalrC   r!   r!   r"   rX   ì   s
    
z/TestDictObject.test_dict_pop_many.<locals>.corec                    s2   t  tt¡}t| |ƒD ]\}}|||< qˆ ||ƒS r.   r>   )rA   rB   re   r   rC   rD   rY   r!   r"   r#   ô   s    
z.TestDictObject.test_dict_pop_many.<locals>.foor   r%   r<   rE   rF   rG   r   r7   N)r   r(   r\   r]   r?   )r*   r#   rA   rB   re   r!   rY   r"   Útest_dict_pop_manyç   s    



þz!TestDictObject.test_dict_pop_manyc              	   C   s’   t dd„ ƒ}dddg}dddg}|  |||dƒd	¡ |  |||dƒd	¡ |  |||dƒd	¡ |  ¡  |  ¡  |  t¡� |||d
ƒ W 5 Q R X d S )Nc                 S   s@   t  tt¡}t| |ƒD ]\}}|||< q||= t|ƒ| |¡fS r.   )r
   r   r   r   r?   r,   r0   r@   r!   r!   r"   r#     s
    
z-TestDictObject.test_dict_delitem.<locals>.foor   r%   r<   rE   rF   rG   )r%   Nr   rI   rN   r!   r!   r"   Útest_dict_delitem  s    


z TestDictObject.test_dict_delitemc                 C   s6   t dd„ ƒ}dddg}dddg}|  |||ƒd	¡ d
S )z%
        Exercise dict.clear
        c                 S   sD   t  tt¡}t| |ƒD ]\}}|||< qt|ƒ}| ¡  |t|ƒfS r.   )r
   r   r   r   r?   r,   Úclear)rA   rB   r   rC   rD   Zb4r!   r!   r"   r#      s    
z+TestDictObject.test_dict_clear.<locals>.foor   r%   r<   rE   rF   rG   )r<   r   Nr'   rN   r!   r!   r"   Útest_dict_clear  s
    



zTestDictObject.test_dict_clearc                 C   sZ   t dd„ ƒ}dddg}dddg}|  |||ƒtt||ƒƒ¡ t d	d„ ƒ}|  |ƒ g ¡ d
S )z%
        Exercise dict.items
        c                 S   sH   t  tt¡}t| |ƒD ]\}}|||< qg }| ¡ D ]}| |¡ q4|S r.   )r
   r   r   r   r?   Úitemsr/   )rA   rB   r   rC   rD   ÚoutÚkvr!   r!   r"   r#   3  s    
z+TestDictObject.test_dict_items.<locals>.foor   r%   r<   rE   rF   rG   c                  S   s,   t  tt¡} g }|  ¡ D ]}| |¡ q|S r.   )r
   r   r   r   rk   r/   )r   rl   rm   r!   r!   r"   r#   G  s
    N)r   r(   Úlistr?   rN   r!   r!   r"   Útest_dict_items/  s    



þ
zTestDictObject.test_dict_itemsc                 C   s6   t dd„ ƒ}dddg}dddg}|  |||ƒ|¡ d	S )
z$
        Exercise dict.keys
        c                 S   sH   t  tt¡}t| |ƒD ]\}}|||< qg }| ¡ D ]}| |¡ q4|S r.   )r
   r   r   r   r?   rA   r/   ©rA   rB   r   rC   rD   rl   r!   r!   r"   r#   U  s    
z*TestDictObject.test_dict_keys.<locals>.foor   r%   r<   rE   rF   rG   Nr'   rN   r!   r!   r"   Útest_dict_keysQ  s    



þzTestDictObject.test_dict_keysc                 C   s:   t dd„ ƒ}dddg}dddg}|  |||ƒt|ƒ¡ d	S )
z+
        Exercise len(dict.keys())
        c                 S   s4   t  tt¡}t| |ƒD ]\}}|||< qt| ¡ ƒS r.   )r
   r   r   r   r?   r,   rA   rR   r!   r!   r"   r#   l  s    
z.TestDictObject.test_dict_keys_len.<locals>.foor   r%   r<   rE   rF   rG   N©r   r(   r,   rN   r!   r!   r"   Útest_dict_keys_lenh  s    


þz!TestDictObject.test_dict_keys_lenc                 C   s6   t dd„ ƒ}dddg}dddg}|  |||ƒ|¡ d	S )
z&
        Exercise dict.values
        c                 S   sH   t  tt¡}t| |ƒD ]\}}|||< qg }| ¡ D ]}| |¡ q4|S r.   )r
   r   r   r   r?   Úvaluesr/   rp   r!   r!   r"   r#   €  s    
z,TestDictObject.test_dict_values.<locals>.foor   r%   r<   rE   rF   rG   Nr'   rN   r!   r!   r"   Útest_dict_values|  s    



þzTestDictObject.test_dict_valuesc                 C   s:   t dd„ ƒ}dddg}dddg}|  |||ƒt|ƒ¡ d	S )
z-
        Exercise len(dict.values())
        c                 S   s4   t  tt¡}t| |ƒD ]\}}|||< qt| ¡ ƒS r.   )r
   r   r   r   r?   r,   rt   rR   r!   r!   r"   r#   —  s    
z0TestDictObject.test_dict_values_len.<locals>.foor   r%   r<   rE   rF   rG   Nrr   rN   r!   r!   r"   Útest_dict_values_len“  s    


þz#TestDictObject.test_dict_values_lenc                 C   s:   t dd„ ƒ}dddg}dddg}|  |||ƒt|ƒ¡ d	S )
z,
        Exercise len(dict.items())
        c                 S   s4   t  tt¡}t| |ƒD ]\}}|||< qt| ¡ ƒS r.   )r
   r   r   r   r?   r,   rk   rR   r!   r!   r"   r#   «  s    
z/TestDictObject.test_dict_items_len.<locals>.foor   r%   r<   rE   rF   rG   N)r   ÚassertPreciseEqualr,   rN   r!   r!   r"   Útest_dict_items_len§  s    


þz"TestDictObject.test_dict_items_lenc                 C   s<   t dd„ ƒ}dddg}dddg}|  |||ƒdddg¡ d	S )
z%
        Exercise iter(dict)
        c                 S   sD   t  tt¡}t| |ƒD ]\}}|||< qg }|D ]}| |¡ q0|S r.   ©r
   r   r   r   r?   r/   rp   r!   r!   r"   r#   ¾  s    
z*TestDictObject.test_dict_iter.<locals>.foor   r%   r<   rE   rF   rG   Nr'   rN   r!   r!   r"   Útest_dict_iterº  s    



þzTestDictObject.test_dict_iterc              
   C   sL   t dd„ ƒ}dddg}dddg}|  |||ddd	dd
gƒdddddg¡ dS )z,
        Exercise operator.contains
        c                 S   sH   t  tt¡}t| |ƒD ]\}}|||< qg }|D ]}| ||k¡ q0|S r.   ry   )rA   rB   Z	checklistr   rC   rD   rl   r!   r!   r"   r#   Õ  s    
z.TestDictObject.test_dict_contains.<locals>.foor   r%   r<   rE   rF   rG   rH   r   TFNr'   rN   r!   r!   r"   Útest_dict_containsÑ  s    



þz!TestDictObject.test_dict_containsc                 C   sN   t dd„ ƒ}ttdƒƒ}dd„ t|ƒD ƒ}|||ƒ}|  |tt||ƒƒ¡ dS )z$
        Exercise dict.copy
        c                 S   s8   t  tt¡}t| |ƒD ]\}}|||< qt| ¡  ¡ ƒS r.   )r
   r   r   r   r?   rn   Úcopyrk   rR   r!   r!   r"   r#   ì  s    
z*TestDictObject.test_dict_copy.<locals>.foorZ   c                 S   s   g | ]\}}||d   ‘qS )r&   r!   )Ú.0r    Úxr!   r!   r"   Ú
<listcomp>õ  s     z1TestDictObject.test_dict_copy.<locals>.<listcomp>N)r   rn   r   Ú	enumerater(   r?   )r*   r#   rA   rB   rl   r!   r!   r"   Útest_dict_copyè  s    

zTestDictObject.test_dict_copyc                 C   s   t dd„ ƒ}|  |ƒ d¡ dS )z*
        Exercise dict.setdefault
        c                  S   s\   t  tt¡} |  dd¡ |  d¡}d| d< |  d¡}d| d< |  dd¡ |  d¡}|||fS )Nr   ç333333ó?çffffff@ç333333@r%   g      @)r
   r   r   r   Ú
setdefaultr0   )r   ÚaÚbÚcr!   r!   r"   r#   ý  s    


z0TestDictObject.test_dict_setdefault.<locals>.foo)r‚   rƒ   r„   Nr'   r)   r!   r!   r"   Útest_dict_setdefaultù  s    
z#TestDictObject.test_dict_setdefaultc                 C   sh   t dd„ ƒ}|  |ddddƒd¡ |  |ddddƒd¡ |  |ddddƒd¡ |  |ddddƒd¡ d	S )
z2
        Exercise dict.__eq__ and .__ne__
        c                 S   s\   t  tt¡}t  tt¡}t| ƒD ]}|| ||< q t|ƒD ]}|| ||< q:||k||kfS r.   ©r
   r   r   r   r   )ÚnaÚnbÚfaZfbÚdaÚdbr    r!   r!   r"   r#     s    z.TestDictObject.test_dict_equality.<locals>.foor6   r<   )TFgÍÌÌÌÌÌ@)FTé   Nr'   r)   r!   r!   r"   Útest_dict_equality  s    

z!TestDictObject.test_dict_equalityc                 C   s  t dd„ ƒ}dddg}dddg}dddg}dddg}|  |||||ƒ¡ dddg}dddg}ddddg}ddddg}|  |||||ƒ¡ dddg}dddg}dddg}dddg}|  |||||ƒ¡ dddg}dddg}dddg}dddg}|  |||||ƒ¡ dS )	ú&
        Exercise dict.__eq__
        c                 S   sd   t  tt¡}t  tt¡}tt| ƒƒD ]}|| || | < q$tt|ƒƒD ]}|| ||| < qF||kS r.   )r
   r   r   r   r   r   r   r,   )ÚakÚavÚbkÚbvrŽ   r�   r    r!   r!   r"   r#   &  s    z3TestDictObject.test_dict_equality_more.<locals>.foor   r%   r<   rH   r   N©r   Ú
assertTrueÚassertFalse)r*   r#   r“   r”   r•   r–   r!   r!   r"   Útest_dict_equality_more"  s,    














z&TestDictObject.test_dict_equality_morec                 C   s0   t dd„ ƒ}|  |ddƒ¡ |  |ddƒ¡ dS )r’   c                 S   s*   t  tt¡}t| ƒD ]}|||< q||kS r.   rŠ   )r‹   r‡   rŽ   r    r!   r!   r"   r#   Q  s    
z8TestDictObject.test_dict_equality_diff_type.<locals>.foor6   r   ©r   N©r   r™   r)   r!   r!   r"   Útest_dict_equality_diff_typeM  s    
z+TestDictObject.test_dict_equality_diff_typec                    st   t dd„ ƒ‰t ‡fdd„ƒ}t tt¡‰ t ‡ fdd„ƒ}|dƒ}|  |jd¡ ||ƒ}tˆ d¡ƒ}|  ||¡ d	S )
zB
        Exercise dictobject.{_as_meminfo, _from_meminfo}
        c                 s   s(   t | ƒD ]}|||d d  fV  qd S ©Nr   r&   ©r   )Únelemr    r!   r!   r"   Úmake_contenta  s    z>TestDictObject.test_dict_to_from_meminfo.<locals>.make_contentc                    s0   t  tt¡}ˆ | ƒD ]\}}|||< qt  |¡S r.   )r
   r   r   r   Z_as_meminfo)r    r   rC   rD   )r¡   r!   r"   Úboxerf  s    
z7TestDictObject.test_dict_to_from_meminfo.<locals>.boxerc                    s   t  | ˆ ¡}t| ¡ ƒS r.   )r
   Z_from_meminforn   rk   )Úmir   )Údcttyper!   r"   Úunboxero  s    z9TestDictObject.test_dict_to_from_meminfo.<locals>.unboxerr6   r   N)	r   r   ÚDictTyper   r   r(   Úrefcountrn   r\   )r*   r¢   r¥   r£   ÚgotÚexpectedr!   )r¤   r¡   r"   Útest_dict_to_from_meminfo]  s    
z(TestDictObject.test_dict_to_from_meminfoc              	   C   s@   t dd„ ƒ}|  t¡�}|dƒ W 5 Q R X |  dt|jƒ¡ d S )Nc                 S   s4   t  tt¡}t| ƒD ]}|d ||< q| d¡}|S )Nr   ù              ð?r9   ©r   r   r    Úzr!   r!   r"   r#   |  s
    
z8TestDictObject.test_001_cannot_downcast_key.<locals>.foor6   ú&cannot safely cast complex128 to int32©r   rL   r   ÚassertInÚstrÚ	exception©r*   r#   Úraisesr!   r!   r"   Útest_001_cannot_downcast_key{  s    
þz+TestDictObject.test_001_cannot_downcast_keyc              	   C   s@   t dd„ ƒ}|  t¡�}|dƒ W 5 Q R X |  dt|jƒ¡ d S )Nc                 S   s:   t  tt¡}t| ƒD ]}|d ||< q| d|  d¡}|S )Nr   r%   r«   r9   r¬   r!   r!   r"   r#   �  s
    z<TestDictObject.test_002_cannot_downcast_default.<locals>.foor6   ú(cannot safely cast complex128 to float64r¯   r³   r!   r!   r"   Ú test_002_cannot_downcast_defaultŒ  s    
þz/TestDictObject.test_002_cannot_downcast_defaultc              	   C   s@   t dd„ ƒ}|  t¡�}|dƒ W 5 Q R X |  dt|jƒ¡ d S )Nc                 S   s4   t  tt¡}t| ƒD ]}|d ||< q| d¡}|S )Nr   g333333@r9   r¬   r!   r!   r"   r#   ž  s
    
z8TestDictObject.test_003_cannot_downcast_key.<locals>.foor6   ú#cannot safely cast float64 to int32r¯   r³   r!   r!   r"   Útest_003_cannot_downcast_key�  s    
	þz+TestDictObject.test_003_cannot_downcast_keyc              	   C   s>   t dd„ ƒ}|  t¡�}|ƒ  W 5 Q R X |  dt|jƒ¡ d S )Nc                  S   s   t  tt¡} d| d< d S )Nç      @r«   ©r
   r   r   r   rc   r!   r!   r"   r#   °  s    z8TestDictObject.test_004_cannot_downcast_key.<locals>.foor®   r¯   r³   r!   r!   r"   Útest_004_cannot_downcast_key¯  s    
þz+TestDictObject.test_004_cannot_downcast_keyc              	   C   s>   t dd„ ƒ}|  t¡�}|ƒ  W 5 Q R X |  dt|jƒ¡ d S )Nc                  S   s   t  tt¡} d| d< d S )Nr«   r   r»   rc   r!   r!   r"   r#   ¾  s    z:TestDictObject.test_005_cannot_downcast_value.<locals>.foor¶   r¯   r³   r!   r!   r"   Útest_005_cannot_downcast_value½  s    
þz-TestDictObject.test_005_cannot_downcast_valuec              	   C   s>   t dd„ ƒ}|  t¡�}|ƒ  W 5 Q R X |  dt|jƒ¡ d S )Nc                  S   s   t  tt¡} | d  d S )Ng      '@r»   rc   r!   r!   r"   r#   Ì  s    z8TestDictObject.test_006_cannot_downcast_key.<locals>.foor¸   r¯   r³   r!   r!   r"   Útest_006_cannot_downcast_keyË  s    
þz+TestDictObject.test_006_cannot_downcast_keyl        z64 bit test onlyc                 C   s>   t dd„ ƒ}d\}}|||ƒ\}}|  ||¡ |  ||¡ d S )Nc                 S   sT   t  tt¡}t d¡}t d¡}t|ƒt|ƒks4t‚| ||< |||< || || fS )Nl   ÿÿÿÿ r   )r
   r   r   r   ÚnpÚuint64ÚhashÚAssertionError)Úv1Zv2r   Úc1Úc2r!   r!   r"   r#   Ü  s    

z5TestDictObject.test_007_collision_checks.<locals>.foo)g      $@g      4@r'   )r*   r#   r†   r‡   r~   Úyr!   r!   r"   Útest_007_collision_checksÙ  s    
	z(TestDictObject.test_007_collision_checksc                 C   s\   t dd„ ƒ}d}||ƒ\}}|  |dd„ tt|ƒƒD ƒ¡ |  |dd„ tt|ƒƒD ƒ¡ d S )Nc                 S   sh   t  tt¡}t| ƒD ]}|d ||< qg }g }t| ƒD ](}| ¡ }| |d ¡ | |d ¡ q6||fS )Nr   r   )r
   r   r   r   r   rQ   r/   )r   r   r    rA   rB   Útmpr!   r!   r"   r#   í  s    z1TestDictObject.test_008_lifo_popitem.<locals>.foor6   c                 S   s   g | ]}|‘qS r!   r!   ©r}   r~   r!   r!   r"   r   ý  s     z8TestDictObject.test_008_lifo_popitem.<locals>.<listcomp>c                 S   s   g | ]}|d  ‘qS r›   r!   rÉ   r!   r!   r"   r   þ  s     )r   r(   Úreversedr   )r*   r#   r­   ZgkÚgvr!   r!   r"   Útest_008_lifo_popitemë  s    
z$TestDictObject.test_008_lifo_popitemc              	   C   s>   t dd„ ƒ}|  t¡�}|ƒ  W 5 Q R X |  dt|jƒ¡ d S )Nc                  S   s,   t  tt¡} d| d< d| d< |  dd¡ d S )Nç      @r   rº   r   r�   ù              (@rb   rc   r!   r!   r"   r#     s    z<TestDictObject.test_010_cannot_downcast_default.<locals>.foor¶   r¯   r³   r!   r!   r"   Ú test_010_cannot_downcast_default   s    
þz/TestDictObject.test_010_cannot_downcast_defaultc              	   C   s>   t dd„ ƒ}|  t¡�}|ƒ  W 5 Q R X |  dt|jƒ¡ d S )Nc                  S   s*   t  tt¡} d| d< d| d< |  d¡ d S )NrÍ   r   rº   r   y              &@rb   rc   r!   r!   r"   r#     s    z8TestDictObject.test_011_cannot_downcast_key.<locals>.foor®   r¯   r³   r!   r!   r"   Útest_011_cannot_downcast_key  s    
þz+TestDictObject.test_011_cannot_downcast_keyc              	   C   s>   t dd„ ƒ}|  t¡�}|ƒ  W 5 Q R X |  dt|jƒ¡ d S )Nc                  S   s   t  tt¡} d| d< d| kS )NrÍ   r   r«   r»   rc   r!   r!   r"   r#   !  s    z8TestDictObject.test_012_cannot_downcast_key.<locals>.foor®   r¯   r³   r!   r!   r"   Útest_012_cannot_downcast_key   s    
þz+TestDictObject.test_012_cannot_downcast_keyc                 C   s   t dd„ ƒ}|  |ƒ ¡ d S )Nc                  S   s   t  tt¡} d| kS r   r»   rc   r!   r!   r"   r#   0  s    z8TestDictObject.test_013_contains_empty_dict.<locals>.foorœ   r)   r!   r!   r"   Útest_013_contains_empty_dict/  s    
z+TestDictObject.test_013_contains_empty_dictc                 C   s   t dd„ ƒ}|  |ƒ ¡ d S )Nc                  S   s   t  tt¡} d| kS r   r»   rc   r!   r!   r"   r#   9  s    z<TestDictObject.test_014_not_contains_empty_dict.<locals>.foo)r   r˜   r)   r!   r!   r"   Ú test_014_not_contains_empty_dict8  s    
z/TestDictObject.test_014_not_contains_empty_dictc                 C   s(   t dd„ ƒ}d}|  ||ƒ|df¡ d S )Nc                 S   sF   t  tt¡}t| ƒD ]}|d ||< qt|ƒ}| ¡  t|ƒ}||fS r   )r
   r   r   r   r   r,   ri   )r   r   r    r~   rÆ   r!   r!   r"   r#   B  s    z/TestDictObject.test_015_dict_clear.<locals>.foor6   r   r'   )r*   r#   Úmr!   r!   r"   Útest_015_dict_clearA  s    
	z"TestDictObject.test_015_dict_clearc              	   C   s>   t dd„ ƒ}|  t¡�}|ƒ  W 5 Q R X |  dt|jƒ¡ d S )Nc                  S   s   t  tt¡} |  dd¡ d S )Nr«   ç      (@©r
   r   r   r   r…   rc   r!   r!   r"   r#   P  s    z8TestDictObject.test_016_cannot_downcast_key.<locals>.foor®   r¯   r³   r!   r!   r"   Útest_016_cannot_downcast_keyO  s    
þz+TestDictObject.test_016_cannot_downcast_keyc              	   C   s>   t dd„ ƒ}|  t¡�}|ƒ  W 5 Q R X |  dt|jƒ¡ d S )Nc                  S   s   t  tt¡} |  dd¡ d S )Nr   rÎ   r×   rc   r!   r!   r"   r#   ^  s    z<TestDictObject.test_017_cannot_downcast_default.<locals>.foor¶   r¯   r³   r!   r!   r"   Ú test_017_cannot_downcast_default]  s    
þz/TestDictObject.test_017_cannot_downcast_defaultc                 C   s6   t dd„ ƒ}|ƒ \}}|  ||¡ |  |ddg¡ d S )Nc                  S   sP   t  tt¡} d| d< |  ¡ }d| d< |  ¡ }dd„ |D ƒ}dd„ |D ƒ}||fS )NrÖ   r�   ç      "@é   c                 S   s   g | ]}|‘qS r!   r!   rÉ   r!   r!   r"   r   u  s     zLTestDictObject.test_018_keys_iter_are_views.<locals>.foo.<locals>.<listcomp>c                 S   s   g | ]}|‘qS r!   r!   rÉ   r!   r!   r"   r   v  s     ©r
   r   r   r   rA   )r   Úk1Úk2Zrk1Zrk2r!   r!   r"   r#   n  s    z8TestDictObject.test_018_keys_iter_are_views.<locals>.foor�   rÛ   r'   )r*   r#   r†   r‡   r!   r!   r"   Útest_018_keys_iter_are_viewsk  s
    


z+TestDictObject.test_018_keys_iter_are_viewsc                 C   s   t dd„ ƒ}t|ƒ ƒ d S )Nc                  S   s.   t  tt¡} d| d< d| d< |  ¡ dh@ }|S )NrÖ   r�   rÚ   rÛ   é   rÜ   )r   rÞ   r!   r!   r"   r#   �  s
    z$TestDictObject.test_019.<locals>.foo)r   Úprintr)   r!   r!   r"   Útest_019~  s    
zTestDictObject.test_019c                 C   s:   t dd„ ƒ}|ƒ \}}|  |ddddg¡ |  |d¡ d S )Nc                  S   sV   t  tjt¡} d| d< d| d< d| d< d| d< g }|  ¡ D ]}| |¡ q:|| d fS )	Nç      ð?r†   ç       @r‡   ç      @rˆ   g      @r   )r
   r   r   Úunicode_typer   rk   r/   )r   rl   r~   r!   r!   r"   r#   Œ  s    z/TestDictObject.test_020_string_key.<locals>.foo)r†   rã   )r‡   rä   )rˆ   rå   )r   rH   rã   r'   )r*   r#   rk   rŽ   r!   r!   r"   Útest_020_string_key‹  s
    

z"TestDictObject.test_020_string_keyc                 C   s(   t dd„ ƒ}|  |ƒ dd dfg¡ d S )Nc                  S   sL   t  tjt¡} g }tdƒD ]}| d¡ qd |¡}d| |< t|  	¡ ƒ}|S )Né'  r†   Ú rã   )
r
   r   r   ræ   r   r   r/   Újoinrn   rk   )r   rÈ   r    Úsrl   r!   r!   r"   r#   �  s    
z1TestDictObject.test_021_long_str_key.<locals>.foor†   rè   r   r'   r)   r!   r!   r"   Útest_021_long_str_keyœ  s    
	z$TestDictObject.test_021_long_str_keyc                 C   sL   t dd„ ƒ}|ƒ \}}}|  |ddg¡ |  |ddg¡ |  |ddg¡ d S )Nc                  S   s„   t  tt¡} | }d| d< d|d< t  tt¡}d|d< d|d< | }|} dd„ |  ¡ D ƒ}d	d„ | ¡ D ƒ}d
d„ | ¡ D ƒ}|||fS )NrÖ   r   ç      ,@r%   ç      Y@ç     @�@c                 S   s   g | ]}|‘qS r!   r!   rÉ   r!   r!   r"   r   ¶  s     zJTestDictObject.test_022_references_juggle.<locals>.foo.<locals>.<listcomp>c                 S   s   g | ]}|‘qS r!   r!   rÉ   r!   r!   r"   r   ·  s     c                 S   s   g | ]}|‘qS r!   r!   rÉ   r!   r!   r"   r   ¸  s     )r
   r   r   r   rk   )r   ÚeÚfrÝ   rÞ   Úk3r!   r!   r"   r#   ª  s    z6TestDictObject.test_022_references_juggle.<locals>.foo)r   rî   )r%   rï   )r   rà   )r%   é   r'   )r*   r#   rÝ   rÞ   rò   r!   r!   r"   Útest_022_references_juggle©  s    
z)TestDictObject.test_022_references_jugglec                 C   s"   t dd„ ƒ}|  |ƒ ddg¡ d S )Nc                     s0   t  tt¡‰ ‡ fdd„} | ƒ  dd„ ˆ  ¡ D ƒS )Nc                      s   dˆ d< dˆ d< d S )NrÖ   r   rí   r%   r!   r!   rc   r!   r"   ÚbarÆ  s    z9TestDictObject.test_023_closure.<locals>.foo.<locals>.barc                 S   s   g | ]}|‘qS r!   r!   rÉ   r!   r!   r"   r   Ê  s     z@TestDictObject.test_023_closure.<locals>.foo.<locals>.<listcomp>rÜ   ©rõ   r!   rc   r"   r#   Â  s    z,TestDictObject.test_023_closure.<locals>.foor   r%   r'   r)   r!   r!   r"   Útest_023_closureÁ  s    
	zTestDictObject.test_023_closurec                 C   s@   t dd„ ƒ}|  |ƒ | ¡ ¡ t dd„ ƒ}|  |ƒ | ¡ ¡ d S )Nc                  S   s   d} | d di}|d S )Nu   aáˆ´r   r   r†   r!   ©rë   r   r!   r!   r"   r#   Ð  s    z9TestDictObject.test_024_unicode_getitem_keys.<locals>.fooc                  S   s   d} | d d… di}|d S )Nu   abcáˆ´r   r†   r!   rø   r!   r!   r"   r#   Ø  s    ©r   r(   r\   r)   r!   r!   r"   Útest_024_unicode_getitem_keysÎ  s    

z,TestDictObject.test_024_unicode_getitem_keysc                    s2   t  t jt jg¡‰ t‡ fdd„ƒ}|  |ƒ ¡ d S )Nc                     sn   t  ˆ t¡} tjdgtjd�}tjdgtjd�}tjdgtjd�}|d | |d |d f< |d |d f| kS )Nr<   ©Zdtypeg®Gáz®@gö(\�Âu$@r   )r
   r   r   r¿   ÚarrayrÀ   r   )r   Út1Út2rÃ   ©Zkeytyr!   r"   r#   ç  s    z<TestDictObject.test_issue6570_alignment_padding.<locals>.foo)r   ÚTuplerÀ   r   r   r˜   r)   r!   rÿ   r"   Ú test_issue6570_alignment_paddingà  s    z/TestDictObject.test_issue6570_alignment_paddingc                 C   sl   d}dd„ }|}t ƒ |ƒ}||ƒ}||ƒ}|  ||¡ dd„ }|}t ƒ |ƒ}||ƒ}||ƒ}|  ||¡ dS )zD
        Tests dict.update works with various dictionaries.
        r6   c                 S   s2   dd„ t | ƒD ƒ}dd„ t | ƒD ƒ}| |¡ |S )z@
            Test update with a regular dictionary.
            c                 S   s   i | ]}||d  “qS r›   r!   ©r}   r    r!   r!   r"   Ú
<dictcomp>ü  s      z?TestDictObject.test_dict_update.<locals>.f1.<locals>.<dictcomp>c                 S   s   i | ]}d | |“qS ©r<   r!   r  r!   r!   r"   r  ý  s      ©r   Úupdate©r   Úd1Zd2r!   r!   r"   Úf1ø  s    
z+TestDictObject.test_dict_update.<locals>.f1c                 S   s,   ddddœ}dd„ t | ƒD ƒ}| |¡ |S )zo
            Test update where one of the dictionaries
            is created as a Python literal.
            r%   rH   é   )r   r<   r4   c                 S   s   i | ]}d | |“qS r  r!   r  r!   r!   r"   r    s      z?TestDictObject.test_dict_update.<locals>.f2.<locals>.<dictcomp>r  r  r!   r!   r"   Úf2  s    ý
z+TestDictObject.test_dict_update.<locals>.f2Nr'   )r*   r   r	  r\   Zcfuncr†   r‡   r  r!   r!   r"   Útest_dict_updateò  s    	

zTestDictObject.test_dict_updateN):Ú__name__Ú
__module__Ú__qualname__r+   r-   r8   r=   rO   rT   r^   rd   rg   rh   rj   ro   rq   rs   ru   rv   rx   rz   r{   r�   r‰   r‘   rš   r�   rª   rµ   r·   r¹   r¼   r½   r¾   r   Z
skipUnlessÚsysÚmaxsizerÇ   rÌ   rÏ   rÐ   rÑ   rÒ   rÓ   rÕ   rØ   rÙ   rß   ZexpectedFailurerâ   rç   rì   rô   r÷   rú   r  r  r!   r!   r!   r"   r      sh   )$"+
		
r   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestDictTypeCastingc                 C   s   t ||ƒ d S r.   r   )r*   ÚfromtyÚtotyr!   r!   r"   Ú
check_good  s    zTestDictTypeCasting.check_goodc              	   C   s@   |   t¡�}t||ƒ W 5 Q R X |  djf tƒ Žt|jƒ¡ d S )Nz%cannot safely cast {fromty} to {toty})rL   r   r   r°   ÚformatÚlocalsr±   r²   )r*   r  r  r´   r!   r!   r"   Ú	check_bad   s    þzTestDictTypeCasting.check_badc                 C   sd   |   tjtj¡ |   tjtj¡ |   tjtj¡ |   tjtj¡ |  tjtj¡ |   tj	tj¡ d S r.   )
r  r   r   r   r   Ú
complex128r   r  Ú	complex64Úint8©r*   r!   r!   r"   Útest_cast_int_to(  s    z$TestDictTypeCasting.test_cast_int_toc                 C   s4   |   tjtj¡ |   tjtj¡ |   tjtj¡ d S r.   )r  r   r   r   r  r  r  r!   r!   r"   Útest_cast_float_to0  s    z&TestDictTypeCasting.test_cast_float_toc                 C   s4   |   tjtj¡ |   tjtj¡ |   tjtj¡ d S r.   )r  r   Úbooleanr   r   r  r  r!   r!   r"   Útest_cast_bool_to5  s    z%TestDictTypeCasting.test_cast_bool_toN)r  r  r  r  r  r  r  r   r!   r!   r!   r"   r    s
   r  c                   @   sF   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zdd
d„Zdd„ Zdd„ Z	dS )ÚTestTypedDictc           	      C   s  t  tt¡}|  t|ƒd¡ d|d< d|d< d|d< |  t|ƒd¡ |  t| ¡ ƒdddg¡ tt| 	¡ ƒdddgƒD ]\}}| j
||dd� qv|  
|d d¡ | j
|d ddd� | j
|d ddd� |d= |  t|ƒd¡ |  | d¡¡ | dd	¡ | dd
¡ |  |d d	¡ | j
|d ddd� | dddœ¡ |  
|d d¡ |  
|d d¡ |  d|k¡ t| ¡ ƒ}|  t|ƒt|ƒ¡ |  
| d¡d¡ t|ƒ}| ¡ \}}|  t|ƒ|d ¡ |  ||k¡ | ¡ }|  ||¡ |  t| ¡ ƒt| ¡ ƒ¡ d S )Nr   r   rƒ   r%   r„   r<   rH   )Zplacesr&   éÈ   r4   r
  )rH   r4   )r	   Úemptyr   r   r(   r,   rn   rA   r?   rt   ZassertAlmostEqualZassertIsNoner0   r…   r  r˜   r]   rk   r`   rQ   r|   )	r*   r   r~   rÆ   Zpydr    rC   rD   Úcopiedr!   r!   r"   Ú
test_basic<  sB     zTestTypedDict.test_basicc                 C   s\   dd„ t tdƒtddƒƒD ƒ}t tt¡}| ¡ D ]\}}|||< q2t|ƒ}|  ||¡ d S )Nc                 S   s   i | ]\}}|t |ƒ“qS r!   ©Úfloat)r}   rC   rD   r!   r!   r"   r  n  s      z5TestTypedDict.test_copy_from_dict.<locals>.<dictcomp>r6   rZ   )	r?   r   r	   r#  r   r   rk   r]   r(   )r*   ÚexpectÚnbdrC   rD   r¨   r!   r!   r"   Útest_copy_from_dictm  s    
z!TestTypedDict.test_copy_from_dictc                 C   s6   t dd„ ƒ}t dd„ ƒ}|ƒ }||ƒ}|  |d¡ d S )Nc                  S   s   t  tt¡} d| d< | S )Nç®Gáz®ó?r   )r	   r#  r   r   rc   r!   r!   r"   Úproducerv  s    z-TestTypedDict.test_compiled.<locals>.producerc                 S   s   | d S r   r!   rc   r!   r!   r"   Úconsumer|  s    z-TestTypedDict.test_compiled.<locals>.consumerr+  r'   )r*   r,  r-  r   Úvalr!   r!   r"   Útest_compiledu  s    

zTestTypedDict.test_compiledc                 C   s>   t jt tjtjg¡td�}d|d< |  |d | d¡¡ d S )N©Úkey_typeÚ
value_typei90  )r   r   )r	   r#  r   r   Zuint32r   r(   r0   ©r*   r   r!   r!   r"   Útest_gh7908„  s    ÿýzTestTypedDict.test_gh7908Fc                 C   sº   t  tt¡}i }d|d< d|d< |r*| jn| j}|||ƒ||ƒƒ d|d< d|d< |||ƒ||ƒƒ tddƒD ]}|d ||< |d ||< qn|||ƒ||ƒƒ |r¶|  ||ƒ d¡¡ d S )Nr%   r   r<   r6   rZ   r¦   )r	   r#  r   r°   r(   r   r˜   Ú
startswith)r*   ZstrfnÚprefixr)  r   Úcheckerr    r!   r!   r"   Úcheck_stringify�  s    zTestTypedDict.check_stringifyc                 C   s   | j tdd� d S )NT)r6  )r8  Úreprr  r!   r!   r"   Ú	test_reprž  s    zTestTypedDict.test_reprc                 C   s   |   t¡ d S r.   )r8  r±   r  r!   r!   r"   Útest_str¡  s    zTestTypedDict.test_strN)F)
r  r  r  r%  r*  r/  r4  r8  r:  r;  r!   r!   r!   r"   r!  ;  s   1	
r!  c                   @   s   e Zd Zdd„ ZdS )ÚDictIterableCtorc                 C   sž  t dd„ ƒ}t dd„ ƒ}t dd„ ƒ}t dd„ ƒ}t d	d
„ ƒ}t dd„ ƒ}t dd„ ƒ}t dd„ ƒ}dd„ }	|ddg|	ddddœƒf|ddg|	ddddœƒf|ddg|	ddddœƒf|ddg|	ddddœƒf|ddg|	ddddœƒf|dg|	dddœƒf|d|	ddiƒg|	d diƒf|d|	ddiƒg|	d|	ddiƒiƒf|dtdd!d"gƒg|	dtdd!d"gƒiƒff	}
|
D ]4\}}}| j�r€||Ž }n
|j|Ž }|  ||¡ �qdd S )#Nc                 S   s   t t| |ƒƒ}|S r.   ©r	   r?   )r†   r‡   r   r!   r!   r"   Úfunc1©  s    z>DictIterableCtor.test_iterable_type_constructor.<locals>.func1c                 S   s   t dƒ}tt||ƒƒS ra   )r   r	   r?   ©Za_r‡   r†   r!   r!   r"   Úfunc2®  s    z>DictIterableCtor.test_iterable_type_constructor.<locals>.func2c                 S   s   dddg}t t||ƒƒS )Nr   r   r%   r=  r?  r!   r!   r"   Úfunc3³  s    
z>DictIterableCtor.test_iterable_type_constructor.<locals>.func3c                 S   s   t | |ƒ}tt | t || ƒƒƒS r.   )r?   r	   ©r†   r‡   rˆ   r!   r!   r"   Úfunc4¸  s    
z>DictIterableCtor.test_iterable_type_constructor.<locals>.func4c                 S   s   t tt| |ƒ|ƒƒS r.   r=  ©r†   r‡   r!   r!   r"   Úfunc5½  s    z>DictIterableCtor.test_iterable_type_constructor.<locals>.func5c                 S   s   t | ƒS r.   ©r	   )rk   r!   r!   r"   Úfunc6Á  s    z>DictIterableCtor.test_iterable_type_constructor.<locals>.func6c                 S   s   t | |iƒS r.   rF  )rC   rD   r!   r!   r"   Úfunc7Å  s    z>DictIterableCtor.test_iterable_type_constructor.<locals>.func7c                 S   s   t ƒ }||| < |S r.   rF  ©rC   rD   r   r!   r!   r"   Úfunc8É  s    z>DictIterableCtor.test_iterable_type_constructor.<locals>.func8c                 S   s$   t ƒ }|  ¡ D ]\}}|||< q|S r.   )r	   rk   )Zpy_dictr   rC   rD   r!   r!   r"   Ú	_get_dictÏ  s    
zBDictIterableCtor.test_iterable_type_constructor.<locals>._get_dict©r   r   r%   Úabcr†   r‡   rˆ   )©r   r†   r   )©r   r‡   r   )©r%   rˆ   r%   )rN  rO  rP  )©r   r†   )r<   r‡   ©r   r<   Úkeyr   rC   r%   r<   )r   r   Újit_enabledr\   rw   )r*   r>  r@  rA  rC  rE  rG  rH  rJ  rK  rB   ÚfuncÚargsr©   r¨   r!   r!   r"   Útest_iterable_type_constructor§  sP    









ÿ

ÿÿÿó

z/DictIterableCtor.test_iterable_type_constructorN)r  r  r  rW  r!   r!   r!   r"   r<  ¥  s   r<  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestDictIterableCtorJitc                 C   s
   d| _ d S )NT©rT  r  r!   r!   r"   ÚsetUpð  s    zTestDictIterableCtorJit.setUpc              	   C   s2   t dd„ ƒ}d}|  t|¡� |ƒ  W 5 Q R X d S )Nc                   S   s   t dƒS ra   rF  r!   r!   r!   r"   Úctorô  s    zDTestDictIterableCtorJit.test_exception_no_iterable_arg.<locals>.ctorú!.*No implementation of function.*©r   ÚassertRaisesRegexr   ©r*   r[  Úmsgr!   r!   r"   Útest_exception_no_iterable_argó  s
    
z6TestDictIterableCtorJit.test_exception_no_iterable_argc              	   C   s2   t dd„ ƒ}d}|  t|¡� |ƒ  W 5 Q R X d S )Nc                   S   s   t dddœƒS )Nr%   rH   rR  rF  r!   r!   r!   r"   r[  ý  s    zATestDictIterableCtorJit.test_exception_dict_mapping.<locals>.ctorr\  r]  r_  r!   r!   r"   Útest_exception_dict_mappingü  s
    
z3TestDictIterableCtorJit.test_exception_dict_mappingc              	   C   s2   t dd„ ƒ}d}|  t|¡� |ƒ  W 5 Q R X d S )Nc                   S   s   t dƒS )N©rQ  )r%   r‡   r<   rF  r!   r!   r!   r"   r[    s    z<TestDictIterableCtorJit.test_exception_setitem.<locals>.ctorr\  r]  r_  r!   r!   r"   Útest_exception_setitem  s
    
z.TestDictIterableCtorJit.test_exception_setitemN)r  r  r  rZ  ra  rb  rd  r!   r!   r!   r"   rX  î  s   		rX  c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestDictIterableCtorNoJitc                 C   s
   d| _ d S )NFrY  r  r!   r!   r"   rZ    s    zTestDictIterableCtorNoJit.setUpc              	   C   s*   d}|   t|¡� tddƒ W 5 Q R X d S )Nz%Dict expect at most 1 argument, got 2r   r%   ©r^  r   r	   ©r*   r`  r!   r!   r"   Útest_exception_nargs  s    z.TestDictIterableCtorNoJit.test_exception_nargsc              	   C   s,   d}|   t|¡� tddiƒ W 5 Q R X d S )Nz$.*dict\(mapping\) is not supported.*r   r%   rf  rg  r!   r!   r"   Útest_exception_mapping_ctor  s    z5TestDictIterableCtorNoJit.test_exception_mapping_ctorc              	   C   s(   d}|   t|¡� tdƒ W 5 Q R X d S )Nz.*object is not iterable.*r<   rf  rg  r!   r!   r"   Útest_exception_non_iterable_arg  s    z9TestDictIterableCtorNoJit.test_exception_non_iterable_argc              	   C   s(   d}|   t|¡� tdƒ W 5 Q R X d S )Nz6.*dictionary update sequence element #1 has length 3.*rc  )r^  Ú
ValueErrorr	   rg  r!   r!   r"   rd  #  s    z0TestDictIterableCtorNoJit.test_exception_setitemN)r  r  r  rZ  rh  ri  rj  rd  r!   r!   r!   r"   re    s
   re  c                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚTestDictRefctTypesc                 C   sÜ   t dd„ ƒ}|ƒ }|  |d d¡ |  |d d¡ dddœ}|  t|ƒ|¡ d|d< d|d< |  |d d¡ |  t|ƒ|¡ d	}t|ƒD ]}||t|ƒ< ||t|ƒ< qˆt|ƒD ]}|  |t|ƒ |¡ q®|  t|ƒ|¡ d S )
Nc                  S   s&   t jtjtjd�} d| d< d| d< | S )Nr0  é{   Ú123éA  Ú321)r	   r#  r   ræ   r   rc   r!   r!   r"   r#   ,  s    þz,TestDictRefctTypes.test_str_key.<locals>.foorn  rm  rp  ro  )rn  rp  éç   r&   ©r   r(   r]   r   r±   ©r*   r#   r   r(  r    r    r!   r!   r"   Útest_str_key+  s$    
	
zTestDictRefctTypes.test_str_keyc                 C   sÌ   t dd„ ƒ}|ƒ }|  |d d¡ |  |d d¡ dddœ}|  t|ƒ|¡ d|d< d|d< |  t|ƒ|¡ d	}t|ƒD ]}t|ƒ||< t|ƒ||< qxt|ƒD ]}|  || t|ƒ¡ qž|  t|ƒ|¡ d S )
Nc                  S   s&   t jtjtjd�} d| d< d| d< | S )Nr0  rn  rm  rp  ro  )r	   r#  r   r   ræ   rc   r!   r!   r"   r#   J  s    þz,TestDictRefctTypes.test_str_val.<locals>.foorm  rn  ro  rp  ©rm  ro  Z231r   rr  rs  r!   r!   r"   Útest_str_valI  s"    
	
zTestDictRefctTypes.test_str_valc           	      C   s¼  t j d¡ tjtjtjd d … d�}g }| t j d¡¡ |d |d< | t j d¡¡ |d |d< t	dƒD ]&}| t j |¡¡ |d |t
|ƒ< qn|  t|ƒt|ƒ¡ |  |d |d	 ¡ |  |d |d
 ¡ t| ¡ |ƒD ]\}}|  ||¡ qà|  d|k¡ |  d|k¡ |d= |  d|k¡ |d= |  d|k¡ |d	d…= t	dƒD ]&}| ¡ \}}| ¡ }|  ||¡ �qL| t j d¡¡ |d |d< t| ¡ |ƒD ]\}}|  ||¡ �q d S )Nrm  r0  r6   r7   ZmassrZ   Úvelocityr&   r   r   r%   éZ   Úlast)r¿   ÚrandomÚseedr	   r#  r   ræ   r   r/   r   r±   r(   r,   rw   r?   rt   r˜   r™   rQ   r`   )	r*   r   r(  r    r¨   ÚexprC   rD   Úwr!   r!   r"   Útest_str_key_array_valuef  sB    þ
z+TestDictRefctTypes.test_str_key_array_valuec                 C   s†   dd„ }t jtjt tjtj¡d�}dd„ }|||ƒ}|i tƒ}|  |t¡ |  t|ƒ|¡ dD ] }||= ||= |  t|ƒ|¡ q`d S )Nc                  S   s   t jtjtjd�} | S ©Nr0  ©r	   r#  r   Úintprc   r!   r!   r"   Úinner_numba_dict’  s
    þzITestDictRefctTypes.test_dict_of_dict_int_keyval.<locals>.inner_numba_dictr0  c                 S   s>   t dƒD ]0}|ƒ }t |d ƒD ]}|d ||< q|| |< q| S )Nr&   r   rè   rŸ   )r   Zmake_inner_dictr    ÚmidÚjr!   r!   r"   Úusecasež  s    
z@TestDictRefctTypes.test_dict_of_dict_int_keyval.<locals>.usecase)rà   r<   r
  é   r6   )r	   r#  r   r�  r¦   r]   ÚassertIsInstancer(   )r*   r‚  r   r…  r¨   r(  Úwherer!   r!   r"   Útest_dict_of_dict_int_keyval‘  s    þ

z/TestDictRefctTypes.test_dict_of_dict_int_keyvalc                    s–   t  t jt j¡‰ tdd„ ƒ‰t‡ ‡fdd„ƒ}|dƒ}d}| ¡ D ]B\}}|d7 }|  t|ƒ|d ¡ | ¡ D ]\}}|  ||¡ qnqB|  |d¡ d S )Nc                  S   s   t jtjtjd�} | S r  r€  rc   r!   r!   r"   r‚  ¶  s
    þzBTestDictRefctTypes.test_dict_of_dict_npm.<locals>.inner_numba_dictc                    sJ   t jtjˆ d�}t| ƒD ],}ˆƒ ||< t|d ƒD ]}||| |< q2q|S )Nr0  r   )r	   r#  r   r�  r   )Úcountr   r    r„  ©Zinner_dict_tyr‚  r!   r"   r#   ¾  s    þ
z5TestDictRefctTypes.test_dict_of_dict_npm.<locals>.foor&   r   r   )r   r¦   r�  r   rk   r(   r,   )r*   r#   r   ÚctrC   ÚddÚkkÚvvr!   r‹  r"   Útest_dict_of_dict_npm³  s    
z(TestDictRefctTypes.test_dict_of_dict_npmc                 C   sL   t  tjtj¡}d|d< tdd„ ƒ}||dƒ |  t|ƒd¡ |  |¡ d S )NÚappler   c                 S   s
   | d= d S r   r!   )r~   rC   r!   r!   r"   r#   Ù  s    z,TestDictRefctTypes.test_delitem.<locals>.foor   )	r	   r#  r   r   ræ   r   r(   r,   r™   )r*   r   r#   r!   r!   r"   Útest_delitemÕ  s    

zTestDictRefctTypes.test_delitemc                 C   sŒ   t  tjtjd d … ¡}tjdtjd�|d< tdd„ ƒ}||ƒ |jd j}|  	|tj
¡ |  |tj¡ |  |d tjdtjd�d ¡ d S )Nr6   rû   r   c                 S   s   | d  d7  < | d S rž   r!   rc   r!   r!   r"   r#   æ  s    z8TestDictRefctTypes.test_getitem_return_type.<locals>.foor   r&   )r	   r#  r   r   r¿   Zaranger   Znopython_signaturesÚreturn_typer‡  ZArrayZassertNotIsInstanceÚOptionalrw   )r*   r   r#   Zrettyr!   r!   r"   Útest_getitem_return_typeá  s    
z+TestDictRefctTypes.test_getitem_return_typec                 C   sH   t ƒ }dddg}|D ]}|||< qt|ƒD ]\}}|  || |¡ q*d S )N)r†   Tr†   )r‡   Fr‡   )rˆ   Frˆ   )r	   r€   r(   )r*   ÚdctÚrefr~   r    r!   r!   r"   Útest_storage_model_mismatchó  s    ý
z.TestDictRefctTypes.test_storage_model_mismatchN)r  r  r  rt  rv  r~  r‰  r�  r’  r•  r˜  r!   r!   r!   r"   rl  )  s   +""rl  c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestDictForbiddenTypesc              	   C   s6   |   t¡�}|ƒ  W 5 Q R X t|jƒ}|  ||¡ d S r.   )rL   r   r±   r²   r°   )r*   r(  Úcallabler´   r`  r!   r!   r"   Úassert_disallow  s    
z&TestDictForbiddenTypes.assert_disallowc                    s>   d  ˆ ¡}|  |‡ fdd„¡ t‡ fdd„ƒ}|  ||¡ d S )Nz{} as key is forbiddenc                      s   t  ˆ tj¡S r.   r€  r!   ©Útyr!   r"   Ú<lambda>  ó    z<TestDictForbiddenTypes.assert_disallow_key.<locals>.<lambda>c                      s   t  ˆ tj¡ d S r.   r€  r!   rœ  r!   r"   r#     s    z7TestDictForbiddenTypes.assert_disallow_key.<locals>.foo©r  r›  r   ©r*   r�  r`  r#   r!   rœ  r"   Úassert_disallow_key  s
    
z*TestDictForbiddenTypes.assert_disallow_keyc                    s>   d  ˆ ¡}|  |‡ fdd„¡ t‡ fdd„ƒ}|  ||¡ d S )Nz{} as value is forbiddenc                      s   t  tjˆ ¡S r.   r€  r!   rœ  r!   r"   rž    rŸ  z>TestDictForbiddenTypes.assert_disallow_value.<locals>.<lambda>c                      s   t  tjˆ ¡ d S r.   r€  r!   rœ  r!   r"   r#     s    z9TestDictForbiddenTypes.assert_disallow_value.<locals>.foor   r¡  r!   rœ  r"   Úassert_disallow_value  s
    
z,TestDictForbiddenTypes.assert_disallow_valuec                 C   s(   |   t tj¡¡ |  t tj¡¡ d S r.   )r¢  r   r   r�  r£  r  r!   r!   r"   Útest_disallow_list  s    z)TestDictForbiddenTypes.test_disallow_listc                 C   s(   |   t tj¡¡ |  t tj¡¡ d S r.   )r¢  r   ÚSetr�  r£  r  r!   r!   r"   Útest_disallow_set!  s    z(TestDictForbiddenTypes.test_disallow_setN)r  r  r  r›  r¢  r£  r¤  r¦  r!   r!   r!   r"   r™    s
   		r™  c                   @   sŒ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!S )"ÚTestDictInferredc                 C   s^   t dd„ ƒ}d\}}|ƒ }|  t|ƒ||i¡ |  t|ƒjt|ƒ¡ |  t|ƒjt|ƒ¡ d S )Nc                  S   s   t ƒ } d| d< | S )Nro  rm  rF  rc   r!   r!   r"   r#   (  s    z1TestDictInferred.test_simple_literal.<locals>.fooru  ©r   r(   r]   r   r1  r2  ©r*   r#   rC   rD   r   r!   r!   r"   Útest_simple_literal'  s    
z$TestDictInferred.test_simple_literalc                 C   sb   t dd„ ƒ}d\}}|||ƒ}|  t|ƒ||i¡ |  t|ƒjt|ƒ¡ |  t|ƒjt|ƒ¡ d S )Nc                 S   s   t ƒ }||| < |S r.   rF  rI  r!   r!   r"   r#   5  s    z.TestDictInferred.test_simple_args.<locals>.fooru  r¨  r©  r!   r!   r"   Útest_simple_args4  s    

z!TestDictInferred.test_simple_argsc                 C   sf   t dd„ ƒ}d\}}}||||ƒ}|  t|ƒ||i¡ |  t|ƒjt|ƒ¡ |  t|ƒjt|ƒ¡ d S )Nc                 S   s   t ƒ }||| < ||| < |S r.   rF  ©rC   rD   r}  r   r!   r!   r"   r#   B  s    z0TestDictInferred.test_simple_upcast.<locals>.foo)rm  çÍÌÌÌÌ@@ro  r¨  )r*   r#   rC   rD   r}  r   r!   r!   r"   Útest_simple_upcastA  s    

z#TestDictInferred.test_simple_upcastc              	   C   sX   t dd„ ƒ}d\}}}|  t¡�}||||ƒ W 5 Q R X |  d t|ƒ¡t|jƒ¡ d S )Nc                 S   s   t ƒ }||| < ||| < |S r.   rF  r¬  r!   r!   r"   r#   P  s    z9TestDictInferred.test_conflicting_value_type.<locals>.foo)rm  ro  r­  ú cannot safely cast float64 to {}©r   rL   r   r°   r  r   r±   r²   )r*   r#   rC   rD   r}  r´   r!   r!   r"   Útest_conflicting_value_typeO  s    

þz,TestDictInferred.test_conflicting_value_typec              	   C   sX   t dd„ ƒ}d\}}}|  t¡�}||||ƒ W 5 Q R X |  d t|ƒ¡t|jƒ¡ d S )Nc                 S   s   t ƒ }||| < |||< |S r.   rF  )rC   ÚhrD   r   r!   r!   r"   r#   `  s    z7TestDictInferred.test_conflicting_key_type.<locals>.foo)rm  gfffffÆ^@ro  r¯  r°  )r*   r#   rC   r²  rD   r´   r!   r!   r"   Útest_conflicting_key_type_  s    

þz*TestDictInferred.test_conflicting_key_typec           
   	   C   sÎ   t dd„ ƒ}t d¡t d¡f}t d¡t d¡f}t d¡}tjdd��}||||ƒ\}}W 5 Q R X |  t|ƒd¡ d}|  	|t
|d	 ƒ¡ t| ¡ ƒ}	|  |	d	 d
¡ |  ||t d¡t d¡f ¡ d S )Nc                 S   s   t ƒ }||| < ||| fS r.   rF  )rÝ   rÃ   rÞ   r   r!   r!   r"   r#   q  s    z?TestDictInferred.test_conflict_key_type_non_number.<locals>.foor   r%   rm  T)Úrecordz:unsafe cast from UniTuple(int32 x 2) to UniTuple(int8 x 2)r   )r   r%   )r   r¿   r  r   r�  ÚwarningsÚcatch_warningsr(   r,   r°   r±   rn   rA   )
r*   r#   rÝ   rÞ   rÃ   r}  r   Zdk2r`  rA   r!   r!   r"   Ú!test_conflict_key_type_non_numbero  s    

z2TestDictInferred.test_conflict_key_type_non_numberc                 C   s`   t dd„ ƒ}d\}}|||ƒ}|  t|ƒ||i¡ d\}}|||ƒ}|  t|ƒd|d i¡ d S )Nc                 S   s$   t ƒ }| r||| < n|d |d< |S )Nr   é­Þ  rF  rI  r!   r!   r"   r#   ˆ  s
    
z>TestDictInferred.test_ifelse_filled_both_branches.<locals>.fooru  rU   r¸  r   ©r   r(   r]   r©  r!   r!   r"   Ú test_ifelse_filled_both_branches‡  s    
	

z1TestDictInferred.test_ifelse_filled_both_branchesc                 C   s„   t dd„ ƒ}d\}}|||ƒ}|  t|ƒ||i¡ d\}}|||ƒ}|  t|ƒi ¡ |  t|ƒjt|ƒ¡ |  t|ƒjt|ƒ¡ d S )Nc                 S   s   t ƒ }| r||| < |S r.   rF  rI  r!   r!   r"   r#   š  s    z:TestDictInferred.test_ifelse_empty_one_branch.<locals>.fooru  rU   r¨  r©  r!   r!   r"   Útest_ifelse_empty_one_branch™  s    


z-TestDictInferred.test_ifelse_empty_one_branchc                 C   sR   t dd„ ƒ}ttdƒƒ}ttdd„ |ƒƒ}|||ƒ}|  t|ƒtt||ƒƒ¡ d S )Nc                 S   s&   t ƒ }t| |ƒD ]\}}|||< q|S r.   r=  )ÚksÚvsr   rC   rD   r!   r!   r"   r#   ¬  s    
z'TestDictInferred.test_loop.<locals>.foorH   c                 S   s   | d S )Nr&   r!   ©r~   r!   r!   r"   rž  ´  rŸ  z,TestDictInferred.test_loop.<locals>.<lambda>)r   rn   r   Úmapr(   r]   r?   )r*   r#   r½  r¼  r   r!   r!   r"   Ú	test_loop«  s    

zTestDictInferred.test_loopc              	   C   s>   t dd„ ƒ}|  t¡�}|ƒ  W 5 Q R X |  dt|jƒ¡ d S )Nc                  S   s
   t ƒ } | S r.   rF  rc   r!   r!   r"   r#   ¹  s    z)TestDictInferred.test_unused.<locals>.foozimprecise typer¯   r³   r!   r!   r"   Útest_unused¸  s    
þzTestDictInferred.test_unusedc                 C   s€   t dd„ ƒ}|dƒ\}}}|  |d¡ |  |d¡ |  t|ƒddi¡ |dƒ\}}}|  |d¡ |  t|ƒi ¡ |  |d¡ d S )Nc                 S   sB   t ƒ }t|ƒ}| ¡ D ]\}}||7 }q| r4d|d< ||t|ƒfS ©Nr%   r   )r	   r,   rk   )Zdefiner   rŒ  rC   rD   r!   r!   r"   r#   Æ  s    
z3TestDictInferred.test_define_after_use.<locals>.fooTr   r   r%   Fr¹  )r*   r#   rŒ  r   r   r!   r!   r"   Útest_define_after_useÅ  s    
z&TestDictInferred.test_define_after_usec              	   C   sV   t dd„ ƒ}d\}}}||||ƒ}|  t|ƒ||d || i||d || ii¡ d S )Nc                 S   sF   t ƒ }t ƒ }||  || d < t ƒ }|| ||d < ||| < |||< |S ©Nr   r%   rF  )rÝ   rÞ   rD   r   Zz1Zz2r!   r!   r"   r#   Ý  s    z/TestDictInferred.test_dict_of_dict.<locals>.foo)r&   r"  ro  r   r%   r¹  )r*   r#   rÝ   rÞ   rD   r   r!   r!   r"   Útest_dict_of_dictÜ  s    


  þþz"TestDictInferred.test_dict_of_dictc                 C   s"   t dd„ ƒ}|  |ƒ | ¡ ¡ d S )Nc                   S   s   dd„ t dƒD ƒS )Nc                 S   s   i | ]}|d | “qS )r%   r!   r  r!   r!   r"   r  õ  s      zJTestDictInferred.test_comprehension_basic.<locals>.foo.<locals>.<dictcomp>r6   rŸ   r!   r!   r!   r"   r#   ó  s    z6TestDictInferred.test_comprehension_basic.<locals>.foorù   r)   r!   r!   r"   Útest_comprehension_basicò  s    
z)TestDictInferred.test_comprehension_basicc                 C   s"   t dd„ ƒ}|  |ƒ | ¡ ¡ d S )Nc                   S   s    dd„ t tdƒtdddƒƒD ƒS )Nc                 S   s   i | ]\}}|t |ƒ“qS r!   r&  )r}   r    r„  r!   r!   r"   r  ü  s      zUTestDictInferred.test_comprehension_basic_mixed_type.<locals>.foo.<locals>.<dictcomp>r6   r   r7   )r?   r   r!   r!   r!   r"   r#   ú  s    zATestDictInferred.test_comprehension_basic_mixed_type.<locals>.foorù   r)   r!   r!   r"   Ú#test_comprehension_basic_mixed_typeù  s    
z4TestDictInferred.test_comprehension_basic_mixed_typec                 C   s"   t dd„ ƒ}|  |ƒ | ¡ ¡ d S )Nc                      s"   ddddœ‰ ‡ fdd„t dƒD ƒS )NÚAÚBÚCrL  c                    s   i | ]}d | ˆ | “qS r  r!   r  ©r†   r!   r"   r    s      zMTestDictInferred.test_comprehension_involved.<locals>.foo.<locals>.<dictcomp>r<   rŸ   r!   r!   rË  r"   r#     s    z9TestDictInferred.test_comprehension_involved.<locals>.foorù   r)   r!   r!   r"   Útest_comprehension_involved   s    
z,TestDictInferred.test_comprehension_involvedc              	   C   sB   t dd„ ƒ}|  t¡�}|ƒ  W 5 Q R X t|jƒ}|  d|¡ d S )Nc                      s"   ddddœ‰ ‡ fdd„t dƒD ƒS )NrÈ  rÉ  r«   rL  c                    s   i | ]}d | ˆ | “qS r  r!   r  rË  r!   r"   r    s      zTTestDictInferred.test_comprehension_fail_mixed_type.<locals>.foo.<locals>.<dictcomp>r<   rŸ   r!   r!   rË  r"   r#   	  s    z@TestDictInferred.test_comprehension_fail_mixed_type.<locals>.fooz&Cannot cast complex128 to unicode_type)r   rL   r   r±   r²   r°   )r*   r#   rð   Úexcstrr!   r!   r"   Ú"test_comprehension_fail_mixed_type  s    

z3TestDictInferred.test_comprehension_fail_mixed_typeN)r  r  r  rª  r«  r®  r±  r³  r·  rº  r»  rÀ  rÁ  rÃ  rÅ  rÆ  rÇ  rÌ  rÎ  r!   r!   r!   r"   r§  &  s    r§  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestNonCompiledInferc              	   C   s¨  t ƒ }|  |j¡ |  t|ƒd¡ |  t|ƒti ƒ¡ |  tt|ƒƒg ¡ |  t	¡�}|d  W 5 Q R X |  t|j
ƒtt	dƒƒ¡ |  t	¡�}|d= W 5 Q R X |  t|j
ƒtt	dƒƒ¡ |  t	¡� | d¡ W 5 Q R X |  t|j
ƒtt	dƒƒ¡ |  | dd ¡d ¡ |  | d¡d ¡ |  t	¡�}| ¡  W 5 Q R X |  t|j
ƒtt	dƒƒ¡ |  t¡�}| d¡ W 5 Q R X |  t|j
ƒttdƒƒ¡ |  d|k¡ |  |j¡ d S )Nr   r   zdictionary is emptyz'invalid operation on untyped dictionary)r	   r™   Ú_typedr(   r,   r±   rn   ÚiterrL   rM   r²   r`   ZassertIsr0   rQ   Ú	TypeErrorr…   )r*   r   r´   r!   r!   r"   Útest_check_untyped_dict_ops  s:    
ÿ
þz0TestNonCompiledInfer.test_check_untyped_dict_opsc                 C   s.   t ƒ }d|d< |  |j¡ |  |d d¡ d S rÂ  )r	   r˜   rÐ  r(   r3  r!   r!   r"   Útest_getitem>  s    z!TestNonCompiledInfer.test_getitemc                 C   s2   t ƒ }| dd¡ |  |j¡ |  |d d¡ d S rÄ  )r	   r…   r˜   rÐ  r(   r3  r!   r!   r"   Útest_setdefaultF  s    z$TestNonCompiledInfer.test_setdefaultN)r  r  r  rÓ  rÔ  rÕ  r!   r!   r!   r"   rÏ    s   (rÏ  r†   )Úspecc                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚBagc                 C   s
   || _ d S r.   rË  )r*   r†   r!   r!   r"   Ú__init__Q  s    zBag.__init__c                 C   s
   t | jƒS r.   )rÁ   r†   r  r!   r!   r"   Ú__hash__T  s    zBag.__hash__N)r  r  r  rØ  rÙ  r!   r!   r!   r"   r×  O  s   r×  c                   @   s   e Zd Zdd„ ZdS )ÚTestDictWithJitclassc                 C   sB   t dd„ ƒ}|tdd�ƒ}|  |d jd¡ |  |d jd¡ d S )Nc                 S   s   t ƒ }| |d< tdƒ|d< |S )Nr   ée   r   )r	   r×  ©r~   r   r!   r!   r"   r#   Z  s    z8TestDictWithJitclass.test_jitclass_as_value.<locals>.foor&   rË  r   r   rÛ  )r   r×  r(   r†   )r*   r#   r   r!   r!   r"   Útest_jitclass_as_valueY  s
    
z+TestDictWithJitclass.test_jitclass_as_valueN)r  r  r  rÝ  r!   r!   r!   r"   rÚ  X  s   rÚ  c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	Ú	TestNoJitz0Exercise dictionary creation with JIT disabled. c              
   C   sH   t ddƒ�4 tƒ �" t tt¡}|  t|ƒt¡ W 5 Q R X W 5 Q R X d S ©NZDISABLE_JITT)	r   r   r
   r   r   r   r(   Útyper]   r3  r!   r!   r"   Ú&test_dict_create_no_jit_using_new_dicti  s    z0TestNoJit.test_dict_create_no_jit_using_new_dictc              
   C   sB   t ddƒ�. tƒ � tƒ }|  t|ƒt¡ W 5 Q R X W 5 Q R X d S rß  )r   r   r	   r(   rà  r]   r3  r!   r!   r"   Ú"test_dict_create_no_jit_using_Dicto  s    z,TestNoJit.test_dict_create_no_jit_using_Dictc              
   C   sL   t ddƒ�8 tƒ �& t tjtj¡}|  t|ƒt	¡ W 5 Q R X W 5 Q R X d S rß  )
r   r   r	   r#  r   r   r   r(   rà  r]   r3  r!   r!   r"   Ú#test_dict_create_no_jit_using_emptyu  s    z-TestNoJit.test_dict_create_no_jit_using_emptyN)r  r  r  Ú__doc__rá  râ  rã  r!   r!   r!   r"   rÞ  f  s   rÞ  c                   @   s   e Zd Zdd„ ZdS )ÚTestDictIteratorc                 C   s€   t dd„ ƒ}t dd„ ƒ}|ƒ }|ƒ }|  dddg|d ¡ |  dd	d
g|d ¡ |  dddg|d ¡ |  dddg|d ¡ d S )Nc                  S   sB   t jtjtjd�} d| d< d| d< d| d< t|  ¡ ƒt|  ¡ ƒfS )Nr0  r6   r   rZ   r   r[   r%   ©r	   r#  r   r�  rn   rA   rt   ©r�  r!   r!   r"   Úfun1~  s    ÿz1TestDictIterator.test_dict_iterator.<locals>.fun1c                  S   sB   t jtjtjd�} d| d< d| d< d| d< t|  ¡ ƒt|  ¡ ƒfS )Nr0  éM   rH   éX   r4   éc   r
  ræ  rç  r!   r!   r"   Úfun2ˆ  s    ÿz1TestDictIterator.test_dict_iterator.<locals>.fun2r   r   r%   r6   rZ   r[   rH   r4   r
  ré  rê  rë  r'   )r*   rè  rì  Zres1Zres2r!   r!   r"   Útest_dict_iterator}  s    
	
z#TestDictIterator.test_dict_iteratorN)r  r  r  rí  r!   r!   r!   r"   rå  |  s   rå  c                   @   s@   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dS )ÚTestTypedDictInitialValueszBTests that typed dictionaries carry their initial value if presentc                    s6   dd„ ‰ t ˆ ƒ‡fdd„ƒ}t‡ fdd„ƒ}|ƒ  d S )Nc                 S   s   d S r.   r!   rc   r!   r!   r"   rõ   ž  s    zDTestTypedDictInitialValues.test_homogeneous_and_literal.<locals>.barc                    sT   | j d krdd„ S ˆ  t| tjƒ¡ ˆ  | j ddddœ¡ ˆ  t| dƒd¡ d	d„ S )
Nc                 S   s   t | ƒS r.   ©r   rc   r!   r!   r"   rž  ¤  rŸ  zYTestTypedDictInitialValues.test_homogeneous_and_literal.<locals>.ol_bar.<locals>.<lambda>r   r%   r<   rB  Úliteral_valueFc                 S   s   | S r.   r!   rc   r!   r!   r"   rž  ¨  rŸ  )Úinitial_valuer˜   Ú
isinstancer   r¦   r(   Úhasattrrc   r  r!   r"   Úol_bar¡  s    
zGTestTypedDictInitialValues.test_homogeneous_and_literal.<locals>.ol_barc                     s   ddddœ} ˆ | ƒ d S )Nr   r%   r<   rB  r!   r¾  rö   r!   r"   r#   ª  s    zDTestTypedDictInitialValues.test_homogeneous_and_literal.<locals>.foo©r   r   ©r*   rô  r#   r!   ©rõ   r*   r"   Útest_homogeneous_and_literal�  s    z7TestTypedDictInitialValues.test_homogeneous_and_literalc                    s6   dd„ ‰ t ˆ ƒ‡fdd„ƒ}t‡ fdd„ƒ}|ƒ  d S )Nc                 S   s   d S r.   r!   rc   r!   r!   r"   rõ   ³  s    zVTestTypedDictInitialValues.test_heterogeneous_but_castable_to_homogeneous.<locals>.barc                    s:   ˆ   t| tjƒ¡ ˆ  | jd ¡ ˆ  t| dƒd¡ dd„ S )Nrð  Fc                 S   s   | S r.   r!   rc   r!   r!   r"   rž  »  rŸ  zkTestTypedDictInitialValues.test_heterogeneous_but_castable_to_homogeneous.<locals>.ol_bar.<locals>.<lambda>)r˜   rò  r   r¦   r(   rñ  ró  rc   r  r!   r"   rô  ¶  s    zYTestTypedDictInitialValues.test_heterogeneous_but_castable_to_homogeneous.<locals>.ol_barc                     s   ddddœ} ˆ | ƒ d S )Nr«   r%   r<   rB  r!   r¾  rö   r!   r"   r#   ½  s    zVTestTypedDictInitialValues.test_heterogeneous_but_castable_to_homogeneous.<locals>.foorõ  rö  r!   r÷  r"   Ú.test_heterogeneous_but_castable_to_homogeneous²  s    zITestTypedDictInitialValues.test_heterogeneous_but_castable_to_homogeneousc                    s6   dd„ ‰ t ˆ ƒ‡fdd„ƒ}t‡ fdd„ƒ}|ƒ  d S )Nc                 S   s   d S r.   r!   rc   r!   r!   r"   rõ   É  s    zZTestTypedDictInitialValues.test_heterogeneous_but_not_castable_to_homogeneous.<locals>.barc                    sd   ddddœ}dd„ ‰ ‡ fdd„|  ¡ D ƒ}ˆ t| tjƒ¡ ˆ | j|¡ ˆ t| d	ƒd
¡ dd„ S )Nr   ù               @r<   rB  c                 S   s   t  | ¡rt  | ¡S t| ƒS r.   )r   Zmaybe_literalÚliteralr   ©r­   r!   r!   r"   Úspecific_tyÐ  s    zrTestTypedDictInitialValues.test_heterogeneous_but_not_castable_to_homogeneous.<locals>.ol_bar.<locals>.specific_tyc                    s    i | ]\}}t  |¡ˆ |ƒ“qS r!   )r   rû  )r}   r~   rÆ   ©rý  r!   r"   r  Ò  s      zqTestTypedDictInitialValues.test_heterogeneous_but_not_castable_to_homogeneous.<locals>.ol_bar.<locals>.<dictcomp>rñ  Fc                 S   s   | S r.   r!   rc   r!   r!   r"   rž  Ö  rŸ  zoTestTypedDictInitialValues.test_heterogeneous_but_not_castable_to_homogeneous.<locals>.ol_bar.<locals>.<lambda>)rk   r˜   rò  r   ÚLiteralStrKeyDictr(   rð  ró  )r   r†   r©   r  rþ  r"   rô  Ì  s    z]TestTypedDictInitialValues.test_heterogeneous_but_not_castable_to_homogeneous.<locals>.ol_barc                     s   ddddœ} ˆ | ƒ d S )Nr   rú  r<   rB  r!   r¾  rö   r!   r"   r#   Ø  s    zZTestTypedDictInitialValues.test_heterogeneous_but_not_castable_to_homogeneous.<locals>.foorõ  rö  r!   r÷  r"   Ú2test_heterogeneous_but_not_castable_to_homogeneousÈ  s    zMTestTypedDictInitialValues.test_heterogeneous_but_not_castable_to_homogeneousc                    s6   dd„ ‰ t ˆ ƒ‡fdd„ƒ}t‡ fdd„ƒ}|ƒ  d S )Nc                 S   s   d S r.   r!   rc   r!   r!   r"   rõ   ä  s    zATestTypedDictInitialValues.test_mutation_not_carried.<locals>.barc                    sB   | j d krdd„ S ˆ  t| tjƒ¡ ˆ  | j ddddœ¡ dd„ S )Nc                 S   s   t | ƒS r.   rï  rc   r!   r!   r"   rž  ê  rŸ  zVTestTypedDictInitialValues.test_mutation_not_carried.<locals>.ol_bar.<locals>.<lambda>r   r%   r<   rB  c                 S   s   | S r.   r!   rc   r!   r!   r"   rž  í  rŸ  )rñ  r˜   rò  r   r¦   r(   rc   r  r!   r"   rô  ç  s
    
zDTestTypedDictInitialValues.test_mutation_not_carried.<locals>.ol_barc                     s    ddddœ} d| d< ˆ | ƒ d S ©Nr   r%   r<   rB  rH   r   r!   r¾  rö   r!   r"   r#   ï  s    zATestTypedDictInitialValues.test_mutation_not_carried.<locals>.foorõ  rö  r!   r÷  r"   Útest_mutation_not_carriedã  s    z4TestTypedDictInitialValues.test_mutation_not_carriedc                    sŽ   t dd„ ƒ}|d ftddddœffD ]d\‰}t dd„ ƒ‰d	d
„ ‰ tˆ ƒ‡‡fdd„ƒ}t ‡ fdd„ƒ}|ƒ  ˆjd d }|  |j|¡ q$d S )Nc                  W   s   d S r.   r!   )rV  r!   r!   r"   Únopü  s    zQTestTypedDictInitialValues.test_mutation_not_carried_single_function.<locals>.nopr   r%   r<   rB  c                 S   s   d S r.   r!   r¾  r!   r!   r"   Úbaz  s    zQTestTypedDictInitialValues.test_mutation_not_carried_single_function.<locals>.bazc                 S   s   d S r.   r!   rü  r!   r!   r"   rõ     s    zQTestTypedDictInitialValues.test_mutation_not_carried_single_function.<locals>.barc                    s   ‡ ‡fdd„}|S )Nc                    s   ˆ| ƒ ˆ | ƒ d S r.   r!   rü  ©r  Úfnr!   r"   Úimpl
  s    zbTestTypedDictInitialValues.test_mutation_not_carried_single_function.<locals>.ol_bar.<locals>.implr!   )r­   r  r  r!   r"   rô    s    zTTestTypedDictInitialValues.test_mutation_not_carried_single_function.<locals>.ol_barc                     s    ddddœ} ˆ | ƒ d| d< | S r  r!   r¾  rö   r!   r"   r#     s    zQTestTypedDictInitialValues.test_mutation_not_carried_single_function.<locals>.foor   )r   r   r   Z
signaturesr(   rñ  )r*   r  Zivrô  r#   Zlargr!   )rõ   r  r  r"   Ú)test_mutation_not_carried_single_functionù  s    
 
zDTestTypedDictInitialValues.test_mutation_not_carried_single_functionc                    s\   t dd„ ƒ‰ t ‡ fdd„ƒ}tƒ }d|d< tƒ }d|d< |  |d	ƒ|¡ |  |d
ƒ|¡ d S )Nc                 S   s   ddi}| rddi}|S )Nr   r%   r<   r!   )r~   Úor!   r!   r"   rõ     s    zGTestTypedDictInitialValues.test_unify_across_function_call.<locals>.barc                    s   | rddi}nˆ | ƒ}|S )Nr<   rH   r!   rÜ  rö   r!   r"   r#   %  s    
zGTestTypedDictInitialValues.test_unify_across_function_call.<locals>.foorH   r<   r%   r   TF)r   r	   r(   )r*   r#   Úe1Úe2r!   rö   r"   Útest_unify_across_function_call  s    
z:TestTypedDictInitialValues.test_unify_across_function_callN)
r  r  r  rä  rø  rù  r   r  r  r  r!   r!   r!   r"   rî  š  s   #rî  c                   @   sÈ   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0S )1ÚTestLiteralStrKeyDictzB Tests for dictionaries with string keys that can map to anything!c                 C   s   t dd„ ƒ}|  |ƒ d¡ d S )Nc                  S   s"   ddddœ} | d | d | d fS )Nr   rú  r   rB  r†   r‡   rˆ   r!   ©Úldr!   r!   r"   r#   9  s    zCTestLiteralStrKeyDict.test_basic_const_lowering_boxing.<locals>.foo)r   rú  r   r'   r)   r!   r!   r"   Ú test_basic_const_lowering_boxing8  s    
z6TestLiteralStrKeyDict.test_basic_const_lowering_boxingc                 C   s,   t dd„ ƒ}|  |dƒ¡ |  |dƒ¡ d S )Nc                 S   s.   | d }|dkrdnd}ddd|dœ}|d	 S )
Nr4   r%   TFr   rú  r   )r†   r‡   rˆ   Ú	non_constr  r!   )r~   rÆ   rð   r  r!   r!   r"   r#   A  s    z?TestLiteralStrKeyDict.test_basic_nonconst_in_scope.<locals>.fooé"   éœÿÿÿr—   r)   r!   r!   r"   Útest_basic_nonconst_in_scope@  s    
	z2TestLiteralStrKeyDict.test_basic_nonconst_in_scopec                    s<   d‰dd„ ‰ t ˆ ƒ‡fdd„ƒ}t‡ ‡fdd„ƒ}|ƒ  d S )Nr4   c                 S   s   d S r.   r!   r¾  r!   r!   r"   rõ   Q  s    z>TestLiteralStrKeyDict.test_basic_nonconst_freevar.<locals>.barc                    sX   ˆ   | jt d¡t d¡t d¡tdƒt d¡t d¡t d¡t d¡i¡ dd	„ }|S )
Nr†   r   r‡   rú  rˆ   r   r4   c                 S   s   d S r.   r!   r¾  r!   r!   r"   r  \  s    zOTestLiteralStrKeyDict.test_basic_nonconst_freevar.<locals>.ol_bar.<locals>.impl©r(   rð  r   rû  r   ©r~   r  r  r!   r"   rô  T  s       ýÿzATestLiteralStrKeyDict.test_basic_nonconst_freevar.<locals>.ol_barc                     s   dddˆdœ} ˆ | ƒ d S )Nr   rú  r   ©r†   r‡   rˆ   r   r!   r  )rõ   rð   r!   r"   r#   `  s    z>TestLiteralStrKeyDict.test_basic_nonconst_freevar.<locals>.foorõ  rö  r!   )rõ   rð   r*   r"   Útest_basic_nonconst_freevarN  s    z1TestLiteralStrKeyDict.test_basic_nonconst_freevarc                    s6   dd„ ‰ t ˆ ƒ‡fdd„ƒ}t‡ fdd„ƒ}|ƒ  d S )Nc                 S   s   d S r.   r!   r¾  r!   r!   r"   rõ   i  s    z5TestLiteralStrKeyDict.test_literal_value.<locals>.barc                    sH   ˆ   | jt d¡t d¡t d¡tdƒt d¡t d¡i¡ dd„ }|S )	Nr†   r   r‡   rú  rˆ   r   c                 S   s   d S r.   r!   r¾  r!   r!   r"   r  s  s    zFTestLiteralStrKeyDict.test_literal_value.<locals>.ol_bar.<locals>.implr  r  r  r!   r"   rô  l  s      þÿz8TestLiteralStrKeyDict.test_literal_value.<locals>.ol_barc                     s   ddddœ} ˆ | ƒ d S ©Nr   rú  r   rB  r!   r  rö   r!   r"   r#   w  s    z5TestLiteralStrKeyDict.test_literal_value.<locals>.foorõ  rö  r!   r÷  r"   Útest_literal_valueg  s    
z(TestLiteralStrKeyDict.test_literal_valuec                    s6   dd„ ‰ t ˆ ƒ‡fdd„ƒ}t‡ fdd„ƒ}|ƒ  d S )Nc                 S   s   d S r.   r!   r¾  r!   r!   r"   rõ   €  s    z?TestLiteralStrKeyDict.test_list_and_array_as_value.<locals>.barc                    sZ   ˆ   | jt d¡t d¡t d¡tjtjdddgd�t d¡tt d¡ƒi¡ d	d
„ }|S )Nr†   r   r‡   r%   r<   )rñ  rˆ   r4   c                 S   s   d S r.   r!   r¾  r!   r!   r"   r  ‹  s    zPTestLiteralStrKeyDict.test_list_and_array_as_value.<locals>.ol_bar.<locals>.impl)	r(   rð  r   rû  r   r�  r   r¿   Úzerosr  r  r!   r"   rô  ƒ  s     ýÿzBTestLiteralStrKeyDict.test_list_and_array_as_value.<locals>.ol_barc                     s(   dddg} d| t  d¡dœ}ˆ |ƒ d S )Nr   r%   r<   r4   rB  ©r¿   r  )r‡   r  rö   r!   r"   r#   �  s    
z?TestLiteralStrKeyDict.test_list_and_array_as_value.<locals>.foorõ  rö  r!   r÷  r"   Útest_list_and_array_as_value~  s    z2TestLiteralStrKeyDict.test_list_and_array_as_valuec                    s6   dd„ ‰ t ˆ ƒ‡fdd„ƒ}t‡ fdd„ƒ}|ƒ  d S )Nc                 S   s   d S r.   r!   r¾  r!   r!   r"   rõ   ™  s    zBTestLiteralStrKeyDict.test_repeated_key_literal_value.<locals>.barc                    sH   ˆ   | jt d¡t d¡t d¡tdƒt d¡t d¡i¡ dd„ }|S )	Nr†   Úaaaar‡   rú  rˆ   r   c                 S   s   d S r.   r!   r¾  r!   r!   r"   r  ¤  s    zSTestLiteralStrKeyDict.test_repeated_key_literal_value.<locals>.ol_bar.<locals>.implr  r  r  r!   r"   rô  œ  s      þÿzETestLiteralStrKeyDict.test_repeated_key_literal_value.<locals>.ol_barc                     s   ddddddœ} ˆ | ƒ d S )Nr   r6   rú  r   r  )r†   r†   r‡   rˆ   r†   r!   r  rö   r!   r"   r#   ¨  s    zBTestLiteralStrKeyDict.test_repeated_key_literal_value.<locals>.foorõ  rö  r!   r÷  r"   Útest_repeated_key_literal_value—  s    z5TestLiteralStrKeyDict.test_repeated_key_literal_valuec              
   C   sf   dd„ }dd„ }dd„ }dd„ }||||f}|D ]0}|   |j¡� |  t|ƒƒ |ƒ ¡ W 5 Q R X q0d S )	Nc                  S   s   ddddœ} t | ƒS r  )r,   r  r!   r!   r"   Ú_len±  s    z2TestLiteralStrKeyDict.test_read_only.<locals>._lenc                  S   s   ddddœ} | d S )Nr   rú  r   rB  r‡   r!   r  r!   r!   r"   Ústatic_getitemµ  s    z<TestLiteralStrKeyDict.test_read_only.<locals>.static_getitemc                  S   s   ddddœ} d| kd| kfS )Nr   rú  r   rB  r‡   rñ   r!   r  r!   r!   r"   Úcontains¹  s    z6TestLiteralStrKeyDict.test_read_only.<locals>.containsc                  S   s   ddddœ} |   ¡ }| |kS r  )r|   )r  Únewr!   r!   r"   r|   ½  s    z2TestLiteralStrKeyDict.test_read_only.<locals>.copy)ÚsubTestr  rw   r   )r*   r   r!  r"  r|   ZrdonlysÚtestr!   r!   r"   Útest_read_only¯  s    z$TestLiteralStrKeyDict.test_read_onlyc                 C   sœ   dd„ }dd„ }dd„ }dd„ }d	d
„ }dd„ }||||||f}|D ]R}|   |j¡�< |  t¡�}	t|ƒƒ  W 5 Q R X d}
|  |
t|	jƒ¡ W 5 Q R X qDd S )Nc                  S   s   ddddœ} d| d< d S )Nr   rú  r   rB  rà   r†   r!   r  r!   r!   r"   ÚsetitemÊ  s    z<TestLiteralStrKeyDict.test_mutation_failure.<locals>.setitemc                  S   s   ddddœ} | d= d S )Nr   rú  r   rB  r†   r!   r  r!   r!   r"   ÚdelitemÎ  s    z<TestLiteralStrKeyDict.test_mutation_failure.<locals>.delitemc                  S   s   ddddœ} |   ¡  d S r  )rQ   r  r!   r!   r"   rQ   Ò  s    z<TestLiteralStrKeyDict.test_mutation_failure.<locals>.popitemc                  S   s   ddddœ} |   ¡  d S r  )r`   r  r!   r!   r"   r`   Ö  s    z8TestLiteralStrKeyDict.test_mutation_failure.<locals>.popc                  S   s   ddddœ} |   ¡  d S r  )ri   r  r!   r!   r"   ri   Ú  s    z:TestLiteralStrKeyDict.test_mutation_failure.<locals>.clearc                  S   s   ddddœ} |   dd¡ d S )Nr   rú  r   rB  rñ   )r…   r  r!   r!   r"   r…   Þ  s    z?TestLiteralStrKeyDict.test_mutation_failure.<locals>.setdefaultú"Cannot mutate a literal dictionary)r$  r  rL   r   r   r°   r±   r²   )r*   r'  r(  rQ   r`   ri   r…   Zillegalsr%  r´   r(  r!   r!   r"   Útest_mutation_failureÈ  s    z+TestLiteralStrKeyDict.test_mutation_failurec                 C   sv   t dd„ ƒ}t dd„ ƒ}||fD ]P}|  |j¡�: |  t¡�}|dƒ W 5 Q R X d}|  |t|jƒ¡ W 5 Q R X q d S )Nc                 S   s   dddœ}|  | ¡S ©Nrú  r   ©r†   rˆ   )r0   ©r~   r  r!   r!   r"   r0   í  s    
z+TestLiteralStrKeyDict.test_get.<locals>.getc                 S   s   dddœ}||  S r+  r!   r-  r!   r!   r"   Úgetitemò  s    
z/TestLiteralStrKeyDict.test_get.<locals>.getitemr†   z*Cannot get{item}() on a literal dictionary)r   r$  r  rL   r   r°   r±   r²   )r*   r0   r.  r%  r´   r(  r!   r!   r"   Útest_getë  s    

zTestLiteralStrKeyDict.test_getc                 C   s"   t dd„ ƒ}|  |ƒ ddg¡ d S )Nc                  S   s   dddœ} dd„ |   ¡ D ƒS )Nrú  r   r,  c                 S   s   g | ]}|‘qS r!   r!   rÉ   r!   r!   r"   r   	  s     zETestLiteralStrKeyDict.test_dict_keys.<locals>.foo.<locals>.<listcomp>)rA   r  r!   r!   r"   r#    	  s    
z1TestLiteralStrKeyDict.test_dict_keys.<locals>.foor†   rˆ   r'   r)   r!   r!   r"   rq   þ  s    
z$TestLiteralStrKeyDict.test_dict_keysc                 C   s   t dd„ ƒ}|  |ƒ d¡ d S )Nc                  S   s   dddœ} |   ¡ S r+  )rt   r  r!   r!   r"   r#   		  s    
z3TestLiteralStrKeyDict.test_dict_values.<locals>.foo)rú  r   r'   r)   r!   r!   r"   ru   	  s    
z&TestLiteralStrKeyDict.test_dict_valuesc              	   C   s.   t dd„ ƒ}|  |ƒ dddt d¡ff¡ d S )Nc                  S   s   ddt  d¡dœ} |  ¡ S )Nrú  r   r4   )r†   rˆ   rñ   )r¿   r  rk   r  r!   r!   r"   r#   	  s    z2TestLiteralStrKeyDict.test_dict_items.<locals>.foo)r†   rú  )rˆ   r   rñ   r4   )r   rw   r¿   r  r)   r!   r!   r"   ro   	  s
    
ÿz%TestLiteralStrKeyDict.test_dict_itemsc              	   C   sB   t dd„ ƒ}|  t¡�}|ƒ  W 5 Q R X t|jƒ}|  d|¡ d S )Nc                  S   s   dddœ} | S r+  r!   r  r!   r!   r"   r#   	  s    
z3TestLiteralStrKeyDict.test_dict_return.<locals>.fooz#cannot convert native LiteralStrKey)r   rL   rÒ  r±   r²   r°   )r*   r#   r´   rÍ  r!   r!   r"   Útest_dict_return	  s    

z&TestLiteralStrKeyDict.test_dict_returnc                 C   s\   t dd„ ƒ}|  |dƒd¡ |  |dƒd¡ |  |dƒ| d¡¡ |  |dƒ| d¡¡ d S )Nc                 S   s:   | d dkr ddt  d¡dœ}nddt  d¡dœ}|d	 S )
Né   rH   rú  r   ©r†   rˆ   rð   ù              @ÚCAT©r4   rˆ   r  )r~   r†   r!   r!   r"   r#   (	  s    z2TestLiteralStrKeyDict.test_dict_unify.<locals>.foor&   r   r  r4  rù   r)   r!   r!   r"   Útest_dict_unify'	  s    
z%TestLiteralStrKeyDict.test_dict_unifyc              	   C   s|   t dd„ ƒ}|  t¡�}|dƒ W 5 Q R X |  dt|jƒ¡ t dd„ ƒ}|  t¡�}|dƒ W 5 Q R X |  dt|jƒ¡ d S )Nc                 S   sJ   | d dkr ddt  d¡dœ}nddt  d¡d	œ}d
}d}d}d}|d S )Nr1  rH   rú  r   )ZBAD_KEYrˆ   rð   r3  r4  r5  r2  r   r%   r<   r†   r  ©r~   r†   Zpy310_defeat1Zpy310_defeat2Zpy310_defeat3Zpy310_defeat4r!   r!   r"   Úkey_mismatch8	  s    z?TestLiteralStrKeyDict.test_dict_not_unify.<locals>.key_mismatchr&   zCannot unify LiteralStrKeyc                 S   sJ   | d dkr ddt  d¡dœ}nddt  d	¡dœ}d
}d}d}d}|d S )Nr1  rH   rú  r   )rH   r<   r2  r3  r4  r5  r   r%   r<   r†   r  r7  r!   r!   r"   Úvalue_type_mismatchJ	  s    zFTestLiteralStrKeyDict.test_dict_not_unify.<locals>.value_type_mismatchr¯   )r*   r8  r´   r9  r!   r!   r"   Útest_dict_not_unify6	  s    

z)TestLiteralStrKeyDict.test_dict_not_unifyc                    sÊ   t jt jftjt jt jftjt jt jftjt jt jftjt jt jftjt jt jftjt jt jftjt jt j	ftji}dd„ ‰ | 
¡ D ]@\}‰tˆ ƒ‡‡fdd„ƒ}|\‰‰t‡ ‡‡fdd„ƒ}|ƒ  q„d S )Nc                 S   s   d S r.   r!   r¾  r!   r!   r"   rõ   p	  s    z;TestLiteralStrKeyDict.test_dict_value_coercion.<locals>.barc                    s   ˆ  t| ˆ ƒ¡ dd„ }|S )Nc                 S   s   d S r.   r!   r¾  r!   r!   r"   r  x	  s    zLTestLiteralStrKeyDict.test_dict_value_coercion.<locals>.ol_bar.<locals>.impl)r˜   rò  r  )Ú	containerr*   r!   r"   rô  t	  s    z>TestLiteralStrKeyDict.test_dict_value_coercion.<locals>.ol_barc                     s   ˆdƒˆdƒdœ} ˆ | ƒ d S )Nr   r%   rD  r!   rc   )rõ   Úty1Úty2r!   r"   r#   ~	  s    z;TestLiteralStrKeyDict.test_dict_value_coercion.<locals>.foo)r¿   r   r   r¦   r  r  rÿ  rü   r   r   rk   r   r   )r*   ÚpÚdtsrô  r#   r!   )rõ   r;  r*   r<  r=  r"   Útest_dict_value_coercion\	  s2    
 
 
 
 
 
 
 
 ñz.TestLiteralStrKeyDict.test_dict_value_coercionc                    s2   dd„ ‰ t ˆ ƒdd„ ƒ}t‡ fdd„ƒ}|ƒ  d S )Nc                 S   s   d S r.   r!   r¾  r!   r!   r"   rõ   Š	  s    z9TestLiteralStrKeyDict.test_build_map_op_code.<locals>.barc                 S   s   dd„ }|S )Nc                 S   s   d S r.   r!   r¾  r!   r!   r"   r  �	  s    zJTestLiteralStrKeyDict.test_build_map_op_code.<locals>.ol_bar.<locals>.implr!   r  r!   r!   r"   rô  �	  s    z<TestLiteralStrKeyDict.test_build_map_op_code.<locals>.ol_barc                     s   ddddœi} ˆ | ƒ d S )Nr†   r6   Ústring)Úb1Úb2r!   rË  rö   r!   r"   r#   “	  s    z9TestLiteralStrKeyDict.test_build_map_op_code.<locals>.foorõ  rö  r!   rö   r"   Útest_build_map_op_code…	  s    
z,TestLiteralStrKeyDict.test_build_map_op_codec                    s<   t ddd„ƒ‰ t ‡ fdd„ƒ}tj |ƒ t d¡d ¡ d S )Nc                 S   s$   | d k	r | d d d …  d7  < d S )Nr   r6   r!   ©Zfake_kwargsr!   r!   r"   rõ   ›	  s    z3TestLiteralStrKeyDict.test_dict_as_arg.<locals>.barc                     s6   d} d}d}t  d¡}| |||dœ}ˆ |d� |d S )Nr   rú  rA  r<   r  rE  r   r  )r†   r‡   rˆ   r   rð   rö   r!   r"   r#   ¡	  s    

z3TestLiteralStrKeyDict.test_dict_as_arg.<locals>.foor<   r6   )N)r   r¿   ÚtestingZassert_allcloseÚonesr)   r!   rö   r"   Útest_dict_as_argš	  s
    	z&TestLiteralStrKeyDict.test_dict_as_argc                 C   s"   t dd„ ƒ}|  |ƒ | ¡ ¡ d S )Nc                  S   s    ddd„ dgi} | d d dƒS )NrÈ  c                 S   s   d|  S )Nr%   r!   rË  r!   r!   r"   rž  ±	  rŸ  z\TestLiteralStrKeyDict.test_dict_with_single_literallist_value.<locals>.foo.<locals>.<lambda>rÉ  r   r4   r!   rü  r!   r!   r"   r#   ¯	  s    zJTestLiteralStrKeyDict.test_dict_with_single_literallist_value.<locals>.foo©r   rw   r\   r)   r!   r!   r"   Ú'test_dict_with_single_literallist_value­	  s    
z=TestLiteralStrKeyDict.test_dict_with_single_literallist_valuec                    s6   dd„ ‰ t ˆ ƒ‡fdd„ƒ}t‡ fdd„ƒ}|ƒ  d S )Nc                 S   s   d S r.   r!   r¾  r!   r!   r"   rõ   ¹	  s    z8TestLiteralStrKeyDict.test_tuple_not_in_mro.<locals>.barc                    s,   ˆ   t| tjƒ¡ ˆ  t| tjƒ¡ dd„ S )Nc                 S   s   dS )N.r!   r¾  r!   r!   r"   rž  À	  rŸ  zMTestLiteralStrKeyDict.test_tuple_not_in_mro.<locals>.ol_bar.<locals>.<lambda>)r™   rò  r   Z	BaseTupler˜   rÿ  r¾  r  r!   r"   rô  ¼	  s    z;TestLiteralStrKeyDict.test_tuple_not_in_mro.<locals>.ol_barc                     s   dddœ} ˆ | ƒ d S )Nr   rˆ   rD  r!   rc   rö   r!   r"   r#   Â	  s    
z8TestLiteralStrKeyDict.test_tuple_not_in_mro.<locals>.foorõ  rö  r!   r÷  r"   Útest_tuple_not_in_mro¶	  s    z+TestLiteralStrKeyDict.test_tuple_not_in_mroc              	   C   s>   t dd„ ƒ}|  t¡�}|ƒ  W 5 Q R X |  dt|jƒ¡ d S )Nc                  S   s   ddt  d¡dœ} | d S )Nrú  r   rH   )Znot_arˆ   rð   r†   r  rË  r!   r!   r"   r#   Ë	  s    z=TestLiteralStrKeyDict.test_const_key_not_in_dict.<locals>.foozKey 'a' is not in dict.r¯   r³   r!   r!   r"   Útest_const_key_not_in_dictÉ	  s
    
z0TestLiteralStrKeyDict.test_const_key_not_in_dictc                 C   s@   t dd„ ƒ}|  |ƒ | ¡ ¡ t dd„ ƒ}|  |ƒ | ¡ ¡ d S )Nc                  S   s   t  d¡ddœ} t| ƒS )Nr4   rH   )Ú0Ú1©r¿   rG  r,   rc   r!   r!   r"   r#   Ú	  s    z<TestLiteralStrKeyDict.test_uncommon_identifiers.<locals>.fooc                  S   s   t  d¡ddœ} t| ƒS )Nr4   rH   )ú+zx--rO  rc   r!   r!   r"   rõ   â	  s    z<TestLiteralStrKeyDict.test_uncommon_identifiers.<locals>.barrI  )r*   r#   rõ   r!   r!   r"   Útest_uncommon_identifiersÕ	  s    

z/TestLiteralStrKeyDict.test_uncommon_identifiersc              	   C   s>   t dd„ ƒ}|  t¡�}|ƒ  W 5 Q R X |  dt|jƒ¡ d S )Nc                  S   s   ddddœ} |   ddi¡ | S )Nr%   rH   r†   rB  r~   r<   )r  )r  r!   r!   r"   r#   ì	  s    ýz4TestLiteralStrKeyDict.test_update_error.<locals>.foor)  r¯   r³   r!   r!   r"   Útest_update_erroré	  s    

þz'TestLiteralStrKeyDict.test_update_errorN)r  r  r  rä  r  r  r  r  r  r  r&  r*  r/  rq   ru   ro   r0  r6  r:  r@  rD  rH  rJ  rK  rL  rQ  rR  r!   r!   r!   r"   r  5  s0   #			&)	r  Ú__main__)5rä  r  rµ  Únumpyr¿   Znumbar   r   r   r   r   r   r   Znumba.typedr	   r
   r   Znumba.typed.typedobjectutilsr   Znumba.core.errorsr   Z
numba.corer   Znumba.tests.supportr   r   r   r   r   Znumba.experimentalr   Znumba.extendingr   r   r  r!  r<  rX  re  rl  r™  r§  rÏ  r�  Úobjectr×  rÚ  rÞ  rå  rî  r  r  Úmainr!   r!   r!   r"   Ú<module>   s\           	jI! \" p:    N
