o
    8ήcw                     @   s  d Z ddlmZ ddlZddlZddlZddlZddlZddlZ	ddl
mZmZmZmZ ddlmZ ddlmZ ddlmZ ddlmZmZmZ dd	lmZmZmZmZmZmZ dd
l m!Z!m"Z" ddl#m$Z$m%Z%m&Z& ddl'Z'ddl(m)Z) zddl*Z+W n e,y   ddl+Z+Y nw eddZ-eddZ.dd Z/G dd de0Z1G dd de!Z2G dd de!Z3G dd de!Z4G dd de!Z5G dd de!Z6G dd  d e'j!Z7G d!d" d"e!Z8G d#d$ d$e!Z9G d%d& d&e!Z:e;d'kre'<  dS dS )(z
Tests for numba.types.
    )
namedtupleN)typestypingerrorssigutils)
_typecache)_header_lead)make_overload_template)jitnjittypeof)overloadregister_modelmodelsunboxNativeValuetypeof_impl)TestCasecreate_temp_module)ColorShakeShape)numpy_supportPoint)xyRect)widthheightc                 c   s    | d V  d S N    r   r!   r!   =/tmp/pip-target-vg8gfxp4/lib/python/numba/tests/test_types.pygen'   s   r$   c                   @      e Zd ZdS )DummyN__name__
__module____qualname__r!   r!   r!   r#   r&   +       r&   c                   @   sT   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S )	TestTypesc                 C   s  |  tjtj |  tjtj |  tjtj |  tjtj | tjtj | 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 }ttjtj}ttjtj}tj||d}tj||d}| || tj||d}tj||dd}| || tj||d}tj|t d}| || G dd dt}t|tj}G dd dt}t|tj}| || | ttjttj |  ttjttj | ttjdttjd d S )	N)sigget_pointerstdcall)r-   r.   cconvc                   @      e Zd ZdZdS ).TestTypes.test_equality.<locals>.DummyTemplatefooNr(   r)   r*   keyr!   r!   r!   r#   DummyTemplateR       r6   c                   @   r1   )r2   barNr4   r!   r!   r!   r#   r6   V   r7   r   r    )assertEqualr   int32uint32	complex64float32assertNotEqualint64float64
complex128uint64r   	signatureintpvoidptrExternalFunctionPointerobjectBoundFunctionDTypeCPointer)selfr.   sig_asig_babr6   r!   r!   r#   test_equality1   sJ   
zTestTypes.test_equalityc                 C   s<  t  }t  }t|}t|}t|}| |j| | |j| | |j| | ||k | ||k | ||k | ||k tj}| ||k | ||k | ||k | ||k | ||k | ||k t|||g}| 	t
|d | || | || | || d  }}t  | t |j W d    n1 sw   Y  | t |j W d    n1 sw   Y  | t |j W d    n1 sw   Y  | ||k | ||k | ||k | ||k | ||k | ||k | ||k | ||k d S N   )r&   r   
DispatcherassertIs
dispatcher
assertTrueassertFalseint8setr9   lenassertIngccollectassertRaisesReferenceError)rK   derN   rO   czsr!   r!   r#   test_weaktypef   sV   


zTestTypes.test_weaktypec                 C   s   t d}|j}t d}| || t|}~t  t d}| || | |j| ~~t  | | d  t d}| 	|j| d S )Nxyzzyx)
r   r&   _coderT   weakrefrefr\   r]   r9   r>   )rK   rN   coderO   wrrb   r`   r!   r!   r#   test_interning   s   




zTestTypes.test_interningc                 C   sj   t }t  dd |D }t|}td}td}| t||d  ~~t  | t|| d S )Nc                 S   s   g | ]}| qS r!   r!   ).0rk   r!   r!   r#   
<listcomp>   s    z1TestTypes.test_cache_trimming.<locals>.<listcomp>rf   fooxrR   )r   r\   r]   rZ   r   r&   r9   )rK   cacheexisting_types	cache_lenrN   rO   r!   r!   r#   test_cache_trimming   s   

zTestTypes.test_cache_trimmingc                    s   fdd}fdd}t j | d d   dd | d d d  dd | d d d d f  dd | d d d d df  dd | d d dd d f  dd	 | fd
d | fdd | fdd | fdd | fdd d S )Nc                    .     | j|  | j|  | j| d S NrT   dtyper9   ndimlayoutarrtyscalarrx   ry   rK   r!   r#   check      z,TestTypes.test_array_notation.<locals>.checkc                    sF     t}|   W d    n1 sw   Y   dt|j d S )NzACan only index numba types with slices with no start or stop, got)r^   KeyErrorr[   str	exception)callableraisesr}   r!   r#   check_index_error   s   z8TestTypes.test_array_notation.<locals>.check_index_errorr    ACrR   Fc                      s    d S Nr   r!   r!   r|   r!   r#   <lambda>       z/TestTypes.test_array_notation.<locals>.<lambda>c                      s    d d df S )N   r!   r!   r   r!   r#   r          c                      s    d d ddd f S r   r!   r!   r   r!   r#   r      s    c                      s    d d S rQ   r!   r!   r   r!   r#   r      s    c                      s   t  S ru   )listr!   r   r!   r#   r      r   )r   r:   )rK   r~   r   r!   )r|   rK   r#   test_array_notation   s     zTestTypes.test_array_notationc                    s    fdd}t j}t |}||d d  |dd ||d d d |dd ||d d d d f |dd ||d d d d df |dd ||d d dd d f |dd d S )Nc                    rt   ru   rv   rz   r}   r!   r#   r~      r   z6TestTypes.test_array_notation_for_dtype.<locals>.checkr    r   r   rR   r   )r   r:   rI   )rK   r~   r|   dtypedr!   r}   r#   test_array_notation_for_dtype   s   
 $z'TestTypes.test_array_notation_for_dtypec                 C   s"  t j}t j}| | t| | ||t|| | |||t||| | |dd | |dd t d}| |dt	dd | |dt	dd t 
d}| |d	td	d | |dtdd t 
d
}| |d	td	 | |dtd d S )Ng     @E@*   g      Y1900NaTrd       )r   r:   doubler9   r   rC   assertPreciseEqual
NPDatetimenp
datetime64NPTimedeltatimedelta64)rK   ir`   tyr!   r!   r#   test_call_notation   s    


zTestTypes.test_call_notationc                 C   sT   t jt t jddfD ]}t |}| t|t j | t|d t| qd S )Nr    r   r   )r   r?   Arrayr@   ListrV   
isinstancetype)rK   listtyl_intr!   r!   r#   test_list_type_getitem   s
   
z TestTypes.test_list_type_getitemc                 C   s   dd }dd }dd }t ||i dd}t ||i dd}| t}t||f W d    n1 s3w   Y  | d	t|j d S )
Nc                   S      d S ru   r!   r!   r!   r!   r#   	func_stub      zATestTypes.test_function_incompatible_templates.<locals>.func_stubc                   S   r   ru   r!   r!   r!   r!   r#   
func_stub2   r   zBTestTypes.test_function_incompatible_templates.<locals>.func_stub2c                   S   r   ru   r!   r!   r!   r!   r#   ol   r   z:TestTypes.test_function_incompatible_templates.<locals>.olTneverzincompatible templates:)r	   r^   
ValueErrorr   Functionr[   r   r   )rK   r   r   r   	template1	template2r   r!   r!   r#   $test_function_incompatible_templates   s   z.TestTypes.test_function_incompatible_templatesN)r(   r)   r*   rP   re   rl   rs   r   r   r   r   r   r!   r!   r!   r#   r,   /   s    5.r,   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )TestNumbersz!
    Tests for number types.
    c                 C   s    t jD ]
}| t|d qdS )z;
        All numeric types have bitwidth attribute
        bitwidthN)r   number_domainrV   hasattrrK   r   r!   r!   r#   test_bitwidth  s   
zTestNumbers.test_bitwidthc                 C   s   |  tjjd |  tjjd |  tjjd |  tjjd |  tjjd |  tjjd |  tjjd |  tjjd d S )N   i   r   l    l         l    )r9   r   rX   maxvalminvaluint8r?   rB   r}   r!   r!   r#   test_minval_maxval  s   zTestNumbers.test_minval_maxvalc                 C   s4   t jj}| |dt j | |dddt j d S )N       F)signed)r   Integerfrom_bitwidthrT   r:   r   )rK   fr!   r!   r#   test_from_bidwidth!  s   zTestNumbers.test_from_bidwidthc                    s   fdd}|t jt jt jt jg |t jt jt jt jg |t j	t j
g |t jt jg  t t jt jk W d    n1 sDw   Y   t t jt j	k W d    n1 s_w   Y   t t j
t jk W d    d S 1 s{w   Y  d S )Nc                    s   t t| D ]} | | | |   | | | |   | | | | k   | | | | k t |D ]V} | | | |   | | | |   | | | |   | | | |   | | | | k   | | | | k  | | | | k  | | | | k q6qd S ru   )rangerZ   assertLessEqualassertGreaterEqualrW   
assertLessassertGreater)valuesr   jr}   r!   r#   check_order'  s    z.TestNumbers.test_ordering.<locals>.check_order)r   rX   int16r:   r?   r   uint16r;   rB   r=   r@   r<   rA   r^   	TypeError)rK   r   r!   r}   r#   test_ordering&  s   "zTestNumbers.test_orderingN)r(   r)   r*   __doc__r   r   r   r   r!   r!   r!   r#   r     s    
r   c                   @      e Zd Zdd ZdS )
TestNdIterc                    s  d fdd	}t j}t j}t j}t |dd}t |dd}t |dd}t |dd}t |dd}	t |dd}
t |dd}t |	f}|||fddd	dddgfg  |j t |	|f}||||fddd	ddddgfg  |j t |	|f}||||fddd	dddgfd
dddgfg  |j t |f}|||fddddddgfg  |j t ||f}||||fdddddddgfg  |j t ||	|	|f}||||||fddddddgfd	ddddgfd
dddgfg  |j t ||
f}||||fddddddgfddddgfg  |j t |
f}|||fddddddgfg  |j t |f}|||fddddddgfg  |j t ||f}||||fddddddgfddddgfg  |j t |f}|||fddddddgfg  |j t |||||	f}|||||||fddddddgfdddg dfd	dddgfg  |j t ||||||
f}||||||||fddddddgfddddgfdddg dfddddgfg  |j t |f}|||fddddddgfg  |j t ||||
f}||||||fdddddddgfddddgfddddgfg  |j t |||||||	f}|||||||||fdddddg dfdddddgfddddgfd	dddgfg  |j d S )Nc                    s     | j|   | j|   | j| dd |D }t|dkr.  | jtj| n	  | j|d  |d urD  | j	| d S d S )Nc                 S   s   g | ]	}t |d dqS )r   r   )r   r   )rm   rw   r!   r!   r#   rn   K  s    z=TestNdIter.test_properties.<locals>.check.<locals>.<listcomp>r    r   )
r9   rx   ry   dtypesrZ   
yield_typer   	BaseTuple
from_typesindexers)r   r   rx   ry   r   viewsr}   r!   r#   r~   G  s   
z)TestNdIter.test_properties.<locals>.checkr    r   rR   r   r   r   0dr|   flat   indexed)r    rR   r   r   )rR   r   r   r   )r   r   r      ru   )	r   r=   r<   r   r   NumpyNdIterTyperW   need_shaped_indexingrV   )rK   r~   f32c64i16rN   rO   rb   r`   ra   r   gr   r!   r}   r#   test_propertiesF  s   "zTestNdIter.test_propertiesN)r(   r)   r*   r   r!   r!   r!   r#   r   D      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ejdd ZdS )TestPicklingz
    Pickling and unpickling should preserve type identity (singleton-ness)
    and the _code attribute.  This is only a requirement for types that
    can be part of function signatures.
    c                 c   s(    t j D ]}t|t jr|V  qdS )z5
        Yield all predefined type instances
        N)r   __dict__r   r   Typer   r!   r!   r#   predefined_types  s   zTestPickling.predefined_typesc                 C   s6   t j|dd}t |}| || | |jd d S )N)protocolr   )pickledumpsloadsrT   r   rg   )rK   origpickledr   r!   r!   r#   check_pickling  s   
zTestPickling.check_picklingc                 C   s2   t |  }| tj| |D ]}| | qd S ru   )r   r   r[   r   r   r   )rK   tysr   r!   r!   r#   test_predefined_types  s
   z"TestPickling.test_predefined_typesc                 C   s6   dD ]}t |}| | t |}| | qd S )N)Mms)r   r   r   r   )rK   unitr   r!   r!   r#   test_atomic_types  s   


zTestPickling.test_atomic_typesc                 C   s2   dD ]}dD ]}t t j||}| | qqd S )N)r   r    rR   )r   r   r   )r   r   r   r   )rK   rx   ry   r   r!   r!   r#   test_arrays  s   zTestPickling.test_arraysc                 C   sZ   t dt jfdt jfdt jfdt jdffg}t|}| | | t	
|dd d S )NrN   rO   rb   r`   r   r    r   )r   rw   r@   r:   r<   str_r   
from_dtyper   r   r   )rK   
recordtyper   r!   r!   r#   test_records  s   

zTestPickling.test_recordsc                 C      t t j}| | d S ru   )r   Optionalr:   r   r   r!   r!   r#   test_optional     zTestPickling.test_optionalc                 C   s6   t t jd}| | t t j|f}| | d S )Nr   )r   UniTupler:   r   TuplerK   ty1ty2r!   r!   r#   test_tuples  s   
zTestPickling.test_tuplesc                 C   s<   t t jdt}| | t t jt jft}| | d S rQ   )r   NamedUniTuplerD   r   r   
NamedTupler@   r  r!   r!   r#   test_namedtuples  s   
zTestPickling.test_namedtuplesc                 C   sL   t tt j}| | t tt j}| | t tt j}| | d S ru   )	r   
EnumMemberr   r:   r   r   r?   IntEnumMemberr   )rK   r	  r
  ty3r!   r!   r#   
test_enums  s   

zTestPickling.test_enumsc                 C   r  ru   )r   r   r:   r   r   r!   r!   r#   
test_lists  r  zTestPickling.test_listsc                 C   s@   t dddt}t|j}|d j}| |tj | | d S )Nz(int32,)Tnopythonr   )	r
   r$   r   nopython_signaturesreturn_typeassertIsInstancer   	Generatorr   )rK   cfuncsigsr   r!   r!   r#   test_generator  s
   

zTestPickling.test_generatorc                 C   sP   ddl m} ddlm}m} ||fD ]}||}| |tj | 	| qd S )Nr   )ctypes_utils)c_sinc_cos)
numba.core.typingr  numba.tests.ctypes_usecasesr  r  make_function_typer  r   rF   r   )rK   r  r  r  fnptrr   r!   r!   r#   test_external_function_pointers
  s   
z,TestPickling.test_external_function_pointersN)r(   r)   r*   r   r   r   r   r   r   r  r  r  r  r  r  r  unittestexpectedFailurer$  r!   r!   r!   r#   r     s     	r   c                   @   r   )TestSignaturesc                    s   t j  fdd} fdd}tj}tj}tj}t|dd}||f|fd  |||f||fd  ||||f| |d|f| |d||fd  |t|||f| d	}|tj	f| |d
| |g d d S )Nc                    s     | ||f d S ru   )r9   )r-   argsr  r   rK   r!   r#   r~     s   z6TestSignatures.test_normalize_signature.<locals>.checkc                    sH    t} |  W d    n1 sw   Y  |t|j d S ru   )r^   r   r[   r   r   )r-   msgr   r)  r!   r#   check_error  s   
z<TestSignatures.test_normalize_signature.<locals>.check_errorr    r   zint16(complex64)z(complex64, int16)z3invalid type in signature: expected a type instanceru   zinvalid signature)
r   normalize_signaturer   r=   r<   r   r   r   rC   r   )rK   r~   r+  r   r   r   rN   r*  r!   r)  r#   test_normalize_signature  s"   
z'TestSignatures.test_normalize_signatureN)r(   r)   r*   r-  r!   r!   r!   r#   r'    r   r'  c                   @   s   e Zd Zdd Zdd ZdS )TestRecordDtypec                 C   sf   t dt jfdt jfg}t|}|d d d }t jd|d}t|}| |jj| | || d S )NrN   rO   r    r   rw   )r   rw   r:   r=   r   zerosr9   )rK   rec_dtrec_tyart1arrart2r!   r!   r#   test_record_type_equiv4  s   z&TestRecordDtype.test_record_type_equivc                 C   s   t dt jfdt jfg}t|}t|d d  fdddd }t jd|d}d	|d
 d< d|d
 d< ||\}}| ||d
 d  | ||d
 d  d S )NrN   rO   Tr  c                 S   s   | d | d fS )NrN   rO   r!   r"   r!   r!   r#   r3   A     z0TestRecordDtype.test_user_specified.<locals>.foor    r/  {   r   g@@)r   rw   r:   r=   r   r
   r0  r9   )rK   r1  rec_typer3   r4  rN   rO   r!   r!   r#   test_user_specified=  s   
z#TestRecordDtype.test_user_specifiedN)r(   r)   r*   r6  r:  r!   r!   r!   r#   r.  3  s    	r.  c                   @   ,   e Zd Zdd Zdd Zdd Zdd Zd	S )
	TestDTypec                    s   dd  t dd  fdd}td}||tjdd	 ||tjdd ||tjdd
 ||tjdd d S )Nc                 S   s   | j |S ru   )rw   r   )r4  valr!   r!   r#   convR     z&TestDType.test_type_attr.<locals>.convTr  c                    sD    | |}| |} ||  t|t|  || d S ru   )r   r   )r4  r=  exactexpectgotr>  jit_convrK   r!   r#   assert_matchesW  s
   

z0TestDType.test_type_attr.<locals>.assert_matchesr   g333333?r    y333333?        y        333333?)r
   r   r0  astyperD   r@   rA   )rK   rE  r4  r!   rC  r#   test_type_attrP  s   
zTestDType.test_type_attrc                 C   sf   dd }t dd|}| |td|td | |tjdtjd|tjdtjd d S )Nc                 S   s   | j jdkS )Nr   )rw   kind)r   r!   r!   r#   tkinde  r?  z"TestDType.test_kind.<locals>.tkindTr  r   r/  )r
   r9   r   onesrD   )rK   rI  	jit_tkindr!   r!   r#   	test_kindd  s    zTestDType.test_kindc                 C   *   dd }t dd|}| | |  d S )Nc                  S   s   t t j} | dS r   )r   rw   r@   r   rN   r!   r!   r#   implm  s   
z,TestDType.test_dtype_with_type.<locals>.implTr  r
   r9   rK   rO  jit_implr!   r!   r#   test_dtype_with_typel     zTestDType.test_dtype_with_typec                 C   rM  )Nc                  S   s   t d} | dS )Nr@   r   )r   rw   r   rN  r!   r!   r#   rO  t  s   

z.TestDType.test_dtype_with_string.<locals>.implTr  rP  rQ  r!   r!   r#   test_dtype_with_strings  rT  z TestDType.test_dtype_with_stringN)r(   r)   r*   rG  rL  rS  rU  r!   r!   r!   r#   r<  O  s
    r<  c                   @   s4   e Zd ZdZdZdd Zdd Zdd Zd	d
 ZdS )TestIsInternalTypeMarkerzTests the use of the Type metaclass init correctly setting the flag on
    the `is_internal` attr of a concrete Type class
    z
from numba.core import types

class FooType(types.Type):
    def __init__(self):
        super(FooType, self).__init__(name='Foo')
c                 C   s   t tj}ttj}t| j,}tj|j	}| 
|tjd  | 
tjdd  | | |jtjv  W d    n1 s>w   Y  | 
tj| | 
tj| d S )Nr   r    )r   syspathdictmodulesr   source_linesosdirname__file__r9   rV   r(   )rK   sys_path_originalsys_modules_originaltest_moduletemp_module_dirr!   r!   r#   test_create_temp_module  s   

z0TestIsInternalTypeMarker.test_create_temp_modulec                 C   sp   zt tj}ttj}t| j td1 sw   Y  W d S  ty7   | tj| | tj| Y d S w )NzSomething went wrong!)	r   rW  rX  rY  rZ  r   r[  r   r9   )rK   r_  r`  r!   r!   r#   &test_create_temp_module_with_exception  s   

z?TestIsInternalTypeMarker.test_create_temp_module_with_exceptionc              	      s  t | j}|j |   j G dd dt}t tj t	
| fdd}t dd }dd td	d
 }tfdd}| |td | |d | ||  dd tdd }tfdd}| |td | |d | tj}	||  W d    n1 sw   Y  t|	j}
| t|
 | d|
 | d|
 W d    d S 1 sw   Y  d S )Nc                   @   r%   )zNTestIsInternalTypeMarker.test_externally_defined_type_is_external.<locals>.FooNr'   r!   r!   r!   r#   Foo  r+   re  c                         S ru   r!   r=  rb   FooTyper!   r#   _typ_foo     zSTestIsInternalTypeMarker.test_externally_defined_type_is_external.<locals>._typ_fooc                 S      t |j S ru   r   contextget_dummy_valuetypobjrb   r!   r!   r#   	unbox_foo     zTTestIsInternalTypeMarker.test_externally_defined_type_is_external.<locals>.unbox_fooc                 S   r   ru   r!   rN  r!   r!   r#   false_if_not_array  r   z]TestIsInternalTypeMarker.test_externally_defined_type_is_external.<locals>.false_if_not_arrayc                 S   s   t | tjr
dd S dd S )Nc                 S      dS NTr!   rN  r!   r!   r#   r         zrTestIsInternalTypeMarker.test_externally_defined_type_is_external.<locals>.ol_false_if_not_array.<locals>.<lambda>c                 S   rv  NFr!   rN  r!   r!   r#   r     rx  )r   r   r   rN  r!   r!   r#   ol_false_if_not_array  s   z`TestIsInternalTypeMarker.test_externally_defined_type_is_external.<locals>.ol_false_if_not_arrayc                        | S ru   r!   rN  )ru  r!   r#   call_false_if_not_array     zbTestIsInternalTypeMarker.test_externally_defined_type_is_external.<locals>.call_false_if_not_array
   c                 S   r   ru   r!   rN  r!   r!   r#    false_if_not_array_closed_system  r   zkTestIsInternalTypeMarker.test_externally_defined_type_is_external.<locals>.false_if_not_array_closed_systemc                 S   s&   | j rt| tjrdd S dd S d S )Nc                 S   rv  rw  r!   rN  r!   r!   r#   r     rx  zTestIsInternalTypeMarker.test_externally_defined_type_is_external.<locals>.ol_false_if_not_array_closed_system.<locals>.<lambda>c                 S   rv  ry  r!   rN  r!   r!   r#   r     rx  )is_internalr   r   r   rN  r!   r!   r#   #ol_false_if_not_array_closed_system  s
   znTestIsInternalTypeMarker.test_externally_defined_type_is_external.<locals>.ol_false_if_not_array_closed_systemc                    r{  ru   r!   rN  )r  r!   r#   %call_false_if_not_array_closed_system  r}  zpTestIsInternalTypeMarker.test_externally_defined_type_is_external.<locals>.call_false_if_not_array_closed_systemr  z(Foo))r   r[  ri  rW   r  rG   r   r   OpaqueModelr   registerr   r   r   rV   r   r0  r^   r   TypingErrorr   r   r[   r   )rK   ra  re  rj  rs  rz  r|  r  r  r   estrr!   )ri  ru  r  r#   (test_externally_defined_type_is_external  s@   



"zATestIsInternalTypeMarker.test_externally_defined_type_is_externalc                    s   t | jZ}|j |   j G dd dt}t tj t	
| fdd}t dd }ttj fdd}ttj fd	d
}tdd }| d||  W d    d S 1 sbw   Y  d S )Nc                   @   r%   )zETestIsInternalTypeMarker.test_mixin_against_real_example.<locals>.FooNr'   r!   r!   r!   r#   re    r+   re  c                    rf  ru   r!   rg  rh  r!   r#   rj    rk  zJTestIsInternalTypeMarker.test_mixin_against_real_example.<locals>._typ_fooc                 S   rl  ru   rm  rp  r!   r!   r#   rs    rt  zKTestIsInternalTypeMarker.test_mixin_against_real_example.<locals>.unbox_fooc                       |   kr	dd S d S )Nc                 S   rv  )NRAN CUSTOM EQ OVERLOADr!   rN   rO   r!   r!   r#   r     rx  zZTestIsInternalTypeMarker.test_mixin_against_real_example.<locals>.foo_eq.<locals>.<lambda>r!   r  rh  r!   r#   foo_eq     
zHTestIsInternalTypeMarker.test_mixin_against_real_example.<locals>.foo_eqc                    r  )Nc                 S   rv  )NRAN CUSTOM NE OVERLOADr!   r  r!   r!   r#   r     rx  zZTestIsInternalTypeMarker.test_mixin_against_real_example.<locals>.foo_ne.<locals>.<lambda>r!   r  rh  r!   r#   foo_ne   r  zHTestIsInternalTypeMarker.test_mixin_against_real_example.<locals>.foo_nec                 S   s   | dk| dkfS )Nr   r!   rN  r!   r!   r#   r     r7  zCTestIsInternalTypeMarker.test_mixin_against_real_example.<locals>.f)r  r  )r   r[  ri  rW   r  rG   r   r   r  r   r  r   r   operatoreqner   r9   )rK   ra  re  rj  rs  r  r  r   r!   rh  r#   test_mixin_against_real_example  s&   

"z8TestIsInternalTypeMarker.test_mixin_against_real_exampleN)	r(   r)   r*   r   r[  rc  rd  r  r  r!   r!   r!   r#   rV  {  s    GrV  c                   @   r;  )

TestIssuesc                    sj   dd  t  dd }td fdd	tfdd	}tfd
d}| | d | | d d S )Nc                 S   r   ru   r!   rN  r!   r!   r#   inner  r   z+TestIssues.test_omitted_type.<locals>.innerc                 S   s   t | tjsd S dd S )Nc                 S   s   | S ru   r!   rN  r!   r!   r#   r     rx  zFTestIssues.test_omitted_type.<locals>.inner_overload.<locals>.<lambda>)r   r   LiteralrN  r!   r!   r#   inner_overload  s   z4TestIssues.test_omitted_type.<locals>.inner_overloadrN   c                    r{  ru   r!   rN  r  r!   r#   my_func  r}  z-TestIssues.test_omitted_type.<locals>.my_funcc                      rf  ru   r!   r!   r  r!   r#   r     rk  z'TestIssues.test_omitted_type.<locals>.fc                          dS )NrO   r!   r!   r  r!   r#   r   "  r}  z'TestIssues.test_omitted_type.<locals>.grO   rN  r   r   r9   rK   r  r   r   r!   )r  r  r#   test_omitted_type  s   
zTestIssues.test_omitted_typec                    sn   dd  t  fdd}td fdd	tfdd	}tfd
d}| d | d d S )Nc                 S   r   ru   r!   rN  r!   r!   r#   r  +  r   z.TestIssues.test_type_of_literal.<locals>.innerc                    s&   t | tjsd S  | tj dd S )Nc                 S   s   t | | d S )NgGz?)r   rN  r!   r!   r#   r   4  r   zITestIssues.test_type_of_literal.<locals>.inner_overload.<locals>.<lambda>)r   r   r  r  rN  r}   r!   r#   r  .  s   z7TestIssues.test_type_of_literal.<locals>.inner_overloadr    c                    r{  ru   r!   rN  r  r!   r#   r  6  r}  z0TestIssues.test_type_of_literal.<locals>.my_funcc                      rf  ru   r!   r!   r  r!   r#   r   :  rk  z*TestIssues.test_type_of_literal.<locals>.fc                      r  )Nd   r!   r!   r  r!   r#   r   >  r}  z*TestIssues.test_type_of_literal.<locals>.grR   e   )r    r  r  r!   )r  r  rK   r#   test_type_of_literal)  s   zTestIssues.test_type_of_literalc                    f   G  fdddt j  d} d}||fD ]}||fD ]}| t |t |k||k qqd S )Nc                       *   e Zd Z fddZedd Z  ZS )z;TestIssues.test_issue_typeref_key.<locals>.NoUniqueNameTypec                       t  | d || _d S NNoUniqueNameTypesuper__init__paramrK   r  r  	__class__r!   r#   r  H     
zDTestIssues.test_issue_typeref_key.<locals>.NoUniqueNameType.__init__c                 S      | j S ru   r  r}   r!   r!   r#   r5   L  rk  z?TestIssues.test_issue_typeref_key.<locals>.NoUniqueNameType.keyr(   r)   r*   r  propertyr5   __classcell__r!   r  r  r#   r  G      r  r    rR   )r   r&   rT   TypeRefrK   no_unique_name_type_1no_unique_name_type_2r	  r
  r!   r  r#   test_issue_typeref_keyE  s   	z!TestIssues.test_issue_typeref_keyc                    r  )Nc                       r  )z=TestIssues.test_issue_list_type_key.<locals>.NoUniqueNameTypec                    r  r  r  r  r  r!   r#   r  [  r  zFTestIssues.test_issue_list_type_key.<locals>.NoUniqueNameType.__init__c                 S   r  ru   r  r}   r!   r!   r#   r5   _  rk  zATestIssues.test_issue_list_type_key.<locals>.NoUniqueNameType.keyr  r!   r  r  r#   r  Z  r  r  r    rR   )r   r&   rT   ListTyper  r!   r  r#   test_issue_list_type_keyX  s   	z#TestIssues.test_issue_list_type_keyN)r(   r)   r*   r  r  r  r  r!   r!   r!   r#   r    s
    r  __main__)=r   collectionsr   r\   r\  r  rW  rh   numpyr   
numba.corer   r   r   r   numba.core.types.abstractr   numba.core.types.functionsr   numba.core.typing.templatesr	   numbar
   r   r   numba.core.extendingr   r   r   r   r   r   numba.tests.supportr   r   numba.tests.enum_usecasesr   r   r   r%  numba.npr   cPickler   ImportErrorr   r   r$   rG   r&   r,   r   r   r   r'  r.  r<  rV  r  r(   mainr!   r!   r!   r#   <module>   sR     

 ]9q_, `