U
    iâËd§  ã                   @   s|   d dl Zd dlmZ d dlmZ d dlZd dlmZm	Z	 dd„ Z
dd„ ZG d	d
„ d
eƒZG dd„ deƒZedkrxe ¡  dS )é    N)Únjit)ÚTypingError)ÚTestCaseÚforce_pyobj_flagsc                   C   s
   dddœS )Né   é   )r   é   © r	   r	   r	   úO/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/tests/test_dicts.pyÚ	build_map   s    r   c                  C   s   t } d| | diS )Nr   r   )r   )Úxr	   r	   r
   Úbuild_map_from_local_vars   s    r   c                   @   s$   e Zd Zefdd„Zefdd„ZdS )ÚDictTestCasec                 C   s   | j t|d� d S ©N)Úflags)Úrun_nullary_funcr   ©Úselfr   r	   r	   r
   Útest_build_map   s    zDictTestCase.test_build_mapc                 C   s   | j t|d� d S r   )r   r   r   r	   r	   r
   Útest_build_map_from_local_vars   s    z+DictTestCase.test_build_map_from_local_varsN)Ú__name__Ú
__module__Ú__qualname__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S )ÚTestCompiledDictzSTesting `dict()` and `{}` usage that are redirected to
    `numba.typed.Dict`.
    c                 C   s&   t dd„ ƒ}|ƒ }|  |ddi¡ d S )Nc                  S   s   t ƒ } d| d< | S ©Nr   r   ©Údict©Údr	   r	   r
   Úfoo    s    z+TestCompiledDict.test_use_dict.<locals>.foor   r   ©r   ÚassertEqual©r   r   r   r	   r	   r
   Útest_use_dict   s    
zTestCompiledDict.test_use_dictc                 C   sž   t dd„ ƒ}t dd„ ƒ}dddgdd	d
gft d¡t d¡fdddgdfddddgdff}|D ](\}}|||ƒ}|  |tt||ƒƒ¡ q^|  |ƒ | ¡ ¡ d S )Nc                 S   s   t t| |ƒƒ}|S )N)r   Úzip)ÚaÚbr   r	   r	   r
   Údict_iterable_1+   s    zETestCompiledDict.test_use_dict_iterable_args.<locals>.dict_iterable_1c                   S   s   t dddgƒS )N)Zsapei+  )Zguidoi  )Zjacki  r   r	   r	   r	   r
   Údict_iterable_20   s    zETestCompiledDict.test_use_dict_iterable_args.<locals>.dict_iterable_2r   r   r   é   é   é   Úabc)r   ÚnpZaranger!   r   r$   Úpy_func)r   r'   r(   Zinpsr%   r&   r   r	   r	   r
   Útest_use_dict_iterable_args)   s    

ü
z,TestCompiledDict.test_use_dict_iterable_argsc                 C   s.   t dd„ ƒ}tddiƒ}|ƒ }|  ||¡ d S )Nc                   S   s   t dƒS )N)©r   r   r0   r   r	   r	   r	   r
   ÚctorB   s    z7TestCompiledDict.test_ctor_iterable_tuple.<locals>.ctorr   r   )r   r   ZassertEquals)r   r1   ÚexpectedÚgotr	   r	   r
   Útest_ctor_iterable_tupleA   s
    
z)TestCompiledDict.test_ctor_iterable_tuplec              
   C   s®   ddl m} tdd„ ƒ}tdd„ ƒ}tdd„ ƒ}td	d
„ ƒ}d}d}d}|t|f|t|f|t|f|t|fg}	|	D ]8\}
}}|  |¡�}|
ƒ  W 5 Q R X |  |t|jƒ¡ qpd S )Nr   )Ú_message_dict_supportc                  S   s   t ƒ } d| d< t | ƒS r   r   r   r	   r	   r
   Úctor1N   s    z;TestCompiledDict.test_unsupported_dict_usage.<locals>.ctor1c                   S   s   t dƒS )N)r0   )r   r%   r   r	   r	   r	   r
   Úctor2T   s    z;TestCompiledDict.test_unsupported_dict_usage.<locals>.ctor2c                   S   s   t dƒS )N))r%   r&   Úc)r   ÚeÚfr   r	   r	   r	   r
   Úctor3X   s    z;TestCompiledDict.test_unsupported_dict_usage.<locals>.ctor3c                   S   s   t i dfi dffƒS ©Nr   r   r   r	   r	   r	   r
   Úctor4\   s    z;TestCompiledDict.test_unsupported_dict_usage.<locals>.ctor4z(Non-iterable args used in dict(iterable)z0dictionary update sequence element has length 3;zUnhashable type)Znumba.core.typing.dictdeclr5   r   r   ÚassertRaisesÚassertInÚstrÚ	exception)r   r5   r6   r7   r;   r=   Z_non_iter_argsZ_dict_upd_item_lenZ_unhashable_typeÚinputsÚfuncÚexcÚmsgÚraisesr	   r	   r
   Útest_unsupported_dict_usageJ   s*    



üz,TestCompiledDict.test_unsupported_dict_usagec                 C   s&   t dd„ ƒ}|ƒ }|  |ddi¡ d S )Nc                  S   s   i } d| d< | S r   r	   r   r	   r	   r
   r   s   s    z2TestCompiledDict.test_use_curlybraces.<locals>.foor   r   r    r"   r	   r	   r
   Útest_use_curlybracesq   s    
z%TestCompiledDict.test_use_curlybracesc                 C   s&   t dd„ ƒ}|ƒ }|  |ddi¡ d S )Nc                   S   s   ddiS r<   r	   r	   r	   r	   r
   r   ~   s    z=TestCompiledDict.test_use_curlybraces_with_init1.<locals>.foor   r   r    r"   r	   r	   r
   Útest_use_curlybraces_with_init1|   s    
z0TestCompiledDict.test_use_curlybraces_with_init1c                 C   s*   t dd„ ƒ}|ƒ }|  |ddddœ¡ d S )Nc                   S   s   ddddœS )Nçš™™™™™@çš™™™™™@çffffff@©r   r   r*   r	   r	   r	   r	   r
   r   ‡   s    z@TestCompiledDict.test_use_curlybraces_with_initmany.<locals>.foorJ   rK   rL   rM   r    r"   r	   r	   r
   Ú"test_use_curlybraces_with_initmany…   s    
z3TestCompiledDict.test_use_curlybraces_with_initmanyc                 C   s"   t dd„ ƒ}|  |ƒ | ¡ ¡ d S )Nc                   S   s   ddddœS )NrJ   r)   r+   rM   r	   r	   r	   r	   r
   r   �   s    zATestCompiledDict.test_curlybraces_init_with_coercion.<locals>.foo©r   r!   r.   ©r   r   r	   r	   r
   Ú#test_curlybraces_init_with_coercionŽ   s    
z4TestCompiledDict.test_curlybraces_init_with_coercionc                 C   s2   t dd„ ƒ}d\}}|  |||ƒ| ||¡¡ d S )Nc                 S   s   | d|| | iS ©Nr   r	   )r   Úyr	   r	   r
   r   ˜   s    z?TestCompiledDict.test_use_curlybraces_with_manyvar.<locals>.foo)é
   é   rO   )r   r   r   rS   r	   r	   r
   Ú!test_use_curlybraces_with_manyvar–   s    
z2TestCompiledDict.test_use_curlybraces_with_manyvarc                 C   s"   t dd„ ƒ}|  |ƒ | ¡ ¡ d S )Nc                  S   s"   t ƒ } ddi| d< ddi| d< | S )Nr   r   r)   r   r   ©Úkr	   r	   r
   r   ¡   s    z=TestCompiledDict.test_mixed_curlybraces_and_dict.<locals>.foorO   rP   r	   r	   r
   Útest_mixed_curlybraces_and_dictŸ   s    
z0TestCompiledDict.test_mixed_curlybraces_and_dictc              	   C   s>   t dd„ ƒ}|  t¡�}|ƒ  W 5 Q R X |  dt|jƒ¡ d S )Nc                  S   s   dd i} | S rR   r	   rW   r	   r	   r
   r   ¬   s    z;TestCompiledDict.test_dict_use_with_none_value.<locals>.fooz&Dict.value_type cannot be of type none©r   r>   r   r?   r@   rA   ©r   r   rF   r	   r	   r
   Útest_dict_use_with_none_valueª   s    
þz.TestCompiledDict.test_dict_use_with_none_valuec              	   C   s@   t dd„ ƒ}|  t¡�}|dƒ W 5 Q R X |  dt|jƒ¡ d S )Nc                 S   s   | rdnd }d|i}|S ©Ng      @r   r	   )ÚchoiceÚoptionalrX   r	   r	   r
   r   »   s    z?TestCompiledDict.test_dict_use_with_optional_value.<locals>.fooTz7Dict.value_type cannot be of type OptionalType(float64)rZ   r[   r	   r	   r
   Ú!test_dict_use_with_optional_value¹   s    
þz2TestCompiledDict.test_dict_use_with_optional_valuec              	   C   s@   t dd„ ƒ}|  t¡�}|dƒ W 5 Q R X |  dt|jƒ¡ d S )Nc                 S   s   | rdnd di}|S r]   r	   )r^   rX   r	   r	   r
   r   Ê   s    z=TestCompiledDict.test_dict_use_with_optional_key.<locals>.fooTz5Dict.key_type cannot be of type OptionalType(float64)rZ   r[   r	   r	   r
   Útest_dict_use_with_optional_keyÈ   s    
þz0TestCompiledDict.test_dict_use_with_optional_keyc              	   C   s>   t dd„ ƒ}|  t¡�}|ƒ  W 5 Q R X |  dt|jƒ¡ d S )Nc                  S   s   d di} | S rR   r	   rW   r	   r	   r
   r   Ø   s    z9TestCompiledDict.test_dict_use_with_none_key.<locals>.fooz$Dict.key_type cannot be of type nonerZ   r[   r	   r	   r
   Útest_dict_use_with_none_keyÖ   s    
þz,TestCompiledDict.test_dict_use_with_none_keyN)r   r   r   Ú__doc__r#   r/   r4   rG   rH   rI   rN   rQ   rV   rY   r\   r`   ra   rb   r	   r	   r	   r
   r      s   	'			r   Ú__main__)Únumpyr-   Znumbar   Znumba.core.errorsr   ZunittestZnumba.tests.supportr   r   r   r   r   r   r   Úmainr	   r	   r	   r
   Ú<module>   s   	 K