o
    1&i                     @   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re4  dS 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   .   t tt}t| D ]}|d ||< q
t|S N   )r
   new_dictr   r   rangeboolndi r"   FC:\wamp64\www\opt\env\Lib\site-packages\numba/tests/test_dictobject.pyfoo       z*TestDictObject.test_dict_bool.<locals>.foor   r   Fr   T   d   Nr   assertEqualselfr$   r"   r"   r#   test_dict_bool      
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   r   r   )r
   r   r   r   r   lenr   r"   r"   r#   r$   4   r%   z,TestDictObject.test_dict_create.<locals>.foor   r&   r   r'   r(   Nr)   r+   r"   r"   r#   test_dict_create0   r.   zTestDictObject.test_dict_createc                 C   s^   t dd }| |dg dg d | |dg dg d | |dg dg d 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   	   )r   r   N
   )r8   r   )Nr8   r   Nr)   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 r1   r
   r   r   r   r   r3   )r   targetdefaultr    r!   r"   r"   r#   r$   \   s   
z6TestDictObject.test_dict_get_with_default.<locals>.foor7      r:   Nr)   r+   r"   r"   r#   test_dict_get_with_defaultX   s   
z)TestDictObject.test_dict_get_with_defaultc                 C   s   t dd }g d}g d}| |||dd | |||dd | |||d	d
 |   |   | td |||d W d   n1 sKw   Y  | td |||d W d   dS 1 shw   Y  dS )z1
        Exercise dictionary __getitem__
        c                 S   s0   t tt}t| |D ]\}}|||< q|| S r1   r
   r   r   r   zipkeysvalsr=   r    kvr"   r"   r#   r$   l      
z-TestDictObject.test_dict_getitem.<locals>.foor   r'   r?   皙?皙?333333?r   rK   r'   rL   r?   rM   0r   N4   )r   r*   assert_no_memory_leakdisable_leak_checkassertRaisesRegexKeyErrorr,   r$   rD   rE   r"   r"   r#   test_dict_getitemh   s   
	"z TestDictObject.test_dict_getitemc                 C   sj   t dd }g d}g d}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 r1   )r
   r   r   r   rB   popitemrD   rE   r    rF   rG   r"   r"   r#   r$      rH   z-TestDictObject.test_dict_popitem.<locals>.foorI   rJ   r   N)r   r   r/   r*   r,   r$   rD   rE   r!   r"   r"   r#   test_dict_popitem   s   
	z TestDictObject.test_dict_popitemc              	      s   t dd  t  fdd}g d}g d}tt|D ]}| |||dd jtt||dd q|   |   | 	t
 |||d	d W d
   d
S 1 sTw   Y  d
S )rW   c                 S   s:   d\}}t |D ]}|  \}}||7 }||8 }q||fS )Nr   r   )r   rX   )r    npopZkeysumZvalsum_rF   rG   r"   r"   r#   core   s   
z3TestDictObject.test_dict_popitem_many.<locals>.corec                    s2   t tt}t| |D ]\}}|||< q ||S r1   )r
   r   r   rB   )rD   rE   r]   r    rF   rG   r_   r"   r#   r$         

z2TestDictObject.test_dict_popitem_many.<locals>.foorI   r9         r?   )r]   rP   N)r   r   r/   r*   py_funcdictrB   rQ   rR   assertRaisesrT   rZ   r"   r`   r#   test_dict_popitem_many   s    
	"z%TestDictObject.test_dict_popitem_manyc                 C   s   t dd }g d}g d}| |||dd | |||dd | |||d	d
 | |||dd |   |   t dd }| t |  W d   dS 1 sXw   Y  dS )*
        Exercise dictionary .pop
        c                 S   s<   t tt}t| |D ]\}}|||< q||d t|fS r1   )r
   r   r   r   rB   popr/   rC   r"   r"   r#   r$      s   
z)TestDictObject.test_dict_pop.<locals>.foorI   rJ   r   )rK   r'   r'   )rL   r'   r?   )rM   r'   r   Nr?   c                  S   s   t tt} | dS )Nr   r
   r   r   r   rj   r    r"   r"   r#   r$      s   
Nr   r*   rQ   rR   rg   rT   rU   r"   r"   r#   test_dict_pop   s   
	
"zTestDictObject.test_dict_popc              	      s^   t dd  t  fdd}g d}g d}g d}| |||| tt||| dS )	ri   c                 S   s6   d}|D ]}|||  |d t|  7 }|d9 }q|S )Nr   grh|?r'   )rj   r/   )r    popstotalrF   r"   r"   r#   r_      s
   
z/TestDictObject.test_dict_pop_many.<locals>.corec                    s2   t tt}t| |D ]\}}|||< q ||S r1   rA   )rD   rE   rp   r    rF   rG   r`   r"   r#   r$      ra   z.TestDictObject.test_dict_pop_many.<locals>.foorI   rJ   )	r'   r?   r?   r   r   r'   r   r   r:   N)r   r*   re   rf   rB   )r,   r$   rD   rE   rp   r"   r`   r#   test_dict_pop_many   s   

z!TestDictObject.test_dict_pop_manyc                 C   s   t dd }g d}g d}| |||dd | |||dd | |||dd |   |   | t |||d	 W d    d S 1 sKw   Y  d S )
Nc                 S   s@   t tt}t| |D ]\}}|||< q||= t|||fS r1   )r
   r   r   r   rB   r/   r3   rC   r"   r"   r#   r$     s
   
z-TestDictObject.test_dict_delitem.<locals>.foorI   rJ   r   )r'   Nr'   r?   r   rn   rU   r"   r"   r#   test_dict_delitem  s   
"z TestDictObject.test_dict_delitemc                 C   s2   t dd }g d}g d}| |||d dS )z%
        Exercise dict.clear
        c                 S   sD   t tt}t| |D ]\}}|||< qt|}|  |t|fS r1   )r
   r   r   r   rB   r/   clear)rD   rE   r    rF   rG   Zb4r"   r"   r#   r$      s   
z+TestDictObject.test_dict_clear.<locals>.foorI   rJ   )r?   r   Nr)   rU   r"   r"   r#   test_dict_clear  s
   

zTestDictObject.test_dict_clearc                 C   sV   t dd }g d}g d}| |||tt|| t dd }| | g  dS )z%
        Exercise dict.items
        c                 S   sH   t tt}t| |D ]\}}|||< qg }| D ]}|| q|S r1   )r
   r   r   r   rB   itemsr2   )rD   rE   r    rF   rG   outkvr"   r"   r#   r$   3     
z+TestDictObject.test_dict_items.<locals>.foorI   rJ   c                  S   s,   t tt} g }|  D ]}|| q|S r1   )r
   r   r   r   rv   r2   )r    rw   rx   r"   r"   r#   r$   G  s
   N)r   r*   listrB   rU   r"   r"   r#   test_dict_items/  s   


zTestDictObject.test_dict_itemsc                 C   s2   t dd }g d}g d}| |||| dS )z$
        Exercise dict.keys
        c                 S   sH   t tt}t| |D ]\}}|||< qg }| D ]}|| q|S r1   )r
   r   r   r   rB   rD   r2   rD   rE   r    rF   rG   rw   r"   r"   r#   r$   U  ry   z*TestDictObject.test_dict_keys.<locals>.foorI   rJ   Nr)   rU   r"   r"   r#   test_dict_keysQ     

zTestDictObject.test_dict_keysc                 C   s6   t dd }g d}g d}| |||t| dS )z+
        Exercise len(dict.keys())
        c                 S   4   t tt}t| |D ]\}}|||< qt| S r1   )r
   r   r   r   rB   r/   rD   rY   r"   r"   r#   r$   l     
z.TestDictObject.test_dict_keys_len.<locals>.foorI   rJ   Nr   r*   r/   rU   r"   r"   r#   test_dict_keys_lenh     
z!TestDictObject.test_dict_keys_lenc                 C   s2   t dd }g d}g d}| |||| dS )z&
        Exercise dict.values
        c                 S   sH   t tt}t| |D ]\}}|||< qg }| D ]}|| q|S r1   )r
   r   r   r   rB   valuesr2   r|   r"   r"   r#   r$     ry   z,TestDictObject.test_dict_values.<locals>.foorI   rJ   Nr)   rU   r"   r"   r#   test_dict_values|  r~   zTestDictObject.test_dict_valuesc                 C   6   t dd }g d}g d}| |||t| dS )z-
        Exercise len(dict.values())
        c                 S   r   r1   )r
   r   r   r   rB   r/   r   rY   r"   r"   r#   r$     r   z0TestDictObject.test_dict_values_len.<locals>.foorI   rJ   Nr   rU   r"   r"   r#   test_dict_values_len  r   z#TestDictObject.test_dict_values_lenc                 C   r   )z,
        Exercise len(dict.items())
        c                 S   r   r1   )r
   r   r   r   rB   r/   rv   rY   r"   r"   r#   r$     r   z/TestDictObject.test_dict_items_len.<locals>.foorI   rJ   N)r   assertPreciseEqualr/   rU   r"   r"   r#   test_dict_items_len  s   
z"TestDictObject.test_dict_items_lenc                 C   s6   t dd }g d}g d}| |||g d dS )z%
        Exercise iter(dict)
        c                 S   sD   t tt}t| |D ]\}}|||< qg }|D ]}|| q|S r1   r
   r   r   r   rB   r2   r|   r"   r"   r#   r$     s   
z*TestDictObject.test_dict_iter.<locals>.foorI   rJ   Nr)   rU   r"   r"   r#   test_dict_iter  s   

zTestDictObject.test_dict_iterc                 C   s<   t dd }g d}g d}| |||g dg d dS )z,
        Exercise operator.contains
        c                 S   sH   t tt}t| |D ]\}}|||< qg }|D ]	}|||v  q|S r1   r   )rD   rE   Z	checklistr    rF   rG   rw   r"   r"   r#   r$     s   
z.TestDictObject.test_dict_contains.<locals>.foorI   rJ   )r'   r?   rP   r   r   )TTFTFNr)   rU   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 r1   )r
   r   r   r   rB   rz   copyrv   rY   r"   r"   r#   r$     s   
z*TestDictObject.test_dict_copy.<locals>.foorc   c                 S   s   g | ]
\}}||d   qS )r(   r"   ).0r!   xr"   r"   r#   
<listcomp>  s    z1TestDictObject.test_dict_copy.<locals>.<listcomp>N)r   rz   r   	enumerater*   rB   )r,   r$   rD   rE   rw   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   
setdefaultr3   )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 r1   r
   r   r   r   r   )nanbfaZfbdadbr!   r"   r"   r#   r$     s   z.TestDictObject.test_dict_equality.<locals>.foor9   r?   )TFg@)FT   Nr)   r+   r"   r"   r#   test_dict_equality  s   

z!TestDictObject.test_dict_equalityc                 C   s   t dd }g d}g d}g d}g d}| ||||| g d}g d}g d}g d}| ||||| g d}g d}g d}g d}| ||||| g d}g d}g d}g d}| ||||| d	S )
&
        Exercise dict.__eq__
        c                 S   sd   t tt}t tt}tt| D ]
}|| || | < qtt|D ]
}|| ||| < q#||kS r1   )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>.foorI   )r'   r?   rP   )r   r'   r'   r?   )r'   r   r?   rP   )r'   r   rP   )r   r'   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 r1   r   )r   r   r   r!   r"   r"   r#   r$   Q  s   
z8TestDictObject.test_dict_equality_diff_type.<locals>.foor9   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 r1   )r
   r   r   r   Z_as_meminfo)r   r    rF   rG   )r   r"   r#   boxerf  s   

z7TestDictObject.test_dict_to_from_meminfo.<locals>.boxerc                    s   t |  }t| S r1   )r
   Z_from_meminforz   rv   )mir    )dcttyper"   r#   unboxero     z9TestDictObject.test_dict_to_from_meminfo.<locals>.unboxerr9   r   N)	r   r   DictTyper   r   r*   refcountrz   re   )r,   r   r   r   gotexpectedr"   )r   r   r#   test_dict_to_from_meminfo]  s   
z(TestDictObject.test_dict_to_from_meminfoc                 C   T   t dd }| t}|d W d    n1 sw   Y  | dt|j d S )Nc                 S   4   t tt}t| D ]}|d ||< q
|d}|S )Nr                 ?r<   r   r    r!   zr"   r"   r#   r$   |  
   
z8TestDictObject.test_001_cannot_downcast_key.<locals>.foor9   &cannot safely cast complex128 to int32r   rg   r   assertInstr	exceptionr,   r$   raisesr"   r"   r#   test_001_cannot_downcast_key{     

z+TestDictObject.test_001_cannot_downcast_keyc                 C   r   )Nc                 S   s:   t tt}t| D ]}|d ||< q
|d|  d}|S )Nr   r'   r   r<   r   r"   r"   r#   r$     s
   z<TestDictObject.test_002_cannot_downcast_default.<locals>.foor9   (cannot safely cast complex128 to float64r   r   r"   r"   r#    test_002_cannot_downcast_default  r   z/TestDictObject.test_002_cannot_downcast_defaultc                 C   r   )Nc                 S   r   )Nr   g333333@r<   r   r"   r"   r#   r$     r   z8TestDictObject.test_003_cannot_downcast_key.<locals>.foor9   #cannot safely cast float64 to int32r   r   r"   r"   r#   test_003_cannot_downcast_key  s   
	
z+TestDictObject.test_003_cannot_downcast_keyc                 C   R   t dd }| t}|  W d    n1 sw   Y  | dt|j d S )Nc                  S      t tt} d| d< d S )N      @r   r
   r   r   r   rm   r"   r"   r#   r$        z8TestDictObject.test_004_cannot_downcast_key.<locals>.foor   r   r   r"   r"   r#   test_004_cannot_downcast_key     
z+TestDictObject.test_004_cannot_downcast_keyc                 C   r   )Nc                  S   r   )Nr   r   r   rm   r"   r"   r#   r$     r   z:TestDictObject.test_005_cannot_downcast_value.<locals>.foor   r   r   r"   r"   r#   test_005_cannot_downcast_value  r   z-TestDictObject.test_005_cannot_downcast_valuec                 C   r   )Nc                  S   s   t tt} | d  d S )Ng      '@r   rm   r"   r"   r#   r$     r   z8TestDictObject.test_006_cannot_downcast_key.<locals>.foor   r   r   r"   r"   r#   test_006_cannot_downcast_key  r   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sJ | ||< |||< || || fS )Nl    r   )r
   r   r   r   npuint64hash)v1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  q||fS )Nr   r   )r
   r   r   r   r   rX   r2   )r   r    r!   rD   rE   tmpr"   r"   r#   r$     s   z1TestDictObject.test_008_lifo_popitem.<locals>.foor9   c                 S      g | ]}|qS r"   r"   r   r   r"   r"   r#   r         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   r   )Nc                  S   s,   t tt} d| d< d| d< | dd d S )N      @r   r   r   r                 (@rl   rm   r"   r"   r#   r$     s   z<TestDictObject.test_010_cannot_downcast_default.<locals>.foor   r   r   r"   r"   r#    test_010_cannot_downcast_default      
z/TestDictObject.test_010_cannot_downcast_defaultc                 C   r   )Nc                  S   s*   t tt} d| d< d| d< | d d S )Nr   r   r   r   y              &@rl   rm   r"   r"   r#   r$     s   z8TestDictObject.test_011_cannot_downcast_key.<locals>.foor   r   r   r"   r"   r#   test_011_cannot_downcast_key  r   z+TestDictObject.test_011_cannot_downcast_keyc                 C   r   )Nc                  S   s   t tt} d| d< d| v S )Nr   r   r   r   rm   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      t dd }| |  d S )Nc                  S   s   t tt} d| v S r   r   rm   r"   r"   r#   r$   0     z8TestDictObject.test_013_contains_empty_dict.<locals>.foor   r+   r"   r"   r#   test_013_contains_empty_dict/     
z+TestDictObject.test_013_contains_empty_dictc                 C   r   )Nc                  S   s   t tt} d| vS r   r   rm   r"   r"   r#   r$   9  r   z<TestDictObject.test_014_not_contains_empty_dict.<locals>.foo)r   r   r+   r"   r"   r#    test_014_not_contains_empty_dict8  r   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/   rt   )r   r    r!   r   r   r"   r"   r#   r$   B  s   z/TestDictObject.test_015_dict_clear.<locals>.foor9   r   r)   )r,   r$   mr"   r"   r#   test_015_dict_clearA  s   
	z"TestDictObject.test_015_dict_clearc                 C   r   )Nc                  S      t tt} | dd d S )Nr         (@r
   r   r   r   r   rm   r"   r"   r#   r$   P     z8TestDictObject.test_016_cannot_downcast_key.<locals>.foor   r   r   r"   r"   r#   test_016_cannot_downcast_keyO  r   z+TestDictObject.test_016_cannot_downcast_keyc                 C   r   )Nc                  S   r   )Nr   r   r   rm   r"   r"   r#   r$   ^  r   z<TestDictObject.test_017_cannot_downcast_default.<locals>.foor   r   r   r"   r"   r#    test_017_cannot_downcast_default]  r   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   r   r"   r"   r   r"   r"   r#   r   u  r   zLTestDictObject.test_018_keys_iter_are_views.<locals>.foo.<locals>.<listcomp>c                 S   r   r"   r"   r   r"   r"   r#   r   v  r   r
   r   r   r   rD   )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   s6   t dd }| \}}| |g d | |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   rv   r2   )r    rw   r   r"   r"   r#   r$     s   z/TestDictObject.test_020_string_key.<locals>.foo))r   r  )r   r  )r   r  )r    rP   r  r)   )r,   r$   rv   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   r2   joinrz   rv   )r    r   r!   srw   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   r   r"   r"   r   r"   r"   r#   r     r   zJTestDictObject.test_022_references_juggle.<locals>.foo.<locals>.<listcomp>c                 S   r   r"   r"   r   r"   r"   r#   r     r   c                 S   r   r"   r"   r   r"   r"   r#   r     r   )r
   r   r   r   rv   )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   "   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"   rm   r"   r#   bar     z9TestDictObject.test_023_closure.<locals>.foo.<locals>.barc                 S   r   r"   r"   r   r"   r"   r#   r     r   z@TestDictObject.test_023_closure.<locals>.foo.<locals>.<listcomp>r   r  r"   rm   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*   re   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| v S )Nr?   ZdtypegGz@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.
        r9   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>      z?TestDictObject.test_dict_update.<locals>.f1.<locals>.<dictcomp>c                 S      i | ]}d | |qS r?   r"   r&  r"   r"   r#   r'    r(  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'   rP      )r   r?   r7   c                 S   r)  r*  r"   r&  r"   r"   r#   r'    r(  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/  re   Zcfuncr   r   r1  r"   r"   r#   test_dict_update  s   	

zTestDictObject.test_dict_updateN):__name__
__module____qualname__r-   r0   r;   r@   rV   r[   rh   ro   rr   rs   ru   r{   r}   r   r   r   r   r   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%  r2  r"   r"   r"   r#   r      sj    )$"+
		
r   c                   @   4   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 r1   r   )r,   fromtytotyr"   r"   r#   
check_good     zTestDictTypeCasting.check_goodc                 C   sX   |  t}t|| W d    n1 sw   Y  | djdi t t|j d S )Nz%cannot safely cast {fromty} to {toty}r"   )rg   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 r1   )
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 r1   )r<  r   r   r   rB  rA  rD  r"   r"   r#   test_cast_float_to0     z&TestDictTypeCasting.test_cast_float_toc                 C   s4   |  tjtj |  tjtj |  tjtj d S r1   )r<  r   booleanr   r   rA  rD  r"   r"   r#   test_cast_bool_to5  rG  z%TestDictTypeCasting.test_cast_bool_toN)r3  r4  r5  r<  r@  rE  rF  rI  r"   r"   r"   r#   r9    s    r9  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| g d tt|	 g dD ]\}}| j
||d	d
 q9| 
|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	|v  t| }| t|t| | 
|d	d t|}| \}}| t||d  | ||v | }| || | t| t|  d S )Nr   r   r   r'   r   r?   rI   )r   r   r   rP   )Zplacesr(      r7   r0  )rP   r7   )r	   emptyr   r   r*   r/   rz   rD   rB   r   ZassertAlmostEqualZassertIsNoner3   r   r,  r   rf   rv   rj   rX   r   )	r,   r    r   r   Zpydr   rF   rG   Z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 ]\}}|||< qt|}| || d S )Nc                 S      i | ]	\}}|t |qS r"   float)r   rF   rG   r"   r"   r#   r'  n      z5TestTypedDict.test_copy_from_dict.<locals>.<dictcomp>r9   rc   )	rB   r   r	   rL  r   r   rv   rf   r*   )r,   expectnbdrF   rG   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 )NGz?r   )r	   rL  r   r   rm   r"   r"   r#   producerv  s   z-TestTypedDict.test_compiled.<locals>.producerc                 S   s   | d S r   r"   rm   r"   r"   r#   consumer|     z-TestTypedDict.test_compiled.<locals>.consumerrU  r)   )r,   rV  rW  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	   rL  r   r$  Zuint32r   r*   r3   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 ||< q7||||| |r]| ||d d S d S )Nr'   r   r?   r9   rc   r   )r	   rL  r   r   r*   r   r   
startswith)r,   ZstrfnprefixrS  r    checkerr!   r"   r"   r#   check_stringify  s    zTestTypedDict.check_stringifyc                 C   s   | j tdd d S )NT)ra  )rc  reprrD  r"   r"   r#   	test_repr  s   zTestTypedDict.test_reprc                 C   s   |  t d S r1   )rc  r   rD  r"   r"   r#   test_str  r=  zTestTypedDict.test_strN)F)
r3  r4  r5  rM  rT  rZ  r_  rc  re  rf  r"   r"   r"   r#   rJ  ;  s    1
	rJ  c                   @      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g d!g|	dtg d!iff	}
|
D ]\}}}| jr|| }n|j| }| || qd S )"Nc                 S   s   t t| |}|S r1   r	   rB   )r   r   r    r"   r"   r#   func1  s   z>DictIterableCtor.test_iterable_type_constructor.<locals>.func1c                 S   s   t d}tt||S rk   )r   r	   rB   Za_r   r   r"   r"   r#   func2     z>DictIterableCtor.test_iterable_type_constructor.<locals>.func2c                 S   s   g d}t t||S )Nr   r   r'   ri  rk  r"   r"   r#   func3  rm  z>DictIterableCtor.test_iterable_type_constructor.<locals>.func3c                 S   s   t | |}tt | t || S r1   )rB   r	   r   r   r   r"   r"   r#   func4  s   
z>DictIterableCtor.test_iterable_type_constructor.<locals>.func4c                 S   s   t tt| ||S r1   ri  r   r   r"   r"   r#   func5  s   z>DictIterableCtor.test_iterable_type_constructor.<locals>.func5c                 S      t | S r1   r	   )rv   r"   r"   r#   func6  rX  z>DictIterableCtor.test_iterable_type_constructor.<locals>.func6c                 S   s   t | |iS r1   ru  )rF   rG   r"   r"   r#   func7  s   z>DictIterableCtor.test_iterable_type_constructor.<locals>.func7c                 S      t  }||| < |S r1   ru  rF   rG   r    r"   r"   r#   func8     z>DictIterableCtor.test_iterable_type_constructor.<locals>.func8c                 S   s$   t  }|  D ]\}}|||< q|S r1   )r	   rv   )Zpy_dictr    rF   rG   r"   r"   r#   	_get_dict  s   
zBDictIterableCtor.test_iterable_type_constructor.<locals>._get_dictrn  abcr   r   r   )r   r   r   )r   r   r   )r'   r   r'   )r~  r  r  )r   r   )r?   r   r   r?   keyr   rF   rI   )r   r   jit_enabledre   r   )r,   rj  rl  ro  rq  rs  rv  rw  rz  r|  rE   funcargsr   r   r"   r"   r#   test_iterable_type_constructor  sR   













z/DictIterableCtor.test_iterable_type_constructorN)r3  r4  r5  r  r"   r"   r"   r#   rh    s    rh  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestDictIterableCtorJitc                 C   
   d| _ d S )NTr  rD  r"   r"   r#   setUp     
zTestDictIterableCtorJit.setUpc                 C   H   t dd }d}| t| |  W d    d S 1 sw   Y  d S )Nc                   S      t dS rk   ru  r"   r"   r"   r#   ctor  rX  zDTestDictIterableCtorJit.test_exception_no_iterable_arg.<locals>.ctor!.*No implementation of function.*r   rS   r   r,   r  msgr"   r"   r#   test_exception_no_iterable_arg     
"z6TestDictIterableCtorJit.test_exception_no_iterable_argc                 C   r  )Nc                   S   s   t dddS )Nr'   rP   r  ru  r"   r"   r"   r#   r    s   zATestDictIterableCtorJit.test_exception_dict_mapping.<locals>.ctorr  r  r  r"   r"   r#   test_exception_dict_mapping  r  z3TestDictIterableCtorJit.test_exception_dict_mappingc                 C   r  )Nc                   S   r  )Nr  )r'   r   r?   ru  r"   r"   r"   r#   r    rX  z<TestDictIterableCtorJit.test_exception_setitem.<locals>.ctorr  r  r  r"   r"   r#   test_exception_setitem  r  z.TestDictIterableCtorJit.test_exception_setitemN)r3  r4  r5  r  r  r  r  r"   r"   r"   r#   r    s
    		r  c                   @   r8  )TestDictIterableCtorNoJitc                 C   r  )NFr  rD  r"   r"   r#   r    r  zTestDictIterableCtorNoJit.setUpc                 C   s@   d}|  t| tdd W d    d S 1 sw   Y  d S )Nz%Dict expect at most 1 argument, got 2r   r'   rS   r   r	   r,   r  r"   r"   r#   test_exception_nargs  s   "z.TestDictIterableCtorNoJit.test_exception_nargsc                 C   sB   d}|  t| tddi W d    d S 1 sw   Y  d S )Nz$.*dict\(mapping\) is not supported.*r   r'   r  r  r"   r"   r#   test_exception_mapping_ctor  s   "z5TestDictIterableCtorNoJit.test_exception_mapping_ctorc                 C   >   d}|  t| td W d    d S 1 sw   Y  d S )Nz.*object is not iterable.*r?   r  r  r"   r"   r#   test_exception_non_iterable_arg     
"z9TestDictIterableCtorNoJit.test_exception_non_iterable_argc                 C   r  )Nz6.*dictionary update sequence element #1 has length 3.*r  )rS   
ValueErrorr	   r  r"   r"   r#   r  #  r  z0TestDictIterableCtorNoJit.test_exception_setitemN)r3  r4  r5  r  r  r  r  r  r"   r"   r"   r#   r    s    r  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|< qDt|D ]}| |t| | qW| t|| d S )
Nc                  S   &   t jtjtjd} d| d< d| d< | S )Nr[  {   123A  321)r	   rL  r   r  r   rm   r"   r"   r#   r$   ,     z,TestDictRefctTypes.test_str_key.<locals>.foor  r  r  r  )r  r     r(   r   r*   rf   r   r   r,   r$   r    rR  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|||< q<t|D ]}| || t| qO| t|| d S )
Nc                  S   r  )Nr[  r  r  r  r  )r	   rL  r   r   r  rm   r"   r"   r#   r$   J  r  z,TestDictRefctTypes.test_str_val.<locals>.foor  r  r  r  r  r  Z231r   r  r  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
|< q7| t|t| | |d |d	  | |d |d
  t| |D ]
\}}| || qp| d|v  | d|v  |d= | d|v  |d= | d|v  |d	d= t	dD ]}| \}}| }| || q|t jd |d |d< t| |D ]
\}}| || qd S )Nr  r[  r9   r:   Zmassrc   velocityr(   r   r   r'   Z   last)r   randomseedr	   rL  r   r  r   r2   r   r   r*   r/   r   rB   r   r   r   rX   rj   )	r,   r    rR  r!   r   exprF   rG   wr"   r"   r#   test_str_key_array_valuef  sD   
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|| q0d S )Nc                  S      t jtjtjd} | S Nr[  r	   rL  r   intprm   r"   r"   r#   inner_numba_dict  s
   zITestDictRefctTypes.test_dict_of_dict_int_keyval.<locals>.inner_numba_dictr[  c                 S   s>   t dD ]}| }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?   r0     r9   )r	   rL  r   r  r   rf   assertIsInstancer*   )r,   r  r    r  r   rR  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 ]!\}}|d7 }| t||d  | D ]
\}}| || q7q!| |d d S )Nc                  S   r  r  r  rm   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 ]}||| |< qq|S )Nr[  r   )r	   rL  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   rv   r*   r/   )r,   r$   r    ctrF   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   rF   r"   r"   r#   r$     s   
z,TestDictRefctTypes.test_delitem.<locals>.foor   )	r	   rL  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 )Nr9   r  r   c                 S   s   | d  d7  < | d S r   r"   rm   r"   r"   r#   r$        z8TestDictRefctTypes.test_getitem_return_type.<locals>.foor   r(   )r	   rL  r   r   r   Zaranger   Znopython_signaturesreturn_typer  ArrayZassertNotIsInstanceOptionalr   )r,   r    r$   Zrettyr"   r"   r#   test_getitem_return_type  s   
$z+TestDictRefctTypes.test_getitem_return_typec                 C   sF   t  }g d}|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)r3  r4  r5  r  r  r  r  r  r  r  r  r"   r"   r"   r#   r  )  s    +""r  c                   @   r8  )TestDictForbiddenTypesc                 C   sJ   |  t}|  W d    n1 sw   Y  t|j}| || d S r1   )rg   r   r   r   r   )r,   rR  callabler   r  r"   r"   r#   assert_disallow  s
   
z&TestDictForbiddenTypes.assert_disallowc                    >   d  }| | fdd t fdd}| || d S )Nz{} as key is forbiddenc                      s   t  tjS r1   r  r"   tyr"   r#   <lambda>      z<TestDictForbiddenTypes.assert_disallow_key.<locals>.<lambda>c                      s   t  tj d S r1   r  r"   r  r"   r#   r$        z7TestDictForbiddenTypes.assert_disallow_key.<locals>.foor>  r  r   r,   r  r  r$   r"   r  r#   assert_disallow_key  
   
z*TestDictForbiddenTypes.assert_disallow_keyc                    r  )Nz{} as value is forbiddenc                      s   t tj S r1   r  r"   r  r"   r#   r    r  z>TestDictForbiddenTypes.assert_disallow_value.<locals>.<lambda>c                      s   t tj  d S r1   r  r"   r  r"   r#   r$     r  z9TestDictForbiddenTypes.assert_disallow_value.<locals>.foor  r  r"   r  r#   assert_disallow_value  r  z,TestDictForbiddenTypes.assert_disallow_valuec                 C   (   |  ttj | ttj d S r1   )r  r   r   r  r  rD  r"   r"   r#   test_disallow_list     z)TestDictForbiddenTypes.test_disallow_listc                 C   r  r1   )r  r   Setr  r  rD  r"   r"   r#   test_disallow_set!  r  z(TestDictForbiddenTypes.test_disallow_setN)r3  r4  r5  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 )Nr  r  ru  rm   r"   r"   r#   r$   (  r{  z1TestDictInferred.test_simple_literal.<locals>.foor  r   r*   rf   r   r\  r]  r,   r$   rF   rG   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   rx  r1   ru  ry  r"   r"   r#   r$   5  r{  z.TestDictInferred.test_simple_args.<locals>.foor  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      t  }||| < ||| < |S r1   ru  rF   rG   r  r    r"   r"   r#   r$   B     z0TestDictInferred.test_simple_upcast.<locals>.foo)r  @@r  r  )r,   r$   rF   rG   r  r    r"   r"   r#   test_simple_upcastA  s   

z#TestDictInferred.test_simple_upcastc                 C   sl   t dd }d\}}}| t}|||| W d    n1 s!w   Y  | dt|t|j d S )Nc                 S   r  r1   ru  r  r"   r"   r#   r$   P  r  z9TestDictInferred.test_conflicting_value_type.<locals>.foo)r  r  r   cannot safely cast float64 to {}r   rg   r   r   r>  r   r   r   )r,   r$   rF   rG   r  r   r"   r"   r#   test_conflicting_value_typeO     

z,TestDictInferred.test_conflicting_value_typec                 C   sl   t dd }d\}}}| t}|||| W d    n1 s!w   Y  | dt|t|j d S )Nc                 S   s   t  }||| < |||< |S r1   ru  )rF   hrG   r    r"   r"   r#   r$   `  r  z7TestDictInferred.test_conflicting_key_type.<locals>.foo)r  gfffff^@r  r  r  )r,   r$   rF   r  rG   r   r"   r"   r#   test_conflicting_key_type_  r  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 d    n1 s8w   Y  | t|d d}| 	|t
|d	  t| }	| |	d	 d
 | ||tdtdf  d S )Nc                 S   s   t  }||| < ||| fS r1   ru  )r   r   r   r    r"   r"   r#   r$   q  s   z?TestDictInferred.test_conflict_key_type_non_number.<locals>.foor   r'   r  T)recordz:unsafe cast from UniTuple(int32 x 2) to UniTuple(int8 x 2)r   )r   r'   )r   r   rC  r   r  warningscatch_warningsr*   r/   r   r   rz   rD   )
r,   r$   r   r   r   r  r    Zdk2r  rD   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||| < |S |d |d< |S )Nr     ru  ry  r"   r"   r#   r$     s   z>TestDictInferred.test_ifelse_filled_both_branches.<locals>.foor  r\   r  r   r   r*   rf   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 r1   ru  ry  r"   r"   r#   r$     s   z:TestDictInferred.test_ifelse_empty_one_branch.<locals>.foor  r\   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 r1   ri  )ksvsr    rF   rG   r"   r"   r#   r$     s   
z'TestDictInferred.test_loop.<locals>.foorP   c                 S   s   | d S )Nr(   r"   r   r"   r"   r#   r        z,TestDictInferred.test_loop.<locals>.<lambda>)r   rz   r   mapr*   rf   rB   )r,   r$   r   r  r    r"   r"   r#   	test_loop  s   

zTestDictInferred.test_loopc                 C   r   )Nc                  S   s
   t  } | S r1   ru  rm   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| rd|d< ||t|fS Nr'   r   )r	   r/   rv   )Zdefiner    r  rF   rG   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'   ru  )r   r   rG   r    Zz1Zz2r"   r"   r#   r$     s   z/TestDictInferred.test_dict_of_dict.<locals>.foo)r(   rK  r  r   r'   r  )r,   r$   r   r   rG   r    r"   r"   r#   test_dict_of_dict  s   


z"TestDictInferred.test_dict_of_dictc                 C   "   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'    r(  zJTestDictInferred.test_comprehension_basic.<locals>.foo.<locals>.<dictcomp>r9   r   r"   r"   r"   r#   r$     r  z6TestDictInferred.test_comprehension_basic.<locals>.foor  r+   r"   r"   r#   test_comprehension_basic     
z)TestDictInferred.test_comprehension_basicc                 C   r
  )Nc                   S   s    dd t tdtdddD S )Nc                 S   rN  r"   rO  )r   r!   r  r"   r"   r#   r'    rQ  zUTestDictInferred.test_comprehension_basic_mixed_type.<locals>.foo.<locals>.<dictcomp>r9   r   r:   )rB   r   r"   r"   r"   r#   r$     s    zATestDictInferred.test_comprehension_basic_mixed_type.<locals>.foor  r+   r"   r"   r#   #test_comprehension_basic_mixed_type  r  z4TestDictInferred.test_comprehension_basic_mixed_typec                 C   r
  )Nc                      "   dddd  fddt dD S )NABCrn  c                       i | ]	}d |  | qS r*  r"   r&  r   r"   r#   r'    rQ  zMTestDictInferred.test_comprehension_involved.<locals>.foo.<locals>.<dictcomp>r?   r   r"   r"   r  r#   r$        z9TestDictInferred.test_comprehension_involved.<locals>.foor  r+   r"   r"   r#   test_comprehension_involved   s   
z,TestDictInferred.test_comprehension_involvedc                 C   V   t dd }| t}|  W d    n1 sw   Y  t|j}| d| d S )Nc                      r  )Nr  r  r   rn  c                    r  r*  r"   r&  r  r"   r#   r'    rQ  zTTestDictInferred.test_comprehension_fail_mixed_type.<locals>.foo.<locals>.<dictcomp>r?   r   r"   r"   r  r#   r$   	  r  z@TestDictInferred.test_comprehension_fail_mixed_type.<locals>.fooz&Cannot cast complex128 to unicode_type)r   rg   r   r   r   r   )r,   r$   r  excstrr"   r"   r#   "test_comprehension_fail_mixed_type  s   

z3TestDictInferred.test_comprehension_fail_mixed_typeN)r3  r4  r5  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 d    n1 s9w   Y  | t|j
tt	d | t	}|d= W d    n1 s^w   Y  | t|j
tt	d | t	 |d W d    n1 sw   Y  | t|j
tt	d | |dd d  | |dd  | t	}|  W d    n1 sw   Y  | t|j
tt	d | t}|d W d    n1 sw   Y  | t|j
ttd | d|v  | |j d S )Nr   r   zdictionary is emptyz'invalid operation on untyped dictionary)r	   r   _typedr*   r/   r   rz   iterrg   rT   r   rj   ZassertIsr3   rX   	TypeErrorr   )r,   r    r   r"   r"   r#   test_check_untyped_dict_ops  sD   



z0TestNonCompiledInfer.test_check_untyped_dict_opsc                 C   s.   t  }d|d< | |j | |d d d S r  )r	   r   r  r*   r^  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*   r^  r"   r"   r#   test_setdefaultF  s   z$TestNonCompiledInfer.test_setdefaultN)r3  r4  r5  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 r1   r  )r,   r   r"   r"   r#   __init__Q  r  zBag.__init__c                 C   s
   t | jS r1   )r   r   rD  r"   r"   r#   __hash__T  r  zBag.__hash__N)r3  r4  r5  r"  r#  r"   r"   r"   r#   r!  O  s    r!  c                   @   rg  )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)r3  r4  r5  r'  r"   r"   r"   r#   r$  X      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   s   t dd2 t  ttt}| t|t W d    n1 s"w   Y  W d    d S W d    d S 1 s:w   Y  d S NZDISABLE_JITT)	r   r   r
   r   r   r   r*   typerf   r^  r"   r"   r#   &test_dict_create_no_jit_using_new_dicti  s   "z0TestNoJit.test_dict_create_no_jit_using_new_dictc              	   C   s|   t dd/ t  t }| t|t W d    n1 sw   Y  W d    d S W d    d S 1 s7w   Y  d S r*  )r   r   r	   r*   r+  rf   r^  r"   r"   r#   "test_dict_create_no_jit_using_Dicto  s   "z,TestNoJit.test_dict_create_no_jit_using_Dictc              	   C   s   t dd4 t  ttjtj}| t|t	 W d    n1 s$w   Y  W d    d S W d    d S 1 s<w   Y  d S r*  )
r   r   r	   rL  r   r   r   r*   r+  rf   r^  r"   r"   r#   #test_dict_create_no_jit_using_emptyu  s   "z-TestNoJit.test_dict_create_no_jit_using_emptyN)r3  r4  r5  __doc__r,  r-  r.  r"   r"   r"   r#   r)  f  s
    r)  c                   @   rg  )TestDictIteratorc                 C   sx   t dd }t dd }| }| }| g d|d  | g d|d  | g d	|d  | g d
|d  d S )Nc                  S   B   t jtjtjd} d| d< d| d< d| d< t|  t|  fS )Nr[  r9   r   rc   r   rd   r'   r	   rL  r   r  rz   rD   r   r  r"   r"   r#   fun1~     z1TestDictIterator.test_dict_iterator.<locals>.fun1c                  S   r1  )Nr[  M   rP   X   r7   c   r0  r2  r3  r"   r"   r#   fun2  r5  z1TestDictIterator.test_dict_iterator.<locals>.fun2rn  r   rb   r   )rP   r7   r0  )r6  r7  r8  r)   )r,   r4  r9  Zres1Zres2r"   r"   r#   test_dict_iterator}  s   
	
z#TestDictIterator.test_dict_iteratorN)r3  r4  r5  r:  r"   r"   r"   r#   r0  |  r(  r0  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                    6   dd  t  fdd}t fdd}|  d S )Nc                 S      d S r1   r"   rm   r"   r"   r#   r       zDTestTypedDictInitialValues.test_homogeneous_and_literal.<locals>.barc                    sT   | j d u r	dd S  t| tj  | j dddd  t| dd d	d S )
Nc                 S   rt  r1   r   rm   r"   r"   r#   r    r  zYTestTypedDictInitialValues.test_homogeneous_and_literal.<locals>.ol_bar.<locals>.<lambda>r   r'   r?   rp  literal_valueFc                 S      | S r1   r"   rm   r"   r"   r#   r        )initial_valuer   
isinstancer   r   r*   hasattrrm   rD  r"   r#   ol_bar  s   
zGTestTypedDictInitialValues.test_homogeneous_and_literal.<locals>.ol_barc                        dddd}  |  d S )Nr   r'   r?   rp  r"   r  r  r"   r#   r$     s   zDTestTypedDictInitialValues.test_homogeneous_and_literal.<locals>.foor   r   r,   rF  r$   r"   r  r,   r#   test_homogeneous_and_literal  s   
z7TestTypedDictInitialValues.test_homogeneous_and_literalc                    r<  )Nc                 S   r=  r1   r"   rm   r"   r"   r#   r    r>  zVTestTypedDictInitialValues.test_heterogeneous_but_castable_to_homogeneous.<locals>.barc                    s:     t| tj  | jd   t| dd dd S )Nr@  Fc                 S   rA  r1   r"   rm   r"   r"   r#   r    rB  zkTestTypedDictInitialValues.test_heterogeneous_but_castable_to_homogeneous.<locals>.ol_bar.<locals>.<lambda>)r   rD  r   r   r*   rC  rE  rm   rD  r"   r#   rF    s   zYTestTypedDictInitialValues.test_heterogeneous_but_castable_to_homogeneous.<locals>.ol_barc                     rG  )Nr   r'   r?   rp  r"   r  r  r"   r#   r$        zVTestTypedDictInitialValues.test_heterogeneous_but_castable_to_homogeneous.<locals>.foorH  rI  r"   rJ  r#   .test_heterogeneous_but_castable_to_homogeneous  s   
zITestTypedDictInitialValues.test_heterogeneous_but_castable_to_homogeneousc                    r<  )Nc                 S   r=  r1   r"   rm   r"   r"   r#   r    r>  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?   rp  c                 S   s   t | r
t | S t| S r1   )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   rO  )r   r   r   rQ  r"   r#   r'    s     zqTestTypedDictInitialValues.test_heterogeneous_but_not_castable_to_homogeneous.<locals>.ol_bar.<locals>.<dictcomp>rC  Fc                 S   rA  r1   r"   rm   r"   r"   r#   r    rB  zoTestTypedDictInitialValues.test_heterogeneous_but_not_castable_to_homogeneous.<locals>.ol_bar.<locals>.<lambda>)rv   r   rD  r   LiteralStrKeyDictr*   r@  rE  )r    r   r   rD  rR  r#   rF    s   z]TestTypedDictInitialValues.test_heterogeneous_but_not_castable_to_homogeneous.<locals>.ol_barc                     rG  )Nr   rN  r?   rp  r"   r  r  r"   r#   r$     rL  zZTestTypedDictInitialValues.test_heterogeneous_but_not_castable_to_homogeneous.<locals>.foorH  rI  r"   rJ  r#   2test_heterogeneous_but_not_castable_to_homogeneous  s   
zMTestTypedDictInitialValues.test_heterogeneous_but_not_castable_to_homogeneousc                    r<  )Nc                 S   r=  r1   r"   rm   r"   r"   r#   r    r>  zATestTypedDictInitialValues.test_mutation_not_carried.<locals>.barc                    sB   | j d u r	dd S  t| tj  | j dddd dd S )Nc                 S   rt  r1   r?  rm   r"   r"   r#   r    r  zVTestTypedDictInitialValues.test_mutation_not_carried.<locals>.ol_bar.<locals>.<lambda>r   r'   r?   rp  c                 S   rA  r1   r"   rm   r"   r"   r#   r    rB  )rC  r   rD  r   r   r*   rm   rD  r"   r#   rF    s
   
zDTestTypedDictInitialValues.test_mutation_not_carried.<locals>.ol_barc                     s    dddd} d| d<  |  d S Nr   r'   r?   rp  rP   r    r"   r  r  r"   r#   r$     s   zATestTypedDictInitialValues.test_mutation_not_carried.<locals>.foorH  rI  r"   rJ  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 ]2\}t dd d	d
  t fdd}t  fdd}|  jd d }| |j| qd S )Nc                  W   r=  r1   r"   )r  r"   r"   r#   nop     zQTestTypedDictInitialValues.test_mutation_not_carried_single_function.<locals>.nopr   r'   r?   rp  c                 S   r=  r1   r"   r  r"   r"   r#   baz  rX  zQTestTypedDictInitialValues.test_mutation_not_carried_single_function.<locals>.bazc                 S   r=  r1   r"   rP  r"   r"   r#   r    r>  zQTestTypedDictInitialValues.test_mutation_not_carried_single_function.<locals>.barc                    s    fdd}|S )Nc                    s   |   |  d S r1   r"   rP  rY  fnr"   r#   impl
  r  zbTestTypedDictInitialValues.test_mutation_not_carried_single_function.<locals>.ol_bar.<locals>.implr"   )r   r\  rZ  r"   r#   rF    s   zTTestTypedDictInitialValues.test_mutation_not_carried_single_function.<locals>.ol_barc                     s    dddd}  |  d| d< | S rU  r"   r  r  r"   r#   r$     s   zQTestTypedDictInitialValues.test_mutation_not_carried_single_function.<locals>.foor   )r   r   r   Z
signaturesr*   rC  )r,   rW  ZivrF  r$   Zlargr"   )r  rY  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}|S  | }|S )Nr?   rP   r"   r&  r  r"   r#   r$   %  s
   zGTestTypedDictInitialValues.test_unify_across_function_call.<locals>.foorP   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)
r3  r4  r5  r/  rK  rM  rT  rV  r]  ra  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      t dd }| | d d S )Nc                  S   s"   dddd} | d | d | d fS )Nr   rN  r    rp  r   r   r   r"   ldr"   r"   r#   r$   9  r  zCTestLiteralStrKeyDict.test_basic_const_lowering_boxing.<locals>.foo)r   rN  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 )
Nr7   r'   TFr   rN  r    )r   r   r   	non_constrg  r"   )r   r   r  re  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 )Nr7   c                 S   r=  r1   r"   r  r"   r"   r#   r  Q  r>  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   rN  r   r    r7   c                 S   r=  r1   r"   r  r"   r"   r#   r\  \  r>  zOTestLiteralStrKeyDict.test_basic_nonconst_freevar.<locals>.ol_bar.<locals>.implr*   r@  r   rO  r   r   r\  rD  r"   r#   rF  T  s   zATestLiteralStrKeyDict.test_basic_nonconst_freevar.<locals>.ol_barc                     s   dddd}  |  d S )Nr   rN  r    r   r   r   r    r"   rd  )r  r  r"   r#   r$   `     z>TestLiteralStrKeyDict.test_basic_nonconst_freevar.<locals>.foorH  rI  r"   )r  r  r,   r#   test_basic_nonconst_freevarN  s   
z1TestLiteralStrKeyDict.test_basic_nonconst_freevarc                    r<  )Nc                 S   r=  r1   r"   r  r"   r"   r#   r  i  r>  z5TestLiteralStrKeyDict.test_literal_value.<locals>.barc                    H     | jtdtdtdtdtdtdi dd }|S )	Nr   r   r   rN  r   r    c                 S   r=  r1   r"   r  r"   r"   r#   r\  s  r>  zFTestLiteralStrKeyDict.test_literal_value.<locals>.ol_bar.<locals>.implrk  rl  rD  r"   r#   rF  l  s   z8TestLiteralStrKeyDict.test_literal_value.<locals>.ol_barc                     rG  Nr   rN  r    rp  r"   rd  r  r"   r#   r$   w  r   z5TestLiteralStrKeyDict.test_literal_value.<locals>.foorH  rI  r"   rJ  r#   test_literal_valueg  s   

z(TestLiteralStrKeyDict.test_literal_valuec                    r<  )Nc                 S   r=  r1   r"   r  r"   r"   r#   r    r>  z?TestLiteralStrKeyDict.test_list_and_array_as_value.<locals>.barc                    sX     | jtdtdtdtjtjg ddtdttdi dd	 }|S )
Nr   r   r   rI   )rC  r   r7   c                 S   r=  r1   r"   r  r"   r"   r#   r\    r>  zPTestLiteralStrKeyDict.test_list_and_array_as_value.<locals>.ol_bar.<locals>.impl)	r*   r@  r   rO  r   r  r   r   zerosrl  rD  r"   r#   rF    s   zBTestLiteralStrKeyDict.test_list_and_array_as_value.<locals>.ol_barc                     s&   g d} d| t dd} | d S )NrI   r   r7   rp  r   rs  )r   re  r  r"   r#   r$     s   z?TestLiteralStrKeyDict.test_list_and_array_as_value.<locals>.foorH  rI  r"   rJ  r#   test_list_and_array_as_value~  s   
z2TestLiteralStrKeyDict.test_list_and_array_as_valuec                    r<  )Nc                 S   r=  r1   r"   r  r"   r"   r#   r    r>  zBTestLiteralStrKeyDict.test_repeated_key_literal_value.<locals>.barc                    rp  )	Nr   aaaar   rN  r   r    c                 S   r=  r1   r"   r  r"   r"   r#   r\    r>  zSTestLiteralStrKeyDict.test_repeated_key_literal_value.<locals>.ol_bar.<locals>.implrk  rl  rD  r"   r#   rF    s   zETestLiteralStrKeyDict.test_repeated_key_literal_value.<locals>.ol_barc                     s   dddddd}  |  d S )Nr   r9   rN  r    rv  )r   r   r   r   r   r"   rd  r  r"   r#   r$     s   zBTestLiteralStrKeyDict.test_repeated_key_literal_value.<locals>.foorH  rI  r"   rJ  r#   test_repeated_key_literal_value  s   
z5TestLiteralStrKeyDict.test_repeated_key_literal_valuec              	   C   sz   dd }dd }dd }dd }||||f}|D ]"}|  |j | t| |  W d    n1 s5w   Y  qd S )	Nc                  S   s   dddd} t | S rq  )r/   rd  r"   r"   r#   _len     z2TestLiteralStrKeyDict.test_read_only.<locals>._lenc                  S   s   dddd} | d S )Nr   rN  r    rp  r   r"   rd  r"   r"   r#   static_getitem  ry  z<TestLiteralStrKeyDict.test_read_only.<locals>.static_getitemc                  S   s   dddd} d| v d| v fS )Nr   rN  r    rp  r   r  r"   rd  r"   r"   r#   contains     z6TestLiteralStrKeyDict.test_read_only.<locals>.containsc                  S   s   dddd} |   }| |kS rq  )r   )re  newr"   r"   r#   r     s   z2TestLiteralStrKeyDict.test_read_only.<locals>.copy)subTestr3  r   r   )r,   rx  rz  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 ]=}|  |j- | t}	t|  W d    n1 s@w   Y  d}
| |
t|	j W d    n1 sZw   Y  q"d S )Nc                  S   s   dddd} d| d< d S )Nr   rN  r    rp  r  r   r"   rd  r"   r"   r#   setitem     z<TestLiteralStrKeyDict.test_mutation_failure.<locals>.setitemc                  S   s   dddd} | d= d S )Nr   rN  r    rp  r   r"   rd  r"   r"   r#   delitem  s   
z<TestLiteralStrKeyDict.test_mutation_failure.<locals>.delitemc                  S      dddd} |    d S rq  )rX   rd  r"   r"   r#   rX     r  z<TestLiteralStrKeyDict.test_mutation_failure.<locals>.popitemc                  S   r  rq  )rj   rd  r"   r"   r#   rj     r  z8TestLiteralStrKeyDict.test_mutation_failure.<locals>.popc                  S   r  rq  )rt   rd  r"   r"   r#   rt     r  z:TestLiteralStrKeyDict.test_mutation_failure.<locals>.clearc                  S   s   dddd} |  dd d S )Nr   rN  r    rp  r  )r   rd  r"   r"   r#   r     r|  z?TestLiteralStrKeyDict.test_mutation_failure.<locals>.setdefault"Cannot mutate a literal dictionary)r~  r3  rg   r   r   r   r   r   )r,   r  r  rX   rj   rt   r   Zillegalsr  r   rR  r"   r"   r#   test_mutation_failure  s"   z+TestLiteralStrKeyDict.test_mutation_failurec              
   C   s   t dd }t dd }||fD ]<}| |j, | t}|d W d    n1 s-w   Y  d}| |t|j W d    n1 sGw   Y  qd S )Nc                 S   s   ddd}| | S NrN  r    r   r   )r3   r   re  r"   r"   r#   r3     s   

z+TestLiteralStrKeyDict.test_get.<locals>.getc                 S   s   ddd}||  S r  r"   r  r"   r"   r#   getitem     
z/TestLiteralStrKeyDict.test_get.<locals>.getitemr   z*Cannot get{item}() on a literal dictionary)r   r~  r3  rg   r   r   r   r   )r,   r3   r  r  r   rR  r"   r"   r#   test_get  s   


zTestLiteralStrKeyDict.test_getc                 C   r  )Nc                  S   s   ddd} dd |   D S )NrN  r    r  c                 S   r   r"   r"   r   r"   r"   r#   r   	  r   zETestLiteralStrKeyDict.test_dict_keys.<locals>.foo.<locals>.<listcomp>)rD   rd  r"   r"   r#   r$    	  s   
z1TestLiteralStrKeyDict.test_dict_keys.<locals>.foor   r   r)   r+   r"   r"   r#   r}        
z$TestLiteralStrKeyDict.test_dict_keysc                 C   rc  )Nc                  S   s   ddd} |   S r  )r   rd  r"   r"   r#   r$   		  r  z3TestLiteralStrKeyDict.test_dict_values.<locals>.foo)rN  r    r)   r+   r"   r"   r#   r   	  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 )NrN  r    r7   )r   r   r  )r   rs  rv   rd  r"   r"   r#   r$   	     z2TestLiteralStrKeyDict.test_dict_items.<locals>.foo)r   rN  )r   r    r  r7   )r   r   r   rs  r+   r"   r"   r#   r{   	  s
   
z%TestLiteralStrKeyDict.test_dict_itemsc                 C   r  )Nc                  S   s   ddd} | S r  r"   rd  r"   r"   r#   r$   	  s   
z3TestLiteralStrKeyDict.test_dict_return.<locals>.fooz#cannot convert native LiteralStrKey)r   rg   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}|d	 S ddt dd}|d	 S )
N   rP   rN  r    r   r   r                @CATr7   r   rt  )r   r   r"   r"   r#   r$   (	  s
   z2TestLiteralStrKeyDict.test_dict_unify.<locals>.foor(   r    ri  r  r  r+   r"   r"   r#   test_dict_unify'	  s   
z%TestLiteralStrKeyDict.test_dict_unifyc                 C   s   t dd }| t}|d W d    n1 sw   Y  | dt|j t dd }| t}|d W d    n1 sBw   Y  | 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 )Nr  rP   rN  r    )ZBAD_KEYr   r  r  r  r  r  r   r'   r?   r   rt  r   r   Zpy310_defeat1Zpy310_defeat2Zpy310_defeat3Zpy310_defeat4r"   r"   r#   key_mismatch8	     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 )Nr  rP   rN  r    )rP   r?   r  r  r  r  r   r'   r?   r   rt  r  r"   r"   r#   value_type_mismatchJ	  r  zFTestLiteralStrKeyDict.test_dict_not_unify.<locals>.value_type_mismatchr   )r,   r  r   r  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}|  qBd S )Nc                 S   r=  r1   r"   r  r"   r"   r#   r  p	  r>  z;TestLiteralStrKeyDict.test_dict_value_coercion.<locals>.barc                    s    t|   dd }|S )Nc                 S   r=  r1   r"   r  r"   r"   r#   r\  x	  r>  zLTestLiteralStrKeyDict.test_dict_value_coercion.<locals>.ol_bar.<locals>.impl)r   rD  rl  )	containerr,   r"   r#   rF  t	  s   z>TestLiteralStrKeyDict.test_dict_value_coercion.<locals>.ol_barc                     s   ddd}  |  d S )Nr   r'   rr  r"   rm   )r  ty1ty2r"   r#   r$   ~	  s   z;TestLiteralStrKeyDict.test_dict_value_coercion.<locals>.foo)r   r   r   r   rC  rA  rS  r   r   r   rv   r   r   )r,   pdtsrF  r$   r"   )r  r  r,   r  r  r#   test_dict_value_coercion\	  s$   z.TestLiteralStrKeyDict.test_dict_value_coercionc                    s2   dd  t  dd }t fdd}|  d S )Nc                 S   r=  r1   r"   r  r"   r"   r#   r  	  r>  z9TestLiteralStrKeyDict.test_build_map_op_code.<locals>.barc                 S   s   dd }|S )Nc                 S   r=  r1   r"   r  r"   r"   r#   r\  	  r>  zJTestLiteralStrKeyDict.test_build_map_op_code.<locals>.ol_bar.<locals>.implr"   rl  r"   r"   r#   rF  	  s   z<TestLiteralStrKeyDict.test_build_map_op_code.<locals>.ol_barc                     s   ddddi}  |  d S )Nr   r9   string)b1b2r"   r  r  r"   r#   r$   	  rn  z9TestLiteralStrKeyDict.test_build_map_op_code.<locals>.foorH  rI  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 ur| d d d   d7  < d S d S )Nr    r9   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   rN  r  r?   rm  r  r    rt  )r   r   r   r    r  r  r"   r#   r$   	  s   

z3TestLiteralStrKeyDict.test_dict_as_arg.<locals>.foor?   r9   r1   )r   r   testingZassert_allcloseonesr+   r"   r  r#   test_dict_as_arg	  s
   	z&TestLiteralStrKeyDict.test_dict_as_argc                 C   r
  )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   r7   r"   rP  r"   r"   r#   r$   	  s   zJTestLiteralStrKeyDict.test_dict_with_single_literallist_value.<locals>.foor   r   re   r+   r"   r"   r#   'test_dict_with_single_literallist_value	  r  z=TestLiteralStrKeyDict.test_dict_with_single_literallist_valuec                    r<  )Nc                 S   r=  r1   r"   r  r"   r"   r#   r  	  r>  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  	  rB  zMTestLiteralStrKeyDict.test_tuple_not_in_mro.<locals>.ol_bar.<locals>.<lambda>)r   rD  r   Z	BaseTupler   rS  r  rD  r"   r#   rF  	  s   z;TestLiteralStrKeyDict.test_tuple_not_in_mro.<locals>.ol_barc                     s   ddd}  |  d S )Nr   r   rr  r"   rm   r  r"   r#   r$   	  s   
z8TestLiteralStrKeyDict.test_tuple_not_in_mro.<locals>.foorH  rI  r"   rJ  r#   test_tuple_not_in_mro	  s   
z+TestLiteralStrKeyDict.test_tuple_not_in_mroc                 C   r   )Nc                  S   s   ddt dd} | d S )NrN  r    rP   )Znot_ar   r  r   rt  r  r"   r"   r#   r$   	  r  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      t ddd} t| S )Nr7   rP   )rN   1r   r  r/   rm   r"   r"   r#   r$   	  r  z<TestLiteralStrKeyDict.test_uncommon_identifiers.<locals>.fooc                  S   r  )Nr7   rP   )+zx--r  rm   r"   r"   r#   r  	  r  z<TestLiteralStrKeyDict.test_uncommon_identifiers.<locals>.barr  )r,   r$   r  r"   r"   r#   test_uncommon_identifiers	  s   

z/TestLiteralStrKeyDict.test_uncommon_identifiersc                 C   r   )Nc                  S   s   dddd} |  ddi | S )Nr'   rP   r   rp  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)r3  r4  r5  r/  rf  rj  ro  rr  ru  rw  r  r  r  r}   r   r{   r  r  r  r  r  r  r  r  r  r  r  r"   r"   r"   r#   rb  5  s2    #			&)	rb  __main__)5r/  r6  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   r9  rJ  rh  r  r  r  r  r  r  r  objectr!  r$  r)  r0  r;  rb  r3  mainr"   r"   r"   r#   <module>   s`            	jI! \" p:    N