
    ܙd                        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 d dl	Z
d dlmZmZmZmZmZmZmZmZmZ d dlmZmZ d dlmZ d dlmZmZ d dl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(  G d de)          Z* G d de)          Z+d Z, G d de'e&          Z- G d de&e'          Z.e/dk    r ej0                     dS dS )    N)OrderedDict)	booleandeferred_typefloat32float64int16int32njitoptionaltypeof)errorstypes)
Dispatcher)LoweringErrorTypingError)MemInfo)jitclass)_box)JitClassType)MemoryLeakMixinTestCaseskip_if_typeguardc                       e Zd ZddddZdS )
TestClass1      ac                >    || _         || _        || _        || _        d S N)xyzr   )selfr!   r"   r#   r   s        ;lib/python3.11/site-packages/numba/tests/test_jitclasses.py__init__zTestClass1.__init__   s"        Nr   __name__
__module____qualname__r&    r'   r%   r   r      s4        q       r'   r   c                       e Zd ZddddZdS )
TestClass2r   r   r   c                L    || _         || _        || _        || _        || _        d S r    )r!   r"   r#   argsr   )r$   r!   r"   r#   r   r1   s         r%   r&   zTestClass2.__init__    s)    	r'   Nr(   r)   r-   r'   r%   r/   r/      s4        1       r'   r/   c                 t    t          j        |           }t          |          }|                                 |S r    )r   box_get_meminfoptrr   acquire)boxptrmis      r%   _get_meminfor8   (   s/    

!#
&
&C	BJJLLLIr'   c                   .   e Zd Zd/dZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zed             Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0dS )0TestJitClassNc                    |*t          |           G d dt                                }|}|j        j        }t	          |j                                                  }t	          |j                                                  }|,t          |t                    r|
                                }n|}|J |                     t          |          t          |                     t          t          ||          |          D ]I\  }}	|                     |d         |	d                    |                     |d         |	d                    Jd S )Nc                       e Zd Zd ZdS )&TestJitClass._check_spec.<locals>.Testc                     d S r    r-   r$   s    r%   r&   z/TestJitClass._check_spec.<locals>.Test.__init__6   s    Dr'   Nr)   r-   r'   r%   Testr=   3   s#            r'   r@   r   r   )r   object
class_typeinstance_typeliststructkeysvalues
isinstancer   itemsassertEquallenzip)
r$   spectest_clsall_expectedr@   clstynamesrG   gotexpecteds
             r%   _check_speczTestJitClass._check_spec1   sV   d^^    v   ^ H#1U\&&(())el))++,,$,, $#zz||#'''US%6%6777 UF!3!3\BB 	2 	2MCSVXa[111SVXa[1111	2 	2r'   c                 t    t                      }t          |d<   t          |d<   |                     |           d S Nr!   r"   )r   r	   r   rT   r$   rM   s     r%   test_ordereddict_specz"TestJitClass.test_ordereddict_specK   s7    }}S	S	r'   c                 T    dt           fdt          fg}|                     |           d S rV   )r	   r   rT   rW   s     r%   test_list_speczTestJitClass.test_list_specQ   s1    eg r'   c           	          dt           fg}t          |           G d dt                                }|                     |||dt	          j        t                    fgz              d S )Nr!   c                   @    e Zd ZU eed<   ej        e         ed<   d ZdS )1TestJitClass.test_type_annotations.<locals>.Test1r!   r"   c                     d S r    r-   r?   s    r%   r&   z:TestJitClass.test_type_annotations.<locals>.Test1.__init__^       r'   N)	r*   r+   r,   int__annotations__ptListfloatr&   r-   r'   r%   Test1r]   Y   s@         FFFwu~    r'   re   r"   )r	   r   rA   rT   r   ListTyper   )r$   rM   re   s      r%   test_type_annotationsz"TestJitClass.test_type_annotationsV   s~    e~	$	 	 	 	 	F 	 	 
	 	udsEN74K4K.L-M&MNNNNNr'   c                      G d d          }t            G d d|                      }|                     |dt          d          fdt          d          fg	           d S )
Nc                       e Zd ZU eed<   dS ):TestJitClass.test_type_annotation_inheritance.<locals>.Foor!   N)r*   r+   r,   r`   ra   r-   r'   r%   Foorj   e   s         FFFFFr'   rk   c                   *    e Zd ZU eed<   deddfdZdS ):TestJitClass.test_type_annotation_inheritance.<locals>.Barr"   valuereturnNc                 <    t          |          | _        || _        d S r    )r`   r!   r"   r$   rn   s     r%   r&   zCTestJitClass.test_type_annotation_inheritance.<locals>.Bar.__init__l   s    Ur'   r*   r+   r,   rd   ra   r&   r-   r'   r%   Barrm   h   sA         HHHe       r'   rs   r!   r   r"           )rN   rO   )r   rT   r   )r$   rk   rs   s      r%    test_type_annotation_inheritancez-TestJitClass.test_type_annotation_inheritancec   s    	 	 	 	 	 	 	 	 
	 	 	 	 	# 	 	 
	 	fQii(83s:L'M 	 	
 	
 	
 	
 	
r'   c                 <   dt           fdt          d d          fg}dt          fdt          d d          fg} G d dt                    }|                     t
                    5 }t          ||           d d d            n# 1 swxY w Y   |                     dt          |j	                             |                     t
                    5 }t          ||           d d d            n# 1 swxY w Y   | 
                    t          |j	                  d           d S )Nr!   r"   r   c                       e Zd Zd ZdS )+TestJitClass.test_spec_errors.<locals>.Testc                     d S r    r-   r?   s    r%   r&   z4TestJitClass.test_spec_errors.<locals>.Test.__init__z   r_   r'   Nr)   r-   r'   r%   r@   rx   x   #            r'   r@   z*spec values should be Numba type instancesz"spec keys should be strings, got 1)r`   r   r	   rA   assertRaises	TypeErrorr   assertInstr	exceptionrJ   )r$   spec1spec2r@   raisess        r%   test_spec_errorszTestJitClass.test_spec_errorst   s   sc7111:./Uc7111:./	 	 	 	 	6 	 	 	
 y)) 	"VT5!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"B&*++	- 	- 	-y)) 	"VT5!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"V-..=	? 	? 	? 	? 	?s$   "A??BBC))C-0C-c                    t          g            G d d                      }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                       e Zd Zd ZdS )+TestJitClass.test_init_errors.<locals>.Testc                     dS N   r-   r?   s    r%   r&   z4TestJitClass.test_init_errors.<locals>.Test.__init__       qr'   Nr)   r-   r'   r%   r@   r      s#            r'   r@   z"__init__() should return None, not)r   r{   r   r   r}   r~   r   )r$   r@   r   s      r%   test_init_errorszTestJitClass.test_init_errors   s    	"	 	 	 	 	 	 	 
	 v122 	fDFFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	:&*++	- 	- 	- 	- 	-s   AA Ac                     t                      }t          |d<   t          |d<   t          d d          |d<   t          |           G d dt                                }|S )Nr!   r"   arrc                       e Zd Zd Zd ZdS )9TestJitClass._make_Float2AndArray.<locals>.Float2AndArrayc                 0    || _         || _        || _        d S r    r!   r"   r   )r$   r!   r"   r   s       r%   r&   zBTestJitClass._make_Float2AndArray.<locals>.Float2AndArray.__init__   s    r'   c                 F    | xj         |z  c_         | xj        |z  c_        |S r    r!   r"   r$   vals     r%   addz=TestJitClass._make_Float2AndArray.<locals>.Float2AndArray.add   s%    ##
r'   N)r*   r+   r,   r&   r   r-   r'   r%   Float2AndArrayr      s2          
    r'   r   )r   r   r   rA   )r$   rM   r   s      r%   _make_Float2AndArrayz!TestJitClass._make_Float2AndArray   sp    }}S	S	aaajU	$
	 
	 
	 
	 
	V 
	 
	 

	 r'   c                     t                      }t          |d<   t          |d<   t          |           G d dt                                }|S )Nr!   r"   c                       e Zd Zd ZdS )+TestJitClass._make_Vector2.<locals>.Vector2c                 "    || _         || _        d S r    r   )r$   r!   r"   s      r%   r&   z4TestJitClass._make_Vector2.<locals>.Vector2.__init__   s    r'   Nr)   r-   r'   r%   Vector2r      s#            r'   r   )r   r	   r   rA   )r$   rM   r   s      r%   _make_Vector2zTestJitClass._make_Vector2   s^    }}S	S		$	 	 	 	 	f 	 	 
	 r'   c                    |                                  |                                 t          d             t          fd            }t          j        dt          j                  } ||          \  }}}|                     |d           |                     |d           |                     ||           d S )Nc                      | j         | j        z   S r    r   objs    r%   barz*TestJitClass.test_jit_class_1.<locals>.bar   s    535= r'   c                      dd|           }|                     d            dd          } |           |          |j        fS )Nr      {         )r   r   )r   r   vecr   r   r   s      r%   fooz*TestJitClass.test_jit_class_1.<locals>.foo   sS     .Aq))CGGCLLL'!Q--C3s88SSXXsw..r'   
   dtype   r   )r   r   r
   nponesr   rJ   assertPreciseEqual)	r$   r   inpr   bcr   r   r   s	         @@@r%   test_jit_class_1zTestJitClass.test_jit_class_1   s    2244$$&&		! 	! 
	! 
	/ 	/ 	/ 	/ 	/ 	/ 
	/ gb
+++#c((1a-...E"""3'''''r'   c                 B   |                                  }t          d             }t          d             }t          j        dt          j                  } |dd|          }t          |          }|                     |j        d           |                     |j        t          j
        |                     |                     |j        j        |j                    ||          }t          |          }|                     |j        d           |                     |j        d           |                     |j        t          j
        |                     |                     |j        |j                   ~~|                     |j        d            ||          \  }	}
}|                     |	d           |                     |
d           |                     ||           |                     |j        d           |                     |j        d           |                     |j        |           |                     |                    d          d           |                     |j        d	           |                     |j        d
           d|_        d|_        t          j        dt          j                  x|_        }|                     |j        d           |                     |j        d           |                     |j        |           d S )Nc                     | S r    r-   r   s    r%   identityz>TestJitClass.test_jitclass_usage_from_python.<locals>.identity   s    Jr'   c                 *    | j         | j        | j        fS r    r   r   s    r%   retrieve_attributeszITestJitClass.test_jitclass_usage_from_python.<locals>.retrieve_attributes   s    5#%((r'   r   r   r   r   r   r   |   }   iM  i  r   )r   r
   r   aranger   r8   rJ   refcountdatar   box_get_dataptr_numba_type_rB   assertIsr!   r"   r   r   )r$   r   r   r   r   r   obj_meminfootherother_meminfoout_xout_yout_arrnewarrs                r%   test_jitclass_usage_from_pythonz,TestJitClass.test_jitclass_usage_from_python   s   2244		 	 
	 
	) 	) 
	) i"*---nQ3''"3''-q111)4+?+D+DEEE)4'2	4 	4 	4 $U++-q111/333+T-A%-H-HIII+[-=>>> =-q111 !4 3C 8 8ug""""""gs### 	""""""cgs### 	s+++(((((( 9Qbj9999&$$$$$$cgv&&&&&r'   c                    t                      }t          |d<   t          |           G d dt                                }|                      |d          j                   |                      |d          j                   d S )Nr   c                       e Zd Zd ZdS )2TestJitClass.test_jitclass_datalayout.<locals>.Fooc                     || _         d S r    r   r   s     r%   r&   z;TestJitClass.test_jitclass_datalayout.<locals>.Foo.__init__
      r'   Nr)   r-   r'   r%   rk   r     s#            r'   rk   TF)r   r   r   rA   
assertTruer   assertFalse)r$   rM   rk   s      r%   test_jitclass_datalayoutz%TestJitClass.test_jitclass_datalayout  s    }}U	$	 	 	 	 	& 	 	 
	
 	D		&&&U(((((r'   c                   	 t                      }t                      }t          |d<   t          |          |d<   t          d             	t          |           G 	fddt                                }|                    |j        j	                    |dd           }| 
                    |j        d           |                     |j                    |d|          }t          |          }t          |          }| 
                    |j        d           | 
                    |j        j        |j                   | 
                    |j        d           | 
                    |j        d	           |                                }| 
                    ||j                   |                     |j                   |                     |d
d                      |                     |j                   | 
                    |j        j        d
           |                     |j        j                   |                     |dd                      |                     |j        j                   | 
                    |j        j        j        d           | 
                    |j        d           ~~| 
                    |j        d	           d S )Nr   nextc                     | j         S r    r   )nodes    r%   get_dataz1TestJitClass.test_deferred_type.<locals>.get_data  s
    9r'   c                   &    e Zd Zd Z fdZd ZdS )3TestJitClass.test_deferred_type.<locals>.LinkedNodec                 "    || _         || _        d S r    )r   r   )r$   r   r   s      r%   r&   z<TestJitClass.test_deferred_type.<locals>.LinkedNode.__init__  s     	 			r'   c                 $     | j                   S r    r   )r$   r   s    r%   get_next_datazATestJitClass.test_deferred_type.<locals>.LinkedNode.get_next_data"  s    x	***r'   c                 B    | }|j         |j         }|j         ||_         d S r    r   )r$   r   curs      r%   append_to_tailzBTestJitClass.test_deferred_type.<locals>.LinkedNode.append_to_tail&  s+    h*(C h* r'   N)r*   r+   r,   r&   r   r   )r   s   r%   
LinkedNoder     sL        ! ! !+ + + + +! ! ! ! !r'   r   r   A  r   r   7  i  )r   r   r   r   r
   r   rA   definerB   rC   rJ   r   assertIsNoner   r8   r   r   r   assertIsNotNone)
r$   	node_typerM   r   firstsecondfirst_meminfosecond_meminfo	first_valr   s
            @r%   test_deferred_typezTestJitClass.test_deferred_type  s   !OO	}}V	**V		 	 
	 
$	! 	! 	! 	! 	! 	! 	! 	! 	! 
	!  	.<===
3%%S)))%*%%%C''$U++%f--/333)5:666/3330!444 ((**	EJ/// 	%*%%%jjd33444UZ(((#...%*/***jjd33444UZ_----s333 	/333N/33333r'   c                 ^   t                      }t          |d<   t          |d<   t          |d<   t	          |           G d dt
                                } |ddd          } G d	 d
t          j                  }t          j        t          j
        |                    }t          j        |t          j        |                    d         }|                     |j        |j                   |                     |j        |j                   |                     |j        |j                   d S )Nr   r   r   c                       e Zd Zd ZdS )-TestJitClass.test_c_structure.<locals>.Structc                 0    || _         || _        || _        d S r    )r   r   r   )r$   r   r   r   s       r%   r&   z6TestJitClass.test_c_structure.<locals>.Struct.__init__W      r'   Nr)   r-   r'   r%   Structr   T  s#            r'   r   iͫ     o!	@c                   B    e Zd Zdej        fdej        fdej        fgZdS ).TestJitClass.test_c_structure.<locals>.CStructr   r   r   N)r*   r+   r,   ctypesc_int32c_int16c_double_fields_r-   r'   r%   CStructr   ^  s3        fn%fn%fo&HHHr'   r   r   )r   r	   r   r   r   rA   r   	Structurec_void_pr   r   castPOINTERrJ   r   r   r   )r$   rM   r   str   r6   cstructs          r%   test_c_structurezTestJitClass.test_c_structureN  s2   }}S	S	S		$	 	 	 	 	V 	 	 
	 VFD&))	 	 	 	 	f& 	 	 	 od226677+c6>'#:#:;;A>BD)))BD)))BD)))))r'   c                 2   |                                  } |dd          }t          d             }|                     t                    5 } |||           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nr   r   c                 
    | |u S r    r-   r   r   s     r%   do_isz#TestJitClass.test_is.<locals>.do_iso  s    6Mr'   zno default `is` implementation)r   r
   r{   r   r}   r~   r   )r$   Vectorvec_ar
  r   s        r%   test_iszTestJitClass.test_isk  s    ##%%q!		 	 
	 }-- 	 E%	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	6F<L8M8MNNNNNs   A$$A(+A(c                 r    |                                  } |dd          }|                     ||           d S Nr   r   )r   assertIsInstance)r$   r   r   s      r%   test_isinstancezTestJitClass.test_isinstancex  s>    $$&&gammc7+++++r'   c                     |                                  }|                     t                    5 } G d d|          }d d d            n# 1 swxY w Y   |                     t	          |j                  d           d S )Nc                       e Zd ZdS )+TestJitClass.test_subclassing.<locals>.SubVN)r*   r+   r,   r-   r'   r%   SubVr    s        r'   r  zcannot subclass from a jitclass)r   r{   r|   rJ   r~   r   )r$   r   r   r  s       r%   test_subclassingzTestJitClass.test_subclassing}  s    $$&&y)) 	V    w   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	V-..:	< 	< 	< 	< 	<s   A

AAc                      G d dt                     }t          dt          fg           G d d|                      } |d          }|                     |                                d           d S )Nc                       e Zd Zd ZdS )*TestJitClass.test_base_class.<locals>.Basec                     | j         S r    attrr?   s    r%   whatz/TestJitClass.test_base_class.<locals>.Base.what  s
    y r'   N)r*   r+   r,   r  r-   r'   r%   Baser    s#        ! ! ! ! !r'   r  r  c                       e Zd Zd ZdS )*TestJitClass.test_base_class.<locals>.Testc                     || _         d S r    r  r$   r  s     r%   r&   z3TestJitClass.test_base_class.<locals>.Test.__init__       			r'   Nr)   r-   r'   r%   r@   r     s#        ! ! ! ! !r'   r@   r   )rA   r   r	   rJ   r  )r$   r  r@   r   s       r%   test_base_classzTestJitClass.test_base_class  s    	! 	! 	! 	! 	!6 	! 	! 	!
 
FE?#	$	$	! 	! 	! 	! 	!4 	! 	! 
%	$	!
 d3iiS)))))r'   c                      G d dt                     }|                     t                    5 }t          |           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nc                       e Zd ZdZd ZdS )'TestJitClass.test_globals.<locals>.Miner   c                     d S r    r-   r?   s    r%   r&   z0TestJitClass.test_globals.<locals>.Mine.__init__  r_   r'   N)r*   r+   r,   constantr&   r-   r'   r%   Miner'    s(        H    r'   r*  z-class members are not yet supported: constantrA   r{   r|   r   rJ   r~   r   )r$   r*  r   s      r%   test_globalszTestJitClass.test_globals  s    	 	 	 	 	6 	 	 	 y)) 	VTNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	V-..H	J 	J 	J 	J 	J   A

AAc                 &   t          dt          fg           G d dt                                } |d          }|                     |j        d           |                     |j        d           d|_        |                     |j        d           |                     |j        d           t          d             } ||d	          \  }}}|                     |d           |                     |d	           |                     |d
           d S )Nr  c                   J    e Zd Zd Zed             Zej        d             ZdS )1TestJitClass.test_user_getter_setter.<locals>.Fooc                     || _         d S r    r  r"  s     r%   r&   z:TestJitClass.test_user_getter_setter.<locals>.Foo.__init__  r#  r'   c                     | j         dz   S Nr   r  r?   s    r%   rn   z7TestJitClass.test_user_getter_setter.<locals>.Foo.value  s    y1}$r'   c                     |dz
  | _         d S r3  r  r   s     r%   rn   z7TestJitClass.test_user_getter_setter.<locals>.Foo.value  s    !G			r'   N)r*   r+   r,   r&   propertyrn   setterr-   r'   r%   rk   r0    s[        ! ! ! % % X% \$ $ \$ $ $r'   rk   r   r   i  i  c                 D    | j         }|| _         | j         }| j        }|||fS r    )rn   r  )r   r   r   r   r   s        r%   r   z1TestJitClass.test_user_getter_setter.<locals>.bar  s)    	ACI	AAa7Nr'   r   i6  )r   r	   rA   rJ   r  rn   r
   )r$   rk   r   r   r   r   r   s          r%   test_user_getter_setterz$TestJitClass.test_user_getter_setter  s6   	FE?#	$	$	$ 	$ 	$ 	$ 	$& 	$ 	$ 
%	$	$ c#hh3'''G,,,	7+++C((( 
	 	 
	 #c3--1aC   C   G$$$$$r'   c                      G d dt                     }|                     t                    5 }t          |           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nc                   J    e Zd Zd Zed             Zej        d             ZdS )1TestJitClass.test_user_deleter_error.<locals>.Fooc                     d S r    r-   r?   s    r%   r&   z:TestJitClass.test_user_deleter_error.<locals>.Foo.__init__  r_   r'   c                     dS r3  r-   r?   s    r%   rn   z7TestJitClass.test_user_deleter_error.<locals>.Foo.value  s    qr'   c                     d S r    r-   r?   s    r%   rn   z7TestJitClass.test_user_deleter_error.<locals>.Foo.value      r'   N)r*   r+   r,   r&   r5  rn   deleterr-   r'   r%   rk   r;    s[             X ]  ]  r'   rk   zdeleter is not supported: valuer+  r$   rk   r   s      r%   test_user_deleter_errorz$TestJitClass.test_user_deleter_error  s    	 	 	 	 	& 	 	 	 y)) 	VSMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	V-..:	< 	< 	< 	< 	<r-  c                     G d dt                     }|                     t                    5 }t          |dt          fg           d d d            n# 1 swxY w Y   |                     t          |j                  d           |                     t                    5 }t          |dt          fg           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nc                   0    e Zd Zd Zed             Zd ZdS )3TestJitClass.test_name_shadowing_error.<locals>.Fooc                     d S r    r-   r?   s    r%   r&   z<TestJitClass.test_name_shadowing_error.<locals>.Foo.__init__  r_   r'   c                     d S r    r-   r?   s    r%   my_propertyz?TestJitClass.test_name_shadowing_error.<locals>.Foo.my_property  r?  r'   c                     d S r    r-   r?   s    r%   	my_methodz=TestJitClass.test_name_shadowing_error.<locals>.Foo.my_method  r_   r'   N)r*   r+   r,   r&   r5  rH  rJ  r-   r'   r%   rk   rE    sM             X    r'   rk   rH  zname shadowing: my_propertyrJ  zname shadowing: my_method)rA   r{   	NameErrorr   r	   rJ   r~   r   rA  s      r%   test_name_shadowing_errorz&TestJitClass.test_name_shadowing_error  st   
	 
	 
	 
	 
	& 
	 
	 
	 y)) 	4VSM512333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4V-..0MNNNy)) 	2VSK/0111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2V-..0KLLLLLs#   AAA CC	C	c                    t          dt          fg           G d dt                                }|}t          dt          fg           G d dt                                }|} |d          }|                     |j        d           |                     |                                d            |d          }|                     |j        d           |                     |                                d	           d S )
Nr!   c                       e Zd Zd Zd ZdS )/TestJitClass.test_distinct_classes.<locals>.Fooc                     |dz   | _         d S Nr   r!   r$   r!   s     r%   r&   z8TestJitClass.test_distinct_classes.<locals>.Foo.__init__      Qr'   c                     | j         dz   S r3  rR  r?   s    r%   runz3TestJitClass.test_distinct_classes.<locals>.Foo.run      vz!r'   Nr*   r+   r,   r&   rV  r-   r'   r%   rk   rO    2          " " " " "r'   rk   c                       e Zd Zd Zd ZdS )rO  c                     |dz
  | _         d S rQ  rR  rS  s     r%   r&   z8TestJitClass.test_distinct_classes.<locals>.Foo.__init__   rT  r'   c                     | j         dz
  S r3  rR  r?   s    r%   rV  z3TestJitClass.test_distinct_classes.<locals>.Foo.run  rW  r'   NrX  r-   r'   r%   rk   z/TestJitClass.test_distinct_classes.<locals>.Foo  rY  r'   r   r      r   r   )r   r	   rA   rJ   r!   rV  )r$   rk   FirstFoo	SecondFoor   s        r%   test_distinct_classesz"TestJitClass.test_distinct_classes  s"   	C<.	!	!	" 	" 	" 	" 	"& 	" 	" 
"	!	" 	C<.	!	!	" 	" 	" 	" 	"& 	" 	" 
"	!	" 	hqkk"""A&&&ill"""A&&&&&r'   c                     G d dt                     fd} |d          }|                     |j        d            |d          }|                     |j        d            |t          j        dg                    }t          j                            |j        dg            |t          j        dg                    }t          j                            |j        dg           d S )Nc                       e Zd Zd ZdS )0TestJitClass.test_parameterized.<locals>.MyClassc                     || _         d S r    rn   rq   s     r%   r&   z9TestJitClass.test_parameterized.<locals>.MyClass.__init__      "


r'   Nr)   r-   r'   r%   MyClassrc    s#        # # # # #r'   rg  c                 Z    t          dt          |           fg          } ||           S )Nrn   )r   r   )rn   clsrg  s     r%   create_my_classz8TestJitClass.test_parameterized.<locals>.create_my_class  s.    7gve}}%=$>??C3u::r'   r   g(@)rA   rJ   rn   r   arraytestingassert_equal)r$   rj  r   r   r   drg  s         @r%   test_parameterizedzTestJitClass.test_parameterized  s   	# 	# 	# 	# 	#f 	# 	# 	#
	 	 	 	 	 OC  #&&&OD!!$'''OBHcUOO,,

#///OBHdV,,--

$00000r'   c                    t           t          t           t           d}t          |           G d dt                                }d} ||          }|                     |j        |           |                     |j        |dz             |                     |j        |dz             |                     |j        |j                   |j        }|xj        dz  c_        |                     |j        |dz
             |                     |	                    d          |dz             |                     |	                    |dz            d           |                     |
                    d          |j        dz             |                     |                    d          |j        dz             |                     |j        |dz
             |xj        d	z  c_        |                     |j        |d
z
             t          d             }|                     t          j                  5 } ||           d d d            n# 1 swxY w Y   |                     dt%          |j                             |                     t(                    5 }|                    |           d d d            n# 1 swxY w Y   |                     dt%          |j                             d S )N)rn   _value__value	__value__c                       e Zd Zd Zed             Zed             Zej        d             Zed             Zej        d             Zd Z	d Z
d	 Zd
 ZdS )2TestJitClass.test_protected_attrs.<locals>.MyClassc                 P    || _         |dz  | _        |dz  | _        |dz
  | _        d S )Nr   r   )rn   rq  _MyClass__valuers  rq   s     r%   r&   z;TestJitClass.test_protected_attrs.<locals>.MyClass.__init__/  s.    "
#ai$qy!&r'   c                     | j         S r    rw  r?   s    r%   private_valuez@TestJitClass.test_protected_attrs.<locals>.MyClass.private_value5  
    |#r'   c                     | j         S r    rq  r?   s    r%   _inner_valuez?TestJitClass.test_protected_attrs.<locals>.MyClass._inner_value9  s
    {"r'   c                     || _         d S r    r}  r$   vs     r%   r~  z?TestJitClass.test_protected_attrs.<locals>.MyClass._inner_value=  s    r'   c                     | j         S r    ry  r?   s    r%   __private_valuezBTestJitClass.test_protected_attrs.<locals>.MyClass.__private_valueA  r{  r'   c                     || _         d S r    ry  r  s     r%   r  zBTestJitClass.test_protected_attrs.<locals>.MyClass.__private_valueE  s     r'   c                 "    | j         }|| _         |S r    )_MyClass__private_value)r$   newolds      r%   swap_private_valuezETestJitClass.test_protected_attrs.<locals>.MyClass.swap_private_valueI  s    *'*$
r'   c                     | j         |z  S r    r}  r$   factors     r%   _protected_methodzDTestJitClass.test_protected_attrs.<locals>.MyClass._protected_methodN  s    {V++r'   c                     | j         |z  S r    ry  r  s     r%   __private_methodzCTestJitClass.test_protected_attrs.<locals>.MyClass.__private_methodQ  s    |f,,r'   c                 ,    |                      |          S r    )_MyClass__private_methodr  s     r%   check_private_methodzGTestJitClass.test_protected_attrs.<locals>.MyClass.check_private_methodT  s    ,,V444r'   N)r*   r+   r,   r&   r5  rz  r~  r6  r  r  r  r  r  r-   r'   r%   rg  ru  ,  s        + + + $ $ X$ # # X#      !   $ $ X$ #! ! $#!  
, , ,- - -5 5 5 5 5r'   rg  r   r   r   r   r   d   e   c                     | j         S r    )_TestJitClass__value)insts    r%   access_dunderz8TestJitClass.test_protected_attrs.<locals>.access_dundern  s
    <r'   r  )r	   r   r   rA   rJ   rn   rq  rz  r~  r  r  r  rs  r
   r{   r   r   r}   r~   r   AttributeErrorpy_func)r$   rM   rg  rn   r  freeze_inst_valuer  r   s           r%   test_protected_attrsz!TestJitClass.test_protected_attrs$  sX   	
 
 
$(	5 (	5 (	5 (	5 (	5f (	5 (	5 
(	5T wu~~U+++eai000+UQY777*DK888 KQ*,=,ABBB0055uqyAAA00;;SAAA//22DK!ODDD22155t7IA7MNNN333#555 
	  	  
	  v122 	 fM$	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	,c&2B.C.CDDD~.. 	(&!!$'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(,c&2B.C.CDDDDDs$   2I

IIJ99J= J=c                     ddl m} dt          i}t          ||          } |d          }|                     |j        d           |                     |                    d          d           dS )zM
        Methods with annotations should compile fine (issue #1911).
        r   )AnnotatedClassr!   r   r   r   N)annotation_usecasesr  r	   r   rJ   r!   r   )r$   r  rM   ri  r   s        r%   test_annotationszTestJitClass.test_annotations|  sy    
 	877777U|~t,,c!ff"""Q'''''r'   c                 <   t            G d dt                                }|                     |j        d           |                     |j        j        d           |                     |j        j        d           |                     |j        j        d           d S )Nc                   4    e Zd ZdZd Zd Zed             ZdS )*TestJitClass.test_docstring.<locals>.AppleClass docstringc                     dS )init docstringNr-   r?   s    r%   r&   z3TestJitClass.test_docstring.<locals>.Apple.__init__        r'   c                     dS )foo method docstringNr-   r?   s    r%   r   z.TestJitClass.test_docstring.<locals>.Apple.foo  r  r'   c                     dS )aval property docstringNr-   r?   s    r%   avalz/TestJitClass.test_docstring.<locals>.Apple.aval  r  r'   N)r*   r+   r,   __doc__r&   r   r5  r  r-   r'   r%   Appler    sS        ! ! !' ' ' * * X* * *r'   r  r  r  r  r  )r   rA   rJ   r  r&   r   r  )r$   r  s     r%   test_docstringzTestJitClass.test_docstring  s    		* 	* 	* 	* 	*F 	* 	* 
	* 	(9:::/1ABBB*,BCCC+-FGGGGGr'   c                    dt           fdt          fg}t          |           G d dt                                }d}d}d}||d} |d	ddi|}|                     |j        ||z             |                     |j        |           d S )
Nr   r   c                       e Zd Zd ZdS )+TestJitClass.test_kwargs.<locals>.TestClassc                 (    ||z  | _         || _        d S r    r	  r$   r!   r"   r#   s       r%   r&   z4TestJitClass.test_kwargs.<locals>.TestClass.__init__  s    Qr'   Nr)   r-   r'   r%   	TestClassr    s#            r'   r  r   g?)r"   r#   r!   r-   )r	   r   r   rA   rJ   r   r   )r$   rM   r  r!   r"   r#   kwargstcs           r%   test_kwargszTestJitClass.test_kwargs  s    eg  
$	 	 	 	 	 	 	 
	
 q!!Y%%%f%%q1u%%%q!!!!!r'   c                    dt           fdt           fdt           fg}t          |           G d dt                                } |ddd          }|                     |j        d           |                     |j        d           |                     |j        d            |dd          }|                     |j        d           |                     |j        d           |                     |j        d            |dd	d
          }|                     |j        d           |                     |j        d           |                     |j        d	           d S )Nr!   r"   r#   c                       e Zd ZddZdS )1TestJitClass.test_default_args.<locals>.TestClassr   c                 0    || _         || _        || _        d S r    )r!   r"   r#   r  s       r%   r&   z:TestJitClass.test_default_args.<locals>.TestClass.__init__  r   r'   Nr(   r)   r-   r'   r%   r  r    s(             r'   r  r   r   r   r   )r"   r#   r!   )r	   r   rA   rJ   r!   r"   r#   r$   rM   r  r  s       r%   test_default_argszTestJitClass.test_default_args  sr   eee 
$	 	 	 	 	 	 	 
	 Yq!Qq!!!q!!!q!!!Yq!__q!!!q!!!q!!!Ya1%%%q!!!q!!!q!!!!!r'   c                 @   dt           fdt           fdt           fdt           fg}t          t          |          } |dd          }|                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d            |d	dd
d          }|                     |j        d           |                     |j        d	           |                     |j        d           |                     |j        d
            |d	dd
          }|                     |j        d           |                     |j        d	           |                     |j        d           |                     |j        d
            |d	d          }|                     |j        d           |                     |j        d	           |                     |j        d           |                     |j        d           d S )Nr!   r"   r#   r   r   r   r   r   r   *   r  )r"   r!   r   r#   )r"   r!   r   )r"   r!   )r	   r   r   rJ   r!   r"   r#   r   r  s       r%   test_default_args_keyonlyz&TestJitClass.test_default_args_keyonly  s   eeee
 Z..	Yq!__q!!!q!!!q!!!q!!!Ya2---q!!!q!!!s###r"""Ya2&&&q!!!q!!!q!!!r"""Ya   q!!!q!!!q!!!q!!!!!r'   c                 l   dt           fdt           fdt           fdt          j        t           d          fdt           fg}|                     t          j                  5 }t          t          |           d d d            n# 1 swxY w Y   d}|                     |t          |j
                             d S )Nr!   r"   r#   r1   r   r   z(VAR_POSITIONAL argument type unsupported)r	   r   UniTupler{   r   UnsupportedErrorr   r/   r}   r~   r   )r$   rM   r   msgs       r%   &test_default_args_starargs_and_keyonlyz3TestJitClass.test_default_args_starargs_and_keyonly  s    eeeq112e	 v677 	'6Z&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 9c3v/0011111s   A??BBc                 $   g }t          |           G d dt                                }d }t          d          D ]R}t           ||           |                                |                    D ]\  }}|                     ||           Sd S )Nc                       e Zd Zd Zd ZdS )5TestJitClass.test_generator_method.<locals>.TestClassc                     d S r    r-   r?   s    r%   r&   z>TestJitClass.test_generator_method.<locals>.TestClass.__init__  r_   r'   c              3   Z   K   t          |          D ]}t          j        |          V  d S r    ranger   r   )r$   niteris      r%   genz9TestJitClass.test_generator_method.<locals>.TestClass.gen  s<      u ' 'A)A,,&&&&' 'r'   N)r*   r+   r,   r&   r  r-   r'   r%   r  r    s2          ' ' ' ' 'r'   r  c              3   Z   K   t          |           D ]}t          j        |          V  d S r    r  )r  r  s     r%   expected_genz8TestJitClass.test_generator_method.<locals>.expected_gen  s<      5\\ # #ill""""# #r'   r   )r   rA   r  rL   r  r   )r$   rM   r  r  r  expectrR   s          r%   test_generator_methodz"TestJitClass.test_generator_method  s    	$	' 	' 	' 	' 	' 	' 	' 
	'	# 	# 	# 2YY 	5 	5E"<<#6#6		8N8NOO 5 5''44445	5 	5r'   c                    dt           d d          fg}t          |           G d dt                                t          fd            }t          d             } |            }|                      ||d          d           |                      ||d          d           |                      ||d          d           d S )	Nr   c                        e Zd Zd Zd Zd ZdS ),TestJitClass.test_getitem.<locals>.TestClassc                 P    t          j        dt           j                  | _        d S Nr   r   r   zerosr	   r   r?   s    r%   r&   z5TestJitClass.test_getitem.<locals>.TestClass.__init__      HRrx888			r'   c                     || j         |<   d S r    r   r$   keyr   s      r%   __setitem__z8TestJitClass.test_getitem.<locals>.TestClass.__setitem__      !%	#r'   c                     | j         |         S r    r   r$   r  s     r%   __getitem__z8TestJitClass.test_getitem.<locals>.TestClass.__getitem__      y~%r'   Nr*   r+   r,   r&   r  r  r-   r'   r%   r  r    A        9 9 9& & && & & & &r'   r  c                  :                 } d| d<   d| d<   d| d<   | S )Nr   r   r   r-   )tr  s    r%   create_and_set_indicesz9TestJitClass.test_getitem.<locals>.create_and_set_indices  s.    	AAaDAaDAaDHr'   c                     | |         S r    r-   )r  ns     r%   	get_indexz,TestJitClass.test_getitem.<locals>.get_index#  s    Q4Kr'   r   r   r   r	   r   rA   r
   rJ   )r$   rM   r  r  r  r  s        @r%   test_getitemzTestJitClass.test_getitem  s   qqq"#	$	& 	& 	& 	& 	& 	& 	& 
	& 
	 	 	 	 
	 
	 	 
	 #"$$1a!,,,1a!,,,1a!,,,,,r'   c                 2   dt           d d          fg}t          |           G d dt                                } |            }d|d<   t          d             } ||          }|                     |d           |                     |d         d           d S )	Nr   c                        e Zd Zd Zd Zd ZdS )2TestJitClass.test_getitem_unbox.<locals>.TestClassc                 P    t          j        dt           j                  | _        d S r  r  r?   s    r%   r&   z;TestJitClass.test_getitem_unbox.<locals>.TestClass.__init__1  r  r'   c                     || j         |<   d S r    r   r  s      r%   r  z>TestJitClass.test_getitem_unbox.<locals>.TestClass.__setitem__4  r  r'   c                     | j         |         S r    r   r  s     r%   r  z>TestJitClass.test_getitem_unbox.<locals>.TestClass.__getitem__7  r  r'   Nr  r-   r'   r%   r  r  /  r  r'   r  r   r   c                     d| d<   | d         S )N   r   r   r-   r  s    r%   set2return1z4TestJitClass.test_getitem_unbox.<locals>.set2return1=  s    AaDQ4Kr'   r   r  r  )r$   rM   r  r  r  t_1s         r%   test_getitem_unboxzTestJitClass.test_getitem_unbox,  s    qqq"#	$	& 	& 	& 	& 	& 	& 	& 
	& IKK!		 	 
	 k!nnb!!!1r"""""r'   c                    dt           d d d d f         fg}t          |           G d dt                                } |            }d|t          dd          <   t          d             }t          d             }|                      ||dd          d            ||ddd	           |                     |t          dd                   d	           d S )
Nr   c                        e Zd Zd Zd Zd ZdS )8TestJitClass.test_getitem_complex_key.<locals>.TestClassc                 P    t          j        dt           j                  | _        d S N)r   r   r   r  r?   s    r%   r&   zATestJitClass.test_getitem_complex_key.<locals>.TestClass.__init__K      HXRX>>>			r'   c                 f    || j         t          |j                  t          |j                  f<   d S r    r   r`   realimagr  s      r%   r  zDTestJitClass.test_getitem_complex_key.<locals>.TestClass.__setitem__N  s)    :>	#ch--SX6777r'   c                 h    | j         t          |j                  t          |j                  f         S r    r  r  s     r%   r  zDTestJitClass.test_getitem_complex_key.<locals>.TestClass.__getitem__Q  s$    ySXCH!=>>r'   Nr  r-   r'   r%   r  r  I  sA        ? ? ?? ? ?? ? ? ? ?r'   r  r   r   c                 .    | t          ||                   S r    complex)r  r  r  s      r%   get_keyz6TestJitClass.test_getitem_complex_key.<locals>.get_keyX  s    WT4(())r'   c                 ,    || t          ||          <   d S r    r  )r  r  r  r   s       r%   set_keyz6TestJitClass.test_getitem_complex_key.<locals>.set_key\  s    %)AgdD!!"""r'   r   r   )r	   r   rA   r	  r
   rJ   )r$   rM   r  r  r
  r  s         r%   test_getitem_complex_keyz%TestJitClass.test_getitem_complex_keyF  s   qqq!!!t%&	$	? 	? 	? 	? 	? 	? 	? 
	? IKK'!Q--		* 	* 
	* 
	* 	* 
	* 	Aq))1---1a71a==)1-----r'   c                 n   dt           d d d d f         fg}t          |           G d dt                                } |            }d|d<   t          d             }t          d             }|                      ||          d            ||d           |                     |d	         d           d S )
Nr   c                        e Zd Zd Zd Zd ZdS )6TestJitClass.test_getitem_tuple_key.<locals>.TestClassc                 P    t          j        dt           j                  | _        d S r   r  r?   s    r%   r&   z?TestJitClass.test_getitem_tuple_key.<locals>.TestClass.__init__i  r  r'   c                 6    || j         |d         |d         f<   d S Nr   r   r   r  s      r%   r  zBTestJitClass.test_getitem_tuple_key.<locals>.TestClass.__setitem__l  s     ,0	#a&#a&.)))r'   c                 8    | j         |d         |d         f         S r  r   r  s     r%   r  zBTestJitClass.test_getitem_tuple_key.<locals>.TestClass.__getitem__o  s    yQQ00r'   Nr  r-   r'   r%   r  r  g  sA        ? ? ?1 1 11 1 1 1 1r'   r     r   r   c                     | d         S )Nr  r-   r  s    r%   get11z2TestJitClass.test_getitem_tuple_key.<locals>.get11u  s    T7Nr'   c                     || d<   d S )Nr   r   r-   r  r   s     r%   set22z2TestJitClass.test_getitem_tuple_key.<locals>.set22y  s    AdGGGr'      r  r  )r$   rM   r  r  r  r  s         r%   test_getitem_tuple_keyz#TestJitClass.test_getitem_tuple_keyd  s    qqq!!!t%&	$	1 	1 	1 	1 	1 	1 	1 
	1 IKK$		 	 
	 
	 	 
	 	q2&&&a4"%%%%%r'   c                 ,   dt           d d          fg}t          |           G d dt                                } |            }d|ddd<   |                     |ddd         d           |                     |ddd         d           t          d             }|                      ||          d           t          d             } ||d           |                     |ddd         d           |                     |d	d	d         d
           d S )Nr   c                        e Zd Zd Zd Zd ZdS )6TestJitClass.test_getitem_slice_key.<locals>.TestClassc                 P    t          j        dt           j                  | _        d S r  r  r?   s    r%   r&   z?TestJitClass.test_getitem_slice_key.<locals>.TestClass.__init__  r  r'   c                 R    || j         |j        <   ||j        z   | j         |j        <   d S r    )r   startstepstop)r$   slcr   s      r%   r  zBTestJitClass.test_getitem_slice_key.<locals>.TestClass.__setitem__  s*    '+	#)$&*SXo	#(###r'   c                 &    | j         |j                 S r    )r   r$  )r$   r'  s     r%   r  zBTestJitClass.test_getitem_slice_key.<locals>.TestClass.__getitem__  s    y++r'   Nr  r-   r'   r%   r  r!    sA        9 9 96 6 6, , , , ,r'   r  r   r   r   c                     | ddd         S )Nr      r   r-   r  s    r%   get5z1TestJitClass.test_getitem_slice_key.<locals>.get5  s    QqU8Or'   c                     || ddd<   d S )Nr   r*  r   r-   r  s     r%   set26z2TestJitClass.test_getitem_slice_key.<locals>.set26  s    Aa!eHHHr'   r*  r   )r	   r   rA   rJ   r
   )r$   rM   r  r  r+  r-  s         r%   test_getitem_slice_keyz#TestJitClass.test_getitem_slice_key  sX   qqq"#	$		, 		, 		, 		, 		, 		, 		, 
		, IKK!Aa%1Qq51%%%1Qq51%%%		 	 
	 	a!$$$ 
	 	 
	 	a1Qq51%%%1Qq51%%%%%r'   c                    d t          d          D             }d |D             }|                    d |D                        t          |           G d dt                                } |                                             d S )Nc                 L    g | ]!}t          t          d           |z             "S r   )chrord).0r!   s     r%   
<listcomp>zFTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.<listcomp>  s*    999!CC1%%999r'      c                 &    g | ]}|d z  t           fS r   )r   r3  letters     r%   r4  zFTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.<listcomp>  s!    >>>6"g&>>>r'   c                 J    g | ] }|                                 d z  t          f!S r7  )upperr   r8  s     r%   r4  zFTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.<listcomp>  s*    KKKfllnnr)73KKKr'   c                        e Zd Zd Zd Zd ZdS )JTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.TruncatedLabelc                     d| _         d S )Ng      $@)
aaaaaaaaaar?   s    r%   r&   zSTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.TruncatedLabel.__init__  s    "%r'   c                 N    t          j        | j        | j                  | _        d S r    )randomgaussr?  
bbbbbbbbbbr?   s    r%   meth1zPTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.TruncatedLabel.meth1  s    "(,t"P"Pr'   c                 .    |                                   d S r    )rD  r?   s    r%   meth2zPTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.TruncatedLabel.meth2  s    

r'   N)r*   r+   r,   r&   rD  rF  r-   r'   r%   TruncatedLabelr=    sD        & & &Q Q Q    r'   rG  )r  extendr   rA   rF  )r$   alphabetrM   rG  s       r%   %test_jitclass_longlabel_not_truncatedz2TestJitClass.test_jitclass_longlabel_not_truncated  s     :9uRyy999>>X>>>KK(KKKLLL	$	 	 	 	 	V 	 	 
	 	     r'   c                 0   t            G d dt                                } |            }t          |          }|                     |t          j                   t          j        |          }|                     t          j	        |          |           d S )Nc                       e Zd Zd ZdS )5TestJitClass.test_pickling.<locals>.PickleTestSubjectc                     d S r    r-   r?   s    r%   r&   z>TestJitClass.test_pickling.<locals>.PickleTestSubject.__init__  r_   r'   Nr)   r-   r'   r%   PickleTestSubjectrM    rz   r'   rO  )
r   rA   r   r  r   ClassInstanceTypepickledumpsr   loads)r$   rO  r  typickleds        r%   test_picklingzTestJitClass.test_pickling  s    		 	 	 	 	 	 	 
	 ! ""D\\b%"9:::,r""fl7++R00000r'   c                 t   t          dt          fg           G d d                      }t          dt          fg           G d d                      }|                     |j        t                     |                     |j        t                     |                     |j        t                     |                     |j        |j                   |                     d|                    dd                     |                     d	|                    dd                     |                     d
|                    dd                      |d          } |d          }|                     d|                    d                     |                     d	|                    d                     |                     d|                    dd                     |                     d|                    dd                     |                     d|                    dd                     |                     d|                    dd                     |                     d|                    dd                     |                     d|                    dd                     | 	                    t                    5 }|                    dd           d d d            n# 1 swxY w Y   |                     dt          |j                             | 	                    t                    5 }|                    d           d d d            n# 1 swxY w Y   |                     dt          |j                             t          g            G fdd                                   }| 	                    t          j                  5 }|                                 d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nr!   c                   F    e Zd Zd Zd Zed             Zed             ZdS )/TestJitClass.test_static_methods.<locals>.Test1c                     || _         d S r    rR  rS  s     r%   r&   z8TestJitClass.test_static_methods.<locals>.Test1.__init__      r'   c                 P    |                      | j        |          | _        | j        S r    r   r!   r$   r"   s     r%   increasez8TestJitClass.test_static_methods.<locals>.Test1.increase       $&!,,vr'   c                     | |z   S r    r-   r	  s     r%   r   z3TestJitClass.test_static_methods.<locals>.Test1.add      1ur'   c                     | |z
  S r    r-   r	  s     r%   subz3TestJitClass.test_static_methods.<locals>.Test1.sub  rb  r'   N)r*   r+   r,   r&   r_  staticmethodr   rd  r-   r'   r%   re   rY    sh               \   \  r'   re   c                   0    e Zd Zd Zd Zed             ZdS )/TestJitClass.test_static_methods.<locals>.Test2c                     || _         d S r    rR  rS  s     r%   r&   z8TestJitClass.test_static_methods.<locals>.Test2.__init__  r[  r'   c                 P    |                      | j        |          | _        | j        S r    r]  r^  s     r%   r_  z8TestJitClass.test_static_methods.<locals>.Test2.increase  r`  r'   c                     | |z
  S r    r-   r	  s     r%   r   z3TestJitClass.test_static_methods.<locals>.Test2.add  rb  r'   N)r*   r+   r,   r&   r_  re  r   r-   r'   r%   Test2rg    sM               \  r'   rk  r   r   r   r   r*  r   y               @y              ?foobarr   r   zhas no attribute 'sub'z'not enough arguments: expected 2, got 1c                   6    e Zd Zd Zed             Z fdZdS )/TestJitClass.test_static_methods.<locals>.Test3c                     d S r    r-   r?   s    r%   r&   z8TestJitClass.test_static_methods.<locals>.Test3.__init__  r_   r'   c                     d S r    r-   r	  s     r%   a_static_methodz?TestJitClass.test_static_methods.<locals>.Test3.a_static_method  r?  r'   c                 0                         dd          S r  )rr  )r$   Test3s    r%   call_staticz;TestJitClass.test_static_methods.<locals>.Test3.call_static  s    ,,Q222r'   N)r*   r+   r,   r&   re  rr  ru  )rt  s   r%   rt  ro  	  sX             \3 3 3 3 3 3 3r'   rt  z#Unknown attribute 'a_static_method')r   r	   r  r   r   rd  assertNotEqualrJ   r_  r{   r  r}   r~   r   r|   r   r   ru  )r$   re   rk  t1t2r   invalidrt  s          @r%   test_static_methodsz TestJitClass.test_static_methods  s   	C<.	!	!	 	 	 	 	 	 	 
"	!	  
C<.	!	!
	 
	 
	 
	 
	 
	 
	 
"	!
	 	ei444ei444ei444EIuy111EIIaOO,,,UYYq!__---EIIaOO,,,U1XXU1XXBKKNN+++R[[^^,,,BFF1aLL)))BFF1aLL)))BFF1aLL)))RVVB^^,,,RVVB^^,,,266%#7#7888~.. 	&IIaOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	.&*++	- 	- 	- y)) 	VIIaLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	?&*++	- 	- 	- 
"		3 		3 		3 		3 		3 		3 		3 		3 		3 
		3 %''v122 	"f!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	;&*++	- 	- 	- 	- 	-s6   K55K9<K9M$$M(+M($PP	P	c                    t          t                    }t                       G d d                      }|                     |t                     |                     |j        j        |           t          |           G d d                      }|                     |t                     |                     |j        j        |           t           G d d                      }|                     |t                     |                     |j        j        |           t          |           G d	 d
                      }|                     |t                     |                     |j        j        |           d S )NrR  c                        e Zd ZU eed<   d ZdS )<TestJitClass.test_jitclass_decorator_usecases.<locals>.Test1r!   c                     d| _         d S Nr   rR  r?   s    r%   r&   zETestJitClass.test_jitclass_decorator_usecases.<locals>.Test1.__init__#  r[  r'   Nrr   r-   r'   r%   re   r}    .         HHH    r'   re   )rM   c                       e Zd Zd ZdS )<TestJitClass.test_jitclass_decorator_usecases.<locals>.Test2c                     d| _         d S r  rR  r?   s    r%   r&   zETestJitClass.test_jitclass_decorator_usecases.<locals>.Test2.__init__,  r[  r'   Nr)   r-   r'   r%   rk  r  )  #            r'   rk  c                        e Zd ZU eed<   d ZdS )<TestJitClass.test_jitclass_decorator_usecases.<locals>.Test3r!   c                     d| _         d S r  rR  r?   s    r%   r&   zETestJitClass.test_jitclass_decorator_usecases.<locals>.Test3.__init__6  r[  r'   Nrr   r-   r'   r%   rt  r  2  r  r'   rt  c                       e Zd Zd ZdS )<TestJitClass.test_jitclass_decorator_usecases.<locals>.Test4c                     d| _         d S r  rR  r?   s    r%   r&   zETestJitClass.test_jitclass_decorator_usecases.<locals>.Test4.__init__?  r[  r'   Nr)   r-   r'   r%   Test4r  <  r  r'   r  r   r   r   r  r   assertDictEqualrB   rE   )r$   rM   re   rk  rt  r  s         r%    test_jitclass_decorator_usecasesz-TestJitClass.test_jitclass_decorator_usecases  s   W%%%		 	 	 	 	 	 	 
	 	e\222U-4d;;;	t				 	 	 	 	 	 	 
		
 	e\222U-4d;;;		 	 	 	 	 	 	 
	 	e\222U-4d;;;	$	 	 	 	 	 	 	 
	
 	e\222U-4d;;;;;r'   c                    t          t                    } G d d          }t          |          }|                     |t                     |                     |j        j        |            G d d          }t          ||          }|                     |t                     |                     |j        j        |           d S )NrR  c                        e Zd ZU eed<   d ZdS )CTestJitClass.test_jitclass_function_usecases.<locals>.AnnotatedTestr!   c                     d| _         d S r  rR  r?   s    r%   r&   zLTestJitClass.test_jitclass_function_usecases.<locals>.AnnotatedTest.__init__K  r[  r'   Nrr   r-   r'   r%   AnnotatedTestr  H  s.         HHH    r'   r  c                       e Zd Zd ZdS )ETestJitClass.test_jitclass_function_usecases.<locals>.UnannotatedTestc                     d| _         d S r  rR  r?   s    r%   r&   zNTestJitClass.test_jitclass_function_usecases.<locals>.UnannotatedTest.__init__T  r[  r'   Nr)   r-   r'   r%   UnannotatedTestr  R  #            r'   r  r  )r$   rM   r  JitTest1r  JitTest2s         r%   test_jitclass_function_usecasesz,TestJitClass.test_jitclass_function_usecasesE  s    W%%%	 	 	 	 	 	 	 	 M**h555X07>>>	 	 	 	 	 	 	 	
 OT22h555X07>>>>>r'   c                 p   t          t                    }t          |           G d dt                                t          |           G d dt                                fd}|}t	          |          }|                     t                     |                      | d                     | d                               |                      | d                     | d                               |                      |d	           |d	                     d S )
Nre  c                        e Zd Zd Zd Zd ZdS )2TestJitClass.test_jitclass_isinstance.<locals>.Fooc                     || _         d S r    re  rq   s     r%   r&   z;TestJitClass.test_jitclass_isinstance.<locals>.Foo.__init__`  rf  r'   c                     | j         S r    re  r?   s    r%   getValuez;TestJitClass.test_jitclass_isinstance.<locals>.Foo.getValuec  
    z!r'   c                     | j         dz   S r3  re  r?   s    r%   getValueIncrz?TestJitClass.test_jitclass_isinstance.<locals>.Foo.getValueIncrf  s    zA~%r'   N)r*   r+   r,   r&   r  r  r-   r'   r%   rk   r  ^  sA        # # #" " "& & & & &r'   rk   c                       e Zd Zd Zd ZdS )2TestJitClass.test_jitclass_isinstance.<locals>.Barc                     || _         d S r    re  rq   s     r%   r&   z;TestJitClass.test_jitclass_isinstance.<locals>.Bar.__init__k  rf  r'   c                     | j         S r    re  r?   s    r%   r  z;TestJitClass.test_jitclass_isinstance.<locals>.Bar.getValuen  r  r'   N)r*   r+   r,   r&   r  r-   r'   r%   rs   r  i  s2        # # #" " " " "r'   rs   c                     t          | f          rV|                                 }t          |           r|                                 |z   dfS |                                 |z   dfS dS )Nrk   rs   zno match)rH   r  r  )r   r!   rs   rk   s     r%   test_jitclass_isinstancezGTestJitClass.test_jitclass_isinstance.<locals>.test_jitclass_isinstanceq  sq    #Sz** "LLNNc3'' 5++--1588<<>>A-u44!zr'   r   r   r   )r   r	   r   rA   r
   r  r   rJ   )r$   rM   r  pyfunccfuncrs   rk   s        @@r%   r  z%TestJitClass.test_jitclass_isinstance[  sm   '''	$	& 	& 	& 	& 	&& 	& 	& 
	& 
$	" 	" 	" 	" 	"& 	" 	" 
	"		" 		" 		" 		" 		" 		" *-..c<000Ass1vv777C))55S??;;;EE!HH-----r'   c                    |                      t                    5 }t           G d dt                                } |             d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                       e Zd Zd Zd ZdS ):TestJitClass.test_jitclass_unsupported_dunder.<locals>.Fooc                     d S r    r-   r?   s    r%   r&   zCTestJitClass.test_jitclass_unsupported_dunder.<locals>.Foo.__init__  s    Fr'   c                     d S r    r-   r?   s    r%   	__enter__zDTestJitClass.test_jitclass_unsupported_dunder.<locals>.Foo.__enter__  s    4r'   N)r*   r+   r,   r&   r  r-   r'   r%   rk   r    s2                   r'   rk   z$Method '__enter__' is not supported.)r{   r|   r   rA   r}   r~   r   )r$   erk   s      r%    test_jitclass_unsupported_dunderz-TestJitClass.test_jitclass_unsupported_dunder  s    y)) 	Q         f     X  CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	<c!+>N>NOOOOOs   +AAAc                     t            G d dt                                }t          }|j        }|                     ||           d S )Nc                       e Zd Zd ZdS )1TestJitClass.test_modulename.<locals>.TestModnamec                     d| _         d S )N   rR  r?   s    r%   r&   z:TestJitClass.test_modulename.<locals>.TestModname.__init__  s    r'   Nr)   r-   r'   r%   TestModnamer    s#            r'   r  )r   rA   r*   r+   rJ   )r$   r  
thisModuleclassModules       r%   test_modulenamezTestJitClass.test_modulename  sa    		 	 	 	 	& 	 	 
	 
!,[11111r'   )NNN)1r*   r+   r,   rT   rX   rZ   rg   ru   r   r   r   r   r   r   r   r   r  r  r  r  r$  r,  r8  rB  rL  r`  ro  r  r   r  r  r  r  r  r  r  r  r  r  r  r.  rJ  rV  rz  r  r  r  r  r  r-   r'   r%   r:   r:   /   s       2 2 2 24    
O O O
 
 
"? ? ?$- - -  *  ( ( (,4' 4' 4'l) ) )<4 <4 <4|* * *:O O O, , ,
< < <* * *J J J$% $% $%L< < <&M M M*' ' '<1 1 1,VE VE VEp ( ( (H H H*" " "$" " "6" " "@2 2 25 5 5(- - -># # #4. . .<& & &:#& #& #&J! ! !.
1 
1 
1Q- Q- Q-f'< '< '<R? ? ?,'. '. '.R
P 
P 
P2 2 2 2 2r'   r:   c                       e Zd Z G d d          Zed             Zed             ZddZd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd ZdS )TestJitClassOverloadsc                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TestJitClassOverloads.PyListc                     dg| _         d S r  rR  r?   s    r%   r&   z%TestJitClassOverloads.PyList.__init__  s    SDFFFr'   c                 :    | j                             |           d S r    r!   appendr^  s     r%   r  z#TestJitClassOverloads.PyList.append  s    FMM!r'   c                 8    | j                                          d S r    )r!   clearr?   s    r%   r  z"TestJitClassOverloads.PyList.clear  s    FLLNNNNNr'   c                 0    t          | j                  dz  S r   rK   r!   r?   s    r%   __abs__z$TestJitClassOverloads.PyList.__abs__      tv;;?"r'   c                 8    t          | j                  dz  dk    S )Nr   r   r  r?   s    r%   __bool__z%TestJitClassOverloads.PyList.__bool__  s    tv;;?a''r'   c                 R    t          d          }| j        r|| j        d         z  }|S )Nr   r   )r	  r!   )r$   r   s     r%   __complex__z(TestJitClassOverloads.PyList.__complex__  s+    

Av TVAYHr'   c                     || j         v S r    rR  r^  s     r%   __contains__z)TestJitClassOverloads.PyList.__contains__  s    ;r'   c                 8    d}| j         r|| j         d         z  }|S )Nr   r   rR  )r$   fs     r%   	__float__z&TestJitClassOverloads.PyList.__float__  s%    Av TVAYHr'   c                 8    d}| j         r|| j         d         z  }|S )Nr   r   rR  )r$   r  s     r%   __int__z$TestJitClassOverloads.PyList.__int__  s%    Av TVAYHr'   c                 0    t          | j                  dz   S r3  r  r?   s    r%   __len__z$TestJitClassOverloads.PyList.__len__  r  r'   c                 :    t          | j                  dk    rdS dS )Nr   zPyList emptyzPyList non-emptyr  r?   s    r%   __str__z$TestJitClassOverloads.PyList.__str__  s     46{{a%~))r'   N)r*   r+   r,   r&   r  r  r  r  r  r  r  r  r  r  r-   r'   r%   PyListr    s        	 	 		 	 		 	 		# 	# 	#	( 	( 	(	 	 		 	 		 	 		 	 		# 	# 	#	* 	* 	* 	* 	*r'   r  c                  j     t          dt          j        fg           G  fdd                        S )Nr!   c                   T    e Zd Zd Zd Zd Z fdZ fdZ fdZ fdZ	 fdZ
d	S )
9TestJitClassOverloads.get_int_wrapper.<locals>.IntWrapperc                     || _         d S r    rR  rq   s     r%   r&   zBTestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__init__      r'   c                 "    | j         |j         k    S r    rR  r$   r   s     r%   __eq__z@TestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__eq__      v((r'   c                     | j         S r    rR  r?   s    r%   __hash__zBTestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__hash__  	    vr'   c                 4     | j         |j         z            S r    rR  r$   r   
IntWrappers     r%   
__lshift__zDTestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__lshift__      !z$&EG"3444r'   c                 4     | j         |j         z	            S r    rR  r  s     r%   
__rshift__zDTestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__rshift__  r  r'   c                 4     | j         |j         z            S r    rR  r  s     r%   __and__zATestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__and__      !z$&57"2333r'   c                 4     | j         |j         z            S r    rR  r  s     r%   __or__z@TestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__or__  r  r'   c                 4     | j         |j         z            S r    rR  r  s     r%   __xor__zATestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__xor__  r  r'   N)r*   r+   r,   r&   r  r  r  r  r  r  r  r  s   r%   r  r    s          ) ) )  5 5 5 5 55 5 5 5 54 4 4 4 44 4 4 4 44 4 4 4 4 4 4r'   r  )r   r   intpr  s   @r%   get_int_wrapperz%TestJitClassOverloads.get_int_wrapper  sZ    	C$%	&	&	4 	4 	4 	4 	4 	4 	4 	4 	4 
'	&	42 r'   c                  j     t          dt          j        fg           G  fdd                        S )Nr!   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	 fdZ
 fd	Z fd
Z fdZ fdZ fdZ fdZ fdZ fdZdS )=TestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapperc                     || _         d S r    rR  rq   s     r%   r&   zFTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__init__  r  r'   c                 "    | j         |j         k    S r    rR  r  s     r%   r  zDTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__eq__  r  r'   c                     | j         S r    rR  r?   s    r%   r  zFTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__hash__  r  r'   c                 "    | j         |j         k    S r    rR  r  s     r%   __ge__zDTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__ge__  r  r'   c                 "    | j         |j         k    S r    rR  r  s     r%   __gt__zDTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__gt__      v''r'   c                 "    | j         |j         k    S r    rR  r  s     r%   __le__zDTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__le__  r  r'   c                 "    | j         |j         k     S r    rR  r  s     r%   __lt__zDTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__lt__   r  r'   c                 4     | j         |j         z             S r    rR  r$   r   FloatWrappers     r%   __add__zETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__add__      #|DFUW$4555r'   c                 4     | j         |j         z            S r    rR  r	  s     r%   __floordiv__zJTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__floordiv__      #|DFeg$5666r'   c                 4     | j         |j         z            S r    rR  r	  s     r%   __mod__zETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__mod__	  r  r'   c                 4     | j         |j         z            S r    rR  r	  s     r%   __mul__zETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__mul__  r  r'   c                 &     | j                    S r    rR  r	  s     r%   __neg__zETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__neg__      #|TVG,,,r'   c                 &     | j         
           S r    rR  r	  s     r%   __pos__zETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__pos__  r  r'   c                 4     | j         |j         z            S r    rR  r	  s     r%   __pow__zETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__pow__  r  r'   c                 4     | j         |j         z
            S r    rR  r	  s     r%   __sub__zETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__sub__  r  r'   c                 4     | j         |j         z            S r    rR  r	  s     r%   __truediv__zITestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__truediv__  r  r'   N)r*   r+   r,   r&   r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r
  s   r%   r
  r    s_         ) ) )  ) ) )( ( () ) )( ( (6 6 6 6 67 7 7 7 76 6 6 6 66 6 6 6 6- - - - -- - - - -7 7 7 7 76 6 6 6 66 6 6 6 6 6 6r'   r
  )r   r   r   r  s   @r%   get_float_wrapperz'TestJitClassOverloads.get_float_wrapper  s[    	C'(	)	)0	6 0	6 0	6 0	6 0	6 0	6 0	6 0	6 0	6 
*	)0	6d r'   Nc                     |                      t          |          t          |          |           |                      |||           d S )N)r  )rJ   type)r$   r   r   r  s       r%   
assertSamez TestJitClassOverloads.assertSame   sJ    ed6ll<<<C00000r'   c                 @    t          dt          j        t          j                  i          | j                  }d d d d d d d d	 d
 d d d d d d d d g}d |D             }|                                 } |            }t          ||          D ]U\  }}|                      ||           ||                     |                      ||           ||                     V|                    d           |                    d           t          ||          D ]U\  }}|                      ||           ||                     |                      ||           ||                     V|                    d           |                    d           t          ||          D ]U\  }}|                      ||           ||                     |                      ||           ||                     V|                                 |                                 t          ||          D ]U\  }}|                      ||           ||                     |                      ||           ||                     Vd S )Nr!   c                      t          |           S r    )absrR  s    r%   <lambda>z6TestJitClassOverloads.test_overloads.<locals>.<lambda>*      c!ff r'   c                 *    |                                  S r    )r  rR  s    r%   r'  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>+      aiikk r'   c                      t          |           S r    boolrR  s    r%   r'  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>,  s    d1gg r'   c                 *    |                                  S r    )r  rR  s    r%   r'  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>-  s    ajjll r'   c                      t          |           S r    r  rR  s    r%   r'  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>.  s    gajj r'   c                 *    |                                  S r    )r  rR  s    r%   r'  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>/  s    ammoo r'   c                 
    d| v S r  r-   rR  s    r%   r'  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>0  s
    a1f r'   c                 ,    |                      d          S r  )r  rR  s    r%   r'  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>1  s    annQ'' r'   c                      t          |           S r    rd   rR  s    r%   r'  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>2  s    eAhh r'   c                 *    |                                  S r    )r  rR  s    r%   r'  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>3  s    akkmm r'   c                      t          |           S r    r`   rR  s    r%   r'  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>4  r(  r'   c                 *    |                                  S r    )r  rR  s    r%   r'  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>5  r*  r'   c                      t          |           S r    )rK   rR  s    r%   r'  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>6  r(  r'   c                 *    |                                  S r    )r  rR  s    r%   r'  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>7  r*  r'   c                      t          |           S r    )r~   rR  s    r%   r'  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>8  r(  r'   c                 *    |                                  S r    )r  rR  s    r%   r'  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>9  r*  r'   c                     | rdndS )Nr   r   r-   rR  s    r%   r'  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>:  s    1maa! r'   c                 ,    g | ]}t          |          S r-   )r
   )r3  r  s     r%   r4  z8TestJitClassOverloads.test_overloads.<locals>.<listcomp><  s    ///T!WW///r'   r   )	r   r   rc   r  r  rL   r#  r  r  )r$   JitListpy_funcs	jit_funcspy_listjit_listpy_fjit_fs           r%   test_overloadsz$TestJitClassOverloads.test_overloads$  s    :(CEJ!7!7899$+FF !!""  %%''##!!!!!!###
& 0/h///	++--799x33 	< 	<KD%OODDMM44>>:::OODDMM55??;;;;qx33 	< 	<KD%OODDMM44>>:::OODDMM55??;;;;rx33 	< 	<KD%OODDMM44>>:::OODDMM55??;;;;x33 	< 	<KD%OODDMM44>>:::OODDMM55??;;;;	< 	<r'   c                 l   d }t          |          }t          dt          j        t          j                  fg           G d d                      } |g d          }|                      ||                     |                      ||                     |                    d           |                      ||                     |                      ||                     |                                 |                      ||                     |                      ||                     t          dt          j	        fg           G d d	                      } |d
          }|                      ||                     |                      ||                     d S )Nc                      t          |           S r    r,  rR  s    r%   py_bz6TestJitClassOverloads.test_bool_fallback.<locals>.py_bX      77Nr'   r!   c                   &    e Zd Zd Zd Zd Zd ZdS ):TestJitClassOverloads.test_bool_fallback.<locals>.LenClassc                     || _         d S r    rR  rS  s     r%   r&   zCTestJitClassOverloads.test_bool_fallback.<locals>.LenClass.__init___  r[  r'   c                 0    t          | j                  dz  S )Nr   r  r?   s    r%   r  zBTestJitClassOverloads.test_bool_fallback.<locals>.LenClass.__len__b  s    46{{Q&r'   c                 :    | j                             |           d S r    r  r^  s     r%   r  zATestJitClassOverloads.test_bool_fallback.<locals>.LenClass.appende  s    a     r'   c                 :    | j                             d           d S r  )r!   popr?   s    r%   rR  z>TestJitClassOverloads.test_bool_fallback.<locals>.LenClass.poph  s    

1r'   N)r*   r+   r,   r&   r  r  rR  r-   r'   r%   LenClassrM  ]  sP          ' ' '! ! !    r'   rS  )r   r   r   r   r"   c                       e Zd Zd ZdS )=TestJitClassOverloads.test_bool_fallback.<locals>.NormalClassc                     || _         d S r    )r"   r^  s     r%   r&   zFTestJitClassOverloads.test_bool_fallback.<locals>.NormalClass.__init__y  r[  r'   Nr)   r-   r'   r%   NormalClassrU  w  r  r'   rW  r   )
r
   r   r   rc   r  r   r  r   rR  r   )r$   rJ  jit_brS  r   rW  s         r%   test_bool_fallbackz(TestJitClassOverloads.test_bool_fallbackV  s   	 	 	 T

	CEJ//01	2	2	 	 	 	 	 	 	 
3	2	 hyyy!!S		"""c

###

1c###s$$$			S		"""c

###	C'(	)	)	 	 	 	 	 	 	 
*	)	 k!nnS		"""c

#####r'   c                    d }d }d }t          |          }t          |          }t          |          }t          g            G d d                      } |            }|                      ||          t          d                     |                      ||          t          d                     |                      ||          d           |                      ||          d           |                     t
                    5 }	 ||           d d d            n# 1 swxY w Y   |                     dt          |	j                             |                     t                    5 }	 ||           d d d            n# 1 swxY w Y   |                     dt          |	j                             t          g            G d d	                      }
 |
            }|                      ||          d
           |                      ||          d
           |                     t
                    5 }	 ||           d d d            n# 1 swxY w Y   |                     dt          |	j                             |                     t                    5 }	 ||           d d d            n# 1 swxY w Y   |                     dt          |	j                             |                     t
                    5 }	 ||           d d d            n# 1 swxY w Y   |                     dt          |	j                             |                     t                    5 }	 ||           d d d            n# 1 swxY w Y   |                     dt          |	j                             t          g            G d d                      } |            }|                      ||          t          d                     |                      ||          t          d                     |                      ||          d           |                      ||          d           |                      ||          d           |                      ||          d           t          g            G d d                      } |            }|                      ||          t          d                     |                      ||          t          d                     |                      ||          d           |                      ||          d           |                      ||          d
           |                      ||          d
           d S )Nc                      t          |           S r    r  rR  s    r%   py_cz9TestJitClassOverloads.test_numeric_fallback.<locals>.py_c  s    1::r'   c                      t          |           S r    r4  rR  s    r%   rE  z9TestJitClassOverloads.test_numeric_fallback.<locals>.py_f  s    88Or'   c                      t          |           S r    r7  rR  s    r%   py_iz9TestJitClassOverloads.test_numeric_fallback.<locals>.py_i  s    q66Mr'   c                       e Zd Zd Zd ZdS )?TestJitClassOverloads.test_numeric_fallback.<locals>.FloatClassc                     d S r    r-   r?   s    r%   r&   zHTestJitClassOverloads.test_numeric_fallback.<locals>.FloatClass.__init__  r_   r'   c                     dS Nr   r-   r?   s    r%   r  zITestJitClassOverloads.test_numeric_fallback.<locals>.FloatClass.__float__      vr'   N)r*   r+   r,   r&   r  r-   r'   r%   
FloatClassra    s2              r'   rf  r   r`   c                       e Zd Zd Zd ZdS )=TestJitClassOverloads.test_numeric_fallback.<locals>.IntClassc                     d S r    r-   r?   s    r%   r&   zFTestJitClassOverloads.test_numeric_fallback.<locals>.IntClass.__init__  r_   r'   c                     dS r   r-   r?   s    r%   r  zETestJitClassOverloads.test_numeric_fallback.<locals>.IntClass.__int__  r   r'   N)r*   r+   r,   r&   r  r-   r'   r%   IntClassrh    2              r'   rk  r   r	  rd   c                       e Zd Zd Zd ZdS )?TestJitClassOverloads.test_numeric_fallback.<locals>.IndexClassc                     d S r    r-   r?   s    r%   r&   zHTestJitClassOverloads.test_numeric_fallback.<locals>.IndexClass.__init__  r_   r'   c                     dS r3  r-   r?   s    r%   	__index__zITestJitClassOverloads.test_numeric_fallback.<locals>.IndexClass.__index__  r   r'   N)r*   r+   r,   r&   rq  r-   r'   r%   
IndexClassrn    rl  r'   rr  r   g      ?c                   &    e Zd Zd Zd Zd Zd ZdS )GTestJitClassOverloads.test_numeric_fallback.<locals>.FloatIntIndexClassc                     d S r    r-   r?   s    r%   r&   zPTestJitClassOverloads.test_numeric_fallback.<locals>.FloatIntIndexClass.__init__  r_   r'   c                     dS rd  r-   r?   s    r%   r  zQTestJitClassOverloads.test_numeric_fallback.<locals>.FloatIntIndexClass.__float__  re  r'   c                     dS r   r-   r?   s    r%   r  zOTestJitClassOverloads.test_numeric_fallback.<locals>.FloatIntIndexClass.__int__  r   r'   c                     dS r3  r-   r?   s    r%   rq  zQTestJitClassOverloads.test_numeric_fallback.<locals>.FloatIntIndexClass.__index__  r   r'   N)r*   r+   r,   r&   r  r  rq  r-   r'   r%   FloatIntIndexClassrt    sP                  r'   ry  )
r
   r   r#  r	  r{   r|   r}   r~   r   r   )r$   r\  rE  r_  jit_crF  jit_irf  r   r  rk  rr  ry  s                r%   test_numeric_fallbackz+TestJitClassOverloads.test_numeric_fallback  s   	 	 		 	 		 	 	 T

T

T

	"	 	 	 	 	 	 	 
	 jllS		76??333c

GFOO444S		6***c

F+++y)) 	QDIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	eS--...{++ 	qE#JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	eS--...	"	 	 	 	 	 	 	 
	 hjjS		1%%%c

A&&&y)) 	QDIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	iQ[!1!1222{++ 	qE#JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	iQ[!1!1222y)) 	QDIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	gs1;//000{++ 	qE#JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	gs1;//000	"	 	 	 	 	 	 	 
	 jllS		71::...c

GAJJ///S		2&&&c

B'''S		1%%%c

A&&&	"	 	 	 	 	 	 	 
	 ! ""S		76??333c

GFOO444S		6***c

F+++S		1%%%c

A&&&&&sl   D++D/2D/8FFFII#&I#,KKKL))L-0L-6NNNc                 4   |                                  }|                                 }d d d d d d d d d	 d
 d d d g}d d d d d d d g}g d}d }t          j        t	          t
          |          |          D ]\  }\  }}	|j        }
 |
||	          } ||          } ||	          }t          |          t          ur| j	        n| j
        } || |||	                      || | |
||                                || | |||                               t          j        t	          t
          |          |          D ]\  }\  }}	|j        }
t          |          t          |	          }	} |
||	          } ||          } ||	          }| 	                    | |||	                     | 	                    | | |
||                               | 	                    | | |||                               d S )Nc                     | |k    S r    r-   r   s     r%   r'  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  
    a r'   c                     | |k    S r    r-   r   s     r%   r'  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |k    S r    r-   r   s     r%   r'  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |k    S r    r-   r   s     r%   r'  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  
    Q r'   c                     | |k    S r    r-   r   s     r%   r'  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |k     S r    r-   r   s     r%   r'  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |z   S r    r-   r   s     r%   r'  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  
    Q r'   c                     | |z  S r    r-   r   s     r%   r'  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  
    a r'   c                     | |z  S r    r-   r   s     r%   r'  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |z  S r    r-   r   s     r%   r'  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |z  S r    r-   r   s     r%   r'  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |z
  S r    r-   r   s     r%   r'  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |z  S r    r-   r   s     r%   r'  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |k    S r    r-   r   s     r%   r'  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |k    S r    r-   r   s     r%   r'  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |z  S r    r-   r   s     r%   r'  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |z	  S r    r-   r   s     r%   r'  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |z  S r    r-   r   s     r%   r'  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |z  S r    r-   r   s     r%   r'  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |z  S r    r-   r   s     r%   r'  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   )rt   g       @)gX9v?r   )g333333*@g)\(?c                 $    t          | d|           S )Nr!   )getattrre  s    r%   unwrapz=TestJitClassOverloads.test_arithmetic_logical.<locals>.unwrap  s    5#u---r'   )r  r   	itertoolsproductmapr
   r  r"  rd   rJ   assertAlmostEqualr`   )r$   r  r
  float_py_funcsint_py_funcstest_valuesr  rF  r!   r"   rE  rS   jit_xjit_ychecks                  r%   test_arithmetic_logicalz-TestJitClassOverloads.test_arithmetic_logical  s   ))++
--//  
   

 
 
	. 	. 	. '.D.));8 8 	9 	9ME6Aq =DtAqzzH LOOE LOOE >>..   + 
 E(EE!QKK(((E(FF44u#5#566777E(FF55#6#6778888&.D,''6 6 	D 	DME6Aq =Dq663q66qAtAqzzHJqMMEJqMMEXuuQ{{333Xvvdd5%.@.@'A'ABBBXvveeE5.A.A'B'BCCCC	D 	Dr'   c           
         |                                  }|                                 }|                                d         }|                                d         }t          dt          j        fg           G fdd|                      t          dt          j        i           G fdd|                                                      d         }                                d         }d fdd	D             }fd
dD             }g d}	t          j        t          t          |          ||f|fg|	          D ]\  }
\  }}\  }}|
j        } | ||           ||                    j        }|                     | | ||           ||                    j                   |                     | |
 ||           ||                    j                   t          j        t          t          |          ||f|fg|	          D ]\  }
\  }}\  }}t          |          t          |          }}|
j        } | ||           ||                    j        }|                     | | ||           ||                    j                   |                     | |
 ||           ||                    j                   d S )Nr   r!   c                   H    e Zd Zd Z fdZ fdZ fdZ fdZ fdZdS )RTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapperc                     || _         d S r    rR  rq   s     r%   r&   z[TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__init__4  r  r'   c                 4     | j         |j         z            S r    rR  r$   r   JitIntUpdateWrappers     r%   __ilshift__z^TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__ilshift__7      **46UW+<===r'   c                 4     | j         |j         z	            S r    rR  r  s     r%   __irshift__z^TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__irshift__:  r  r'   c                 4     | j         |j         z            S r    rR  r  s     r%   __iand__z[TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__iand__=      **46EG+;<<<r'   c                 4     | j         |j         z            S r    rR  r  s     r%   __ior__zZTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__ior__@  r  r'   c                 4     | j         |j         z            S r    rR  r  s     r%   __ixor__z[TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__ixor__C  r  r'   N)	r*   r+   r,   r&   r  r  r  r  r  )r  s   r%   r  r  2  s          > > > > >> > > > >= = = = == = = = == = = = = = =r'   r  c                   \    e Zd Zd Z fdZ fdZ fdZ fdZ fdZ fdZ	 fdZ
d	S )
TTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapperc                     || _         d S r    rR  rq   s     r%   r&   z]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__init__I  r  r'   c                 :     | j         d|j         z  z             S NgX9v@rR  r$   r   JitFloatUpdateWrappers     r%   __iadd__z]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__iadd__L  s!    ,,TVeego-EFFFr'   c                 :     | j         dz  |j         z            S r  rR  r  s     r%   __ifloordiv__zbTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__ifloordiv__O  s!    ,,TVe^uw-FGGGr'   c                 :     | j         |j         dz   z            S r3  rR  r  s     r%   __imod__z]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__imod__R  s!    ,,TVuw{-CDDDr'   c                 :     | j         |j         z  dz             S r3  rR  r  s     r%   __imul__z]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__imul__U  s"    ,,TVeg-=-ABBBr'   c                 :     | j         |j         z  dz             S r3  rR  r  s     r%   __ipow__z]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__ipow__X  s"    ,,TVuw->-BCCCr'   c                 :     | j         d|j         z  z
            S rd  rR  r  s     r%   __isub__z]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__isub__[  s"    ,,TVfuw6F-FGGGr'   c                 :     | j         dz   |j         z            S r3  rR  r  s     r%   __itruediv__zaTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__itruediv__^  s!    ,,dfqjEG-CDDDr'   N)r*   r+   r,   r&   r  r  r  r  r  r  r  )r  s   r%   r  r  F  s          G G G G GH H H H HE E E E EC C C C CD D D D DH H H H HE E E E E E Er'   r  c                 B    d|  d}i }t          ||           |d         S )Nz
def f(x, y):
    x z= y
    return x
r  )exec)optemplate	namespaces      r%   get_update_funczNTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.get_update_funcd  s<    	  H
 I9%%%S>!r'   c                 &    g | ]} |          S r-   r-   r3  r  r  s     r%   r4  zITestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.<listcomp>n  s/       "//"--   r'   )+z//%*z**-/c                 &    g | ]} |          S r-   r-   r  s     r%   r4  zITestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.<listcomp>q  s/       ++   r'   )z<<z>>&|^r  )r  r   mror   r   r  r   r  r  r  r
   r  r!   r  r`   rJ   )r$   JitIntWrapperJitFloatWrapperPyIntWrapperPyFloatWrapperPyIntUpdateWrapperPyFloatUpdateWrapperr  r  r  rF  py_clsjit_clsr!   r"   rE  rS   r  r  r  s                    @@@r%   test_arithmetic_logical_inplacez5TestJitClassOverloads.test_arithmetic_logical_inplace)  s    ,,..0022$((**1-(,,..q1	C$%	&	&	= 	= 	= 	= 	= 	= 	=, 	= 	= 
'	&	=& 
3&	'	'	E 	E 	E 	E 	E 	E 	EN 	E 	E 
(	'	E4 14466q9488::1=	" 	" 	"    9
       7
   
 
 
 1:0AD.))#_5)+@A 1 1 	N 	N,E$FGfq! =DtFF1IIvvayy113H""8TT''!**ggajj-I-I-KLLL""8UU771::wwqzz-J-J-LMMMM090AD,''!=1')<= 1 1 	H 	H,E$FGfq! q663q66qA=DtFF1IIvvayy113HXttGGAJJ

'C'C'EFFFXuuWWQZZ'D'D'FGGGG	H 	Hr'   c           
          G d d          } G d d|          }d }d }d }d }g d	}t          j        ||gd
dg          D ]	\  }}	|	rt          n|}
 |
|          } |
|          } |
|          }t          |          }dD ]-}|                      | ||                    |dz             .|D ]\  }}|                      | ||           ||                     ||           ||          k               |                      | ||           ||                     ||           ||          k               d S )Nc                   ,    e Zd ZU eed<   d Zd Zd ZdS )9TestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqTestr!   c                     || _         d S r    rR  rS  s     r%   r&   zBTestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqTest.__init__  r[  r'   c                     | j         dz  S )Nr   rR  r?   s    r%   r  zBTestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqTest.__hash__  s    v{"r'   c                 .    | j         |j         z
  dz  dk    S )Nr  r   rR  r$   os     r%   r  z@TestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqTest.__eq__  s    *a//r'   N)r*   r+   r,   r`   ra   r&   r  r  r-   r'   r%   
HashEqTestr    sL         FFF  # # #0 0 0 0 0r'   r  c                       e Zd Zd ZdS );TestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqNeTestc                 .    | j         |j         z
  dz  dk    S )Nr  r   rR  r  s     r%   __ne__zBTestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqNeTest.__ne__  s    *Q..r'   N)r*   r+   r,   r  r-   r'   r%   HashEqNeTestr    s#        / / / / /r'   r  c                      t          |           S r    )hashrR  s    r%   py_hashz6TestJitClassOverloads.test_hash_eq_ne.<locals>.py_hash  rK  r'   c                     | |k    S r    r-   r   s     r%   py_eqz4TestJitClassOverloads.test_hash_eq_ne.<locals>.py_eq      6Mr'   c                     | |k    S r    r-   r   s     r%   py_nez4TestJitClassOverloads.test_hash_eq_ne.<locals>.py_ne  r  r'   c                     | S r    r-   )r  s    r%   identity_decoratorzATestJitClassOverloads.test_hash_eq_ne.<locals>.identity_decorator  s    Hr'   ))r   r   )r   r  )r   r   )r   r   FT)r   r   r      ir   )r  r  r
   r   rJ   )r$   r  r  r  r  r  r  comparisonsbase_clsuse_jit	decorator	hash_funceq_funcne_funcr  r  r!   r"   s                     r%   test_hash_eq_nez%TestJitClassOverloads.test_hash_eq_ne  s$   
	0 
	0 
	0 
	0 
	0 
	0 
	0 
	0	/ 	/ 	/ 	/ 	/: 	/ 	/ 	/	 	 		 	 		 	 		 	 	
 
 
 "+!2&"
 "
 	 	Hg !(?-?I!	'**Ii&&Gi&&Gx((G' @ @  771::!6!6B????#  1  GGGAJJ

33HQKK88A;;.     GGGAJJ

33HQKK88A;;.   	 	r'   c                 n    G d d          }|} t          dt          j        fg          |          } |d                                          } |d                                          } |d                                          } |d                                          }|                     ||           |                     ||           |                     t          |          t          |                     |                     t          |          t          |                     d S )Nc                        e Zd Zd Zd Zd ZdS )BTestJitClassOverloads.test_bool_fallback_len.<locals>.NoBoolHasLenc                     || _         d S r    r   r   s     r%   r&   zKTestJitClassOverloads.test_bool_fallback_len.<locals>.NoBoolHasLen.__init__  r   r'   c                     | j         S r    r   r?   s    r%   r  zJTestJitClassOverloads.test_bool_fallback_len.<locals>.NoBoolHasLen.__len__  s	    xr'   c                      t          |           S r    r,  r?   s    r%   get_boolzKTestJitClassOverloads.test_bool_fallback_len.<locals>.NoBoolHasLen.get_bool      Dzz!r'   N)r*   r+   r,   r&   r  r  r-   r'   r%   NoBoolHasLenr	    sA               " " " " "r'   r  r   r   r   )r   r   int64r  rJ   r"  )r$   r  py_classjitted_classpy_class_0_boolpy_class_2_booljitted_class_0_booljitted_class_2_bools           r%   test_bool_fallback_lenz,TestJitClassOverloads.test_bool_fallback_len  s>   "	" 	" 	" 	" 	" 	" 	" 	"  7x%!5 677AA"(1++..00"(1++..00*l1oo6688*l1oo6688 	*=>>>*=>>> 	o..5H0I0IJJJo..5H0I0IJJJJJr'   c                 P    G d d          }|} t          g           |          } |                                            } |                                            }|                     ||           |                     t          |          t          |                     d S )Nc                       e Zd Zd Zd ZdS )ETestJitClassOverloads.test_bool_fallback_default.<locals>.NoBoolNoLenc                     d S r    r-   r?   s    r%   r&   zNTestJitClassOverloads.test_bool_fallback_default.<locals>.NoBoolNoLen.__init__  r_   r'   c                      t          |           S r    r,  r?   s    r%   r  zNTestJitClassOverloads.test_bool_fallback_default.<locals>.NoBoolNoLen.get_bool  r  r'   N)r*   r+   r,   r&   r  r-   r'   r%   NoBoolNoLenr    s2          " " " " "r'   r  )r   r  rJ   r"  )r$   r  r  r  py_class_booljitted_class_bools         r%   test_bool_fallback_defaultz0TestJitClassOverloads.test_bool_fallback_default  s    	" 	" 	" 	" 	" 	" 	" 	" #x||H-- 

++--(LNN3355 	(9::: 	m,,d3D.E.EFFFFFr'   c                 <    G d d          } G d d          }dt           j        fg} t          |          |          } t          |          |          } |d          } |d          } |d          } |d          }	|                     ||k    |	|k               |                     ||k    |	|k               |                     ||k     |	|k                |                     ||k    |	|k               |                     ||k    |	|k               d S )Nc                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )HTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefinedc                     || _         d S r    rR  rS  s     r%   r&   zQTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__init__  r[  r'   c                 "    | j         |j         k    S r    rR  r  s     r%   r  zOTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__eq__  r  r'   c                 "    | j         |j         k    S r    rR  r  s     r%   r  zOTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__le__  r  r'   c                 "    | j         |j         k     S r    rR  r  s     r%   r  zOTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__lt__  r  r'   c                 "    | j         |j         k    S r    rR  r  s     r%   r   zOTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__ge__"  r  r'   c                 "    | j         |j         k    S r    rR  r  s     r%   r  zOTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__gt__%  r  r'   N)	r*   r+   r,   r&   r  r  r  r   r  r-   r'   r%   OperatorsDefinedr#    sn          ) ) )) ) )( ( () ) )( ( ( ( (r'   r*  c                       e Zd Zd ZdS )JTestJitClassOverloads.test_operator_reflection.<locals>.NoOperatorsDefinedc                     || _         d S r    rR  rS  s     r%   r&   zSTestJitClassOverloads.test_operator_reflection.<locals>.NoOperatorsDefined.__init__)  r[  r'   Nr)   r-   r'   r%   NoOperatorsDefinedr,  (  s#            r'   r.  r!   r   r   )r   r	   r   rJ   )
r$   r*  r.  rM   JitOperatorsDefinedJitNoOperatorsDefinedpy_ops_definedpy_ops_not_definedjit_ops_definedjit_ops_not_defineds
             r%   test_operator_reflectionz.TestJitClassOverloads.test_operator_reflection  s   	( 	( 	( 	( 	( 	( 	( 	(&	 	 	 	 	 	 	 	 ek"#,htnn-=>> ./A B B))!,,//22--a0033A66+~=,?	A 	A 	A 	+~=,?	A 	A 	A 	+n<,>	@ 	@ 	@ 	+~=,?	A 	A 	A 	+n<,>	@ 	@ 	@ 	@ 	@r'   c                      G d d          } t          g           |          } |            }|                     ||k               d S )Nc                       e Zd Zd Zd ZdS )GTestJitClassOverloads.test_implicit_hash_compiles.<locals>.ImplicitHashc                     d S r    r-   r?   s    r%   r&   zPTestJitClassOverloads.test_implicit_hash_compiles.<locals>.ImplicitHash.__init__J  r_   r'   c                     dS )NFr-   r  s     r%   r  zNTestJitClassOverloads.test_implicit_hash_compiles.<locals>.ImplicitHash.__eq__M  s    ur'   N)r*   r+   r,   r&   r  r-   r'   r%   ImplicitHashr8  I  s2              r'   r;  )r   r   )r$   r;  jittedinstances       r%   test_implicit_hash_compilesz1TestJitClassOverloads.test_implicit_hash_compilesE  sk    	 	 	 	 	 	 	 	 "l++688X-.....r'   r    )r*   r+   r,   r  re  r  r   r#  rG  rY  r|  r  r  r  r  r   r5  r>  r-   r'   r%   r  r    s>       ,* ,* ,* ,* ,* ,* ,* ,*\   \: 4 4 \4l1 1 1 10< 0< 0<d($ ($ ($Ta' a' a'FDD DD DDLkH kH kHZ: : :x)K )K )KVG G G./@ /@ /@b/ / / / /r'   r  __main__)1r   r  rQ  rA  typingrb   unittestcollectionsr   numpyr   numbar   r   r   r   r   r	   r
   r   r   
numba.corer   r   numba.core.dispatcherr   numba.core.errorsr   r   numba.core.runtime.nrtr   numba.experimentalr   numba.experimental.jitclassr    numba.experimental.jitclass.baser   numba.tests.supportr   r   r   rA   r   r/   r8   r:   r  r*   mainr-   r'   r%   <module>rN     sh               # # # # # #    + + + + + + + + + + + + + + + + + + + + + + $ $ $ $ $ $ $ $ , , , , , , 8 8 8 8 8 8 8 8 * * * * * * ' ' ' ' ' ' , , , , , , 9 9 9 9 9 9 L L L L L L L L L L                i2 i2 i2 i2 i28_ i2 i2 i2X#x
/ x
/ x
/ x
/ x
/OX x
/ x
/ x
/v zHMOOOOO r'   