
    sh?                        S SK r S SKrS SKrS SKrS SKrS SKrS SKJr  S SK	r
S SKJrJrJrJrJrJrJrJrJr  S SKJrJr  S SKJr  S SKJrJr  S SKJr  S SKJ r   S S	K!J"r"  S S
K#J$r$  S SK%J&r&J'r'J(r(  S SK%J)r)   " S S\*5      r+ " S S\*5      r,S r- " S S\'\&5      r. " S S\&\'5      r/\0S:X  a  \Rb                  " 5         gg)    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_typeguard)skip_unless_scipyc                   &    \ rS rSrSSS.S jjrSrg)
TestClass1      ac                4    Xl         X l        X0l        X@l        g N)xyzr   )selfr"   r#   r$   r   s        o/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_jitclasses.py__init__TestClass1.__init__   s        )r   r"   r#   r$   N   __name__
__module____qualname____firstlineno__r'   __static_attributes__ r)   r&   r   r      s    q  r)   r   c                   &    \ rS rSrSSS.S jjrSrg)
TestClass2    r   r   c                @    Xl         X l        X0l        XPl        X@l        g r!   )r"   r#   r$   argsr   )r%   r"   r#   r$   r   r7   s         r&   r'   TestClass2.__init__!   s    	r)   )r   r7   r"   r#   r$   Nr*   r,   r2   r)   r&   r4   r4       s    1  r)   r4   c                 h    [         R                  " U 5      n[        U5      nUR                  5         U$ r!   )r   box_get_meminfoptrr   acquire)boxptrmis      r&   _get_meminfor?   )   s)    

!
!#
&C	BJJLIr)   c                   0   \ rS rSrS1S jrS rS rS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\S 5       rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0r2g)2TestJitClass0   Nc                 D   Uc  [        U5       " S S[        5      5       nUnUR                  R                  n[	        UR
                  R                  5       5      n[	        UR
                  R                  5       5      nUc(  [        U[        5      (       a  UR                  5       nOUnUc   eU R                  [        U5      [        U5      5        [        [        Xg5      U5       H5  u  pU R                  US   U	S   5        U R                  US   U	S   5        M7     g )Nc                       \ rS rSrS rSrg)&TestJitClass._check_spec.<locals>.Test4   c                     g r!   r2   r%   s    r&   r'   /TestJitClass._check_spec.<locals>.Test.__init__7   s    r)   r2   Nr,   r2   r)   r&   TestrE   4   s    r)   rJ   r   r+   )r   object
class_typeinstance_typeliststructkeysvalues
isinstancer   itemsassertEquallenzip)
r%   spectest_clsall_expectedrJ   clstynamesrQ   gotexpecteds
             r&   _check_specTestJitClass._check_spec2   s    d^v   H##11U\\&&()ell))+,$,,#zz|#'''US%67 U!3\BMCSVXa[1SVXa[1 Cr)   c                 ^    [        5       n[        US'   [        US'   U R                  U5        g Nr"   r#   )r   r	   r   r^   r%   rW   s     r&   test_ordereddict_spec"TestJitClass.test_ordereddict_specL   s)    }S	S	r)   c                 F    S[         4S[        4/nU R                  U5        g ra   )r	   r   r^   rb   s     r&   test_list_specTestJitClass.test_list_specR   s%    eg r)   c           	          S[         4/n[        U5       " S S[        5      5       nU R                  XUS[        R
                  " [        5      4/-   5        g )Nr"   c                   J    \ rS rSr% \\S'   \R                  \   \S'   S r	Sr
g)1TestJitClass.test_type_annotations.<locals>.Test1Z   r"   r#   c                     g r!   r2   rH   s    r&   r'   :TestJitClass.test_type_annotations.<locals>.Test1.__init___       r)   r2   N)r-   r.   r/   r0   int__annotations__ptListfloatr'   r1   r2   r)   r&   Test1rj   Z   s    Fwwu~r)   rt   r#   )r	   r   rK   r^   r   ListTyper   )r%   rW   rt   s      r&   test_type_annotations"TestJitClass.test_type_annotationsW   sR    e~	$	F 	 
	 	dsENN74K.L-M&MNr)   c                      " S S5      n[          " S SU5      5       nU R                  US[        S5      4S[        S5      4/S	9  g )
Nc                        \ rS rSr% \\S'   Srg):TestJitClass.test_type_annotation_inheritance.<locals>.Foof   r"   r2   N)r-   r.   r/   r0   ro   rp   r1   r2   r)   r&   Foorz   f   s    Fr)   r|   c                   2    \ rS rSr% \\S'   S\SS4S jrSrg):TestJitClass.test_type_annotation_inheritance.<locals>.Bari   r#   valuereturnNc                 0    [        U5      U l        Xl        g r!   )ro   r"   r#   r%   r   s     r&   r'   CTestJitClass.test_type_annotation_inheritance.<locals>.Bar.__init__m   s    Ur)   r"   r#   r-   r.   r/   r0   rs   rp   r'   r1   r2   r)   r&   Barr~   i   s    He  r)   r   r"   r   r#           )rX   rY   )r   r^   r   )r%   r|   r   s      r&    test_type_annotation_inheritance-TestJitClass.test_type_annotation_inheritanced   sX    	 	 
	# 	 
	 	fQi(83s:L'M 	 	
r)   c                    S[         4S[        S S  4/nS[        4S[        S S  4/n " S S[        5      nU R	                  [
        5       n[        X15        S S S 5        U R                  S[        WR                  5      5        U R	                  [
        5       n[        X25        S S S 5        U R                  [        UR                  5      S5        g ! , (       d  f       N= f! , (       d  f       NE= f)Nr"   r#   r+   c                       \ rS rSrS rSrg)+TestJitClass.test_spec_errors.<locals>.Testy   c                     g r!   r2   rH   s    r&   r'   4TestJitClass.test_spec_errors.<locals>.Test.__init__{   rn   r)   r2   Nr,   r2   r)   r&   rJ   r   y       r)   rJ   z*spec values should be Numba type instancesz"spec keys should be strings, got 1)ro   r   r	   rK   assertRaises	TypeErrorr   assertInstr	exceptionrT   )r%   spec1spec2rJ   raisess        r&   test_spec_errorsTestJitClass.test_spec_errorsu   s    sc71:./Uc71:./	6 	
 y)VT! *B&**+	-y)VT! *V--.=	? *) *)s   CC$
C!$
C2c                     [        / 5       " S S5      5       nU R                  [        R                  5       nU" 5         S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                       \ rS rSrS rSrg)+TestJitClass.test_init_errors.<locals>.Test   c                     gN   r2   rH   s    r&   r'   4TestJitClass.test_init_errors.<locals>.Test.__init__       r)   r2   Nr,   r2   r)   r&   rJ   r      s    r)   rJ   z"__init__() should return None, not)r   r   r   r   r   r   r   )r%   rJ   r   s      r&   test_init_errorsTestJitClass.test_init_errors   sg    	"	 	 
	 v112fF 3 	:&**+	- 32s   A..
A<c                     [        5       n[        US'   [        US'   [        S S  US'   [        U5       " S S[        5      5       nU$ )Nr"   r#   arrc                        \ rS rSrS rS rSrg)9TestJitClass._make_Float2AndArray.<locals>.Float2AndArray   c                 (    Xl         X l        X0l        g r!   r"   r#   r   )r%   r"   r#   r   s       r&   r'   BTestJitClass._make_Float2AndArray.<locals>.Float2AndArray.__init__   s    r)   c                 Z    U =R                   U-  sl         U =R                  U-  sl        U$ r!   r   r%   vals     r&   add=TestJitClass._make_Float2AndArray.<locals>.Float2AndArray.add   s!    ##
r)   )r   r"   r#   N)r-   r.   r/   r0   r'   r   r1   r2   r)   r&   Float2AndArrayr      s    
r)   r   )r   r   r   rK   )r%   rW   r   s      r&   _make_Float2AndArray!TestJitClass._make_Float2AndArray   sM    }S	S	ajU	$
	V 
	 

	 r)   c                 x    [        5       n[        US'   [        US'   [        U5       " S S[        5      5       nU$ )Nr"   r#   c                       \ rS rSrS rSrg)+TestJitClass._make_Vector2.<locals>.Vector2   c                     Xl         X l        g r!   r   )r%   r"   r#   s      r&   r'   4TestJitClass._make_Vector2.<locals>.Vector2.__init__   s    r)   r   Nr,   r2   r)   r&   Vector2r      s    r)   r   )r   r	   r   rK   )r%   rW   r   s      r&   _make_Vector2TestJitClass._make_Vector2   s?    }S	S		$	f 	 
	 r)   c                 J  ^^^ U R                  5       mU R                  5       m[        S 5       m[        UUU4S j5       n[        R                  " S[        R
                  S9nU" U5      u  p4nU R                  US5        U R                  US5        U R                  XR5        g )Nc                 4    U R                   U R                  -   $ r!   r   objs    r&   bar*TestJitClass.test_jit_class_1.<locals>.bar   s    55355= r)   c                    > T" SSU 5      nUR                  S5        T" SS5      nT" U5      T" U5      UR                  4$ )Nr+      {         )r   r   )r   r   vecr   r   r   s      r&   foo*TestJitClass.test_jit_class_1.<locals>.foo   s@     Aq)CGGCL!Q-Cs8SXsww..r)   
   dtype   r   )r   r   r
   nponesr   rT   assertPreciseEqual)	r%   r   inpr   bcr   r   r   s	         @@@r&   test_jit_class_1TestJitClass.test_jit_class_1   s    224$$&		! 
	! 
	/ 
	/ ggb

+c(a-.E"'r)   c                 ,   U R                  5       n[        S 5       n[        S 5       n[        R                  " S[        R                  S9nU" SSU5      n[        U5      nU R                  UR                  S5        U R                  UR                  [        R                  " U5      5        U R                  UR                  R                  UR                  5        U" U5      n[        U5      nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  [        R                  " U5      5        U R                  UR                  UR                  5        AAU R                  UR                  S5        U" U5      u  pnU R                  U	S5        U R                  U
S5        U R                  X5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                   U5        U R                  UR#                  S5      S5        U R                  UR                  S	5        U R                  UR                  S
5        SUl        SUl        [        R                  " S[        R                  S9=Ul        nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                   U5        g )Nc                     U $ r!   r2   r   s    r&   identity>TestJitClass.test_jitclass_usage_from_python.<locals>.identity   s    Jr)   c                 H    U R                   U R                  U R                  4$ r!   r   r   s    r&   retrieve_attributesITestJitClass.test_jitclass_usage_from_python.<locals>.retrieve_attributes   s    55#%%((r)   r   r   r+   r   r   r   |   }   iM  i  r   )r   r
   r   aranger   r?   rT   refcountdatar   box_get_dataptr_numba_type_rL   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_python,TestJitClass.test_jitclass_usage_from_python   s{   224		 
	 
	) 
	) ii"**-Q3'"3'--q1))4+?+?+DE))44'22	4 $U+--q1//3++T-A-A%-HI++[-=-=> =--q1 !4C 8g""g# 	""cggs# 	s+(( 99Qbjj99&$$cggv&r)   c                     [        5       n[        US'   [        U5       " S S[        5      5       nU R	                  U" S5      R
                  5        U R                  U" S5      R
                  5        g )Nr   c                       \ rS rSrS rSrg)2TestJitClass.test_jitclass_datalayout.<locals>.Fooi  c                     Xl         g r!   r   r   s     r&   r'   ;TestJitClass.test_jitclass_datalayout.<locals>.Foo.__init__      r)   r   Nr,   r2   r)   r&   r|   r     s    r)   r|   TF)r   r   r   rK   
assertTruer   assertFalse)r%   rW   r|   s      r&   test_jitclass_datalayout%TestJitClass.test_jitclass_datalayout  s[    }U	$	& 	 
	
 	D	&U(r)   c                   ^	 [        5       n[        5       n[        US'   [        U5      US'   [        S 5       m	[        U5       " U	4S jS[        5      5       nUR                  UR                  R                  5        U" SS 5      nU R                  UR                  S5        U R                  UR                  5        U" SU5      n[        U5      n[        U5      nU R                  UR                  S5        U R                  UR                  R                  UR                  5        U R                  UR                  S5        U R                  UR                  S	5        UR!                  5       nU R                  XR                  5        U R                  UR                  5        UR#                  U" S
S 5      5        U R%                  UR                  5        U R                  UR                  R                  S
5        U R                  UR                  R                  5        UR#                  U" SS 5      5        U R%                  UR                  R                  5        U R                  UR                  R                  R                  S5        U R                  UR                  S5        AAU R                  UR                  S	5        g )Nr   nextc                     U R                   $ r!   r   )nodes    r&   get_data1TestJitClass.test_deferred_type.<locals>.get_data  s    99r)   c                   .   > \ rS rSrS rU 4S jrS rSrg)3TestJitClass.test_deferred_type.<locals>.LinkedNodei  c                     Xl         X l        g r!   r   r   )r%   r   r   s      r&   r'   <TestJitClass.test_deferred_type.<locals>.LinkedNode.__init__  s     	 	r)   c                 (   > T" U R                   5      $ r!   r   )r%   r  s    r&   get_next_dataATestJitClass.test_deferred_type.<locals>.LinkedNode.get_next_data#  s    		**r)   c                 d    U nUR                   b  UR                   nUR                   b  M  Xl         g r!   r
  )r%   r   curs      r&   append_to_tailBTestJitClass.test_deferred_type.<locals>.LinkedNode.append_to_tail'  s+    hh*((C hh* r)   r  N)r-   r.   r/   r0   r'   r  r  r1   )r  s   r&   
LinkedNoder    s    !+!r)   r  r   A  r   r   7  i  )r   r   r   r   r
   r   rK   definerL   rM   rT   r   assertIsNoner   r?   r   r  r  assertIsNotNone)
r%   	node_typerW   r  firstsecondfirst_meminfosecond_meminfo	first_valr  s
            @r&   test_deferred_typeTestJitClass.test_deferred_type  s.   !O	}V	*V		 
	 
$	! 	! 
	!  	..<<=3%S)%**%C'$U+%f-//3))5::6//300!4 ((*	JJ/ 	%**%jd34UZZ(#.%**//*jd34UZZ__---s3 	//3N//3r)   c                 b   [        5       n[        US'   [        US'   [        US'   [	        U5       " S S[
        5      5       nU" SSS5      n " S	 S
[        R                  5      n[        R                  " [        R                  " U5      5      n[        R                  " U[        R                  " U5      5      S   nU R                  UR                  UR                  5        U R                  UR                  UR                  5        U R                  UR                   UR                   5        g )Nr   r   r   c                       \ rS rSrS rSrg)-TestJitClass.test_c_structure.<locals>.StructiU  c                 (    Xl         X l        X0l        g r!   r   r   r   )r%   r   r   r   s       r&   r'   6TestJitClass.test_c_structure.<locals>.Struct.__init__X      r)   r#  Nr,   r2   r)   r&   Structr!  U  s    r)   r&  iͫ     o!	@c                   f    \ rS rSrS\R
                  4S\R                  4S\R                  4/rSr	g).TestJitClass.test_c_structure.<locals>.CStructi_  r   r   r   r2   N)
r-   r.   r/   r0   ctypesc_int32c_int16c_double_fields_r1   r2   r)   r&   CStructr*  _  s-    fnn%fnn%foo&Hr)   r0  r   )r   r	   r   r   r   rK   r+  	Structurec_void_pr   r   castPOINTERrT   r   r   r   )r%   rW   r&  str0  r=   cstructs          r&   test_c_structureTestJitClass.test_c_structureO  s    }S	S	S		$	V 	 
	 FD&)	f&& 	 ood22267++c6>>'#:;A>BDD)BDD)BDD)r)   c                    U R                  5       nU" SS5      n[        S 5       nU R                  [        5       nU" X"5        S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nr+   r   c                     XL $ r!   r2   r   r   s     r&   do_is#TestJitClass.test_is.<locals>.do_isp  s	    6Mr)   zno default `is` implementation)r   r
   r   r   r   r   r   )r%   Vectorvec_ar<  r   s        r&   test_isTestJitClass.test_isl  sq    ##%q!		 
	 }-% . 	6F<L<L8MN .-s   	A22
B c                 X    U R                  5       nU" SS5      nU R                  X!5        g Nr+   r   )r   assertIsInstance)r%   r   r   s      r&   test_isinstanceTestJitClass.test_isinstancey  s)    $$&amc+r)   c                     U R                  5       nU R                  [        5       n " S SU5      nS S S 5        U R                  [	        WR
                  5      S5        g ! , (       d  f       N4= f)Nc                       \ rS rSrSrg)+TestJitClass.test_subclassing.<locals>.SubVi  r2   N)r-   r.   r/   r0   r1   r2   r)   r&   SubVrI    s    r)   rJ  zcannot subclass from a jitclass)r   r   r   rT   r   r   )r%   r   r   rJ  s       r&   test_subclassingTestJitClass.test_subclassing~  sZ    $$&y)Vw  * 	V--.:	< *)s   A  
A.c                      " S S[         5      n[        S[        4/5       " S SU5      5       nU" S5      nU R                  UR	                  5       S5        g )Nc                       \ rS rSrS rSrg)*TestJitClass.test_base_class.<locals>.Basei  c                     U R                   $ r!   attrrH   s    r&   what/TestJitClass.test_base_class.<locals>.Base.what  s    yy r)   r2   N)r-   r.   r/   r0   rS  r1   r2   r)   r&   BaserO    s    !r)   rU  rR  c                       \ rS rSrS rSrg)*TestJitClass.test_base_class.<locals>.Testi  c                     Xl         g r!   rQ  r%   rR  s     r&   r'   3TestJitClass.test_base_class.<locals>.Test.__init__       	r)   rQ  Nr,   r2   r)   r&   rJ   rW    s    !r)   rJ   r   )rK   r   r	   rT   rS  )r%   rU  rJ   r   s       r&   test_base_classTestJitClass.test_base_class  sV    	!6 	!
 
FE?#	$	!4 	! 
%	!
 3iS)r)   c                      " S S[         5      nU R                  [        5       n[        U5        S S S 5        U R	                  [        WR                  5      S5        g ! , (       d  f       N4= f)Nc                       \ rS rSrSrS rSrg)'TestJitClass.test_globals.<locals>.Minei  r   c                     g r!   r2   rH   s    r&   r'   0TestJitClass.test_globals.<locals>.Mine.__init__  rn   r)   r2   N)r-   r.   r/   r0   constantr'   r1   r2   r)   r&   Miner`    s    Hr)   rd  z-class members are not yet supported: constantrK   r   r   r   rT   r   r   )r%   rd  r   s      r&   test_globalsTestJitClass.test_globals  sV    	6 	 y)VTN * 	V--.H	J *)   A
A-c                    [        S[        4/5       " S S[        5      5       nU" S5      nU R                  UR                  S5        U R                  UR
                  S5        SUl        U R                  UR                  S5        U R                  UR
                  S5        [        S 5       nU" US	5      u  pEnU R                  US5        U R                  US	5        U R                  US
5        g )NrR  c                   N    \ rS rSrS r\S 5       r\R                  S 5       rSrg)1TestJitClass.test_user_getter_setter.<locals>.Fooi  c                     Xl         g r!   rQ  rY  s     r&   r'   :TestJitClass.test_user_getter_setter.<locals>.Foo.__init__  r[  r)   c                      U R                   S-   $ Nr+   rQ  rH   s    r&   r   7TestJitClass.test_user_getter_setter.<locals>.Foo.value  s    yy1}$r)   c                     US-
  U l         g ro  rQ  r   s     r&   r   rp    s    !G	r)   rQ  N)	r-   r.   r/   r0   r'   propertyr   setterr1   r2   r)   r&   r|   rk    s3    ! % % \\$ $r)   r|   r   r   i  i  c                 ^    U R                   nXl         U R                   nU R                  nX#U4$ r!   )r   rR  )r   r   r   r   r   s        r&   r   1TestJitClass.test_user_getter_setter.<locals>.bar  s+    		AI		AA7Nr)   r  i6  )r   r	   rK   rT   rR  r   r
   )r%   r|   r   r   r   r   r   s          r&   test_user_getter_setter$TestJitClass.test_user_getter_setter  s    	FE?#	$	$& 	$ 
%	$ #h3'G,	7+C( 
	 
	 c3-aC C G$r)   c                      " S S[         5      nU R                  [        5       n[        U5        S S S 5        U R	                  [        WR                  5      S5        g ! , (       d  f       N4= f)Nc                   N    \ rS rSrS r\S 5       r\R                  S 5       rSrg)1TestJitClass.test_user_deleter_error.<locals>.Fooi  c                     g r!   r2   rH   s    r&   r'   :TestJitClass.test_user_deleter_error.<locals>.Foo.__init__  rn   r)   c                     gro  r2   rH   s    r&   r   7TestJitClass.test_user_deleter_error.<locals>.Foo.value  s    r)   c                     g r!   r2   rH   s    r&   r   r~        r)   r2   N)	r-   r.   r/   r0   r'   rr  r   deleterr1   r2   r)   r&   r|   rz    s3       ]] r)   r|   zdeleter is not supported: valuere  r%   r|   r   s      r&   test_user_deleter_error$TestJitClass.test_user_deleter_error  sS    	& 	 y)VSM *V--.:	< *)rh  c                     " S S[         5      nU R                  [        5       n[        US[        4/5        S S S 5        U R                  [        WR                  5      S5        U R                  [        5       n[        US[        4/5        S S S 5        U R                  [        UR                  5      S5        g ! , (       d  f       N= f! , (       d  f       NE= f)Nc                   0    \ rS rSrS r\S 5       rS rSrg)3TestJitClass.test_name_shadowing_error.<locals>.Fooi  c                     g r!   r2   rH   s    r&   r'   <TestJitClass.test_name_shadowing_error.<locals>.Foo.__init__  rn   r)   c                     g r!   r2   rH   s    r&   my_property?TestJitClass.test_name_shadowing_error.<locals>.Foo.my_property  r  r)   c                     g r!   r2   rH   s    r&   	my_method=TestJitClass.test_name_shadowing_error.<locals>.Foo.my_method  rn   r)   r2   N)	r-   r.   r/   r0   r'   rr  r  r  r1   r2   r)   r&   r|   r    s       r)   r|   r  zname shadowing: my_propertyr  zname shadowing: my_method)rK   r   	NameErrorr   r	   rT   r   r   r  s      r&   test_name_shadowing_error&TestJitClass.test_name_shadowing_error  s    
	& 
	 y)VSM5123 *V--.0MNy)VSK/01 *V--.0KL *) *)s   B=;C=
C
Cc                    [        S[        4/5       " S S[        5      5       nUn[        S[        4/5       " S S[        5      5       nUnU" S5      nU R                  UR                  S5        U R                  UR                  5       S5        U" S5      nU R                  UR                  S5        U R                  UR                  5       S	5        g )
Nr"   c                        \ rS rSrS rS rSrg)/TestJitClass.test_distinct_classes.<locals>.Fooi  c                     US-   U l         g Nr   r"   r%   r"   s     r&   r'   8TestJitClass.test_distinct_classes.<locals>.Foo.__init__      Qr)   c                      U R                   S-   $ ro  r  rH   s    r&   run3TestJitClass.test_distinct_classes.<locals>.Foo.run      vvz!r)   r  Nr-   r.   r/   r0   r'   r  r1   r2   r)   r&   r|   r        "r)   r|   c                        \ rS rSrS rS rSrg)r  i  c                     US-
  U l         g r  r  r  s     r&   r'   r    r  r)   c                      U R                   S-
  $ ro  r  rH   s    r&   r  r    r  r)   r  Nr  r2   r)   r&   r|   r    r  r)   r   r      r   r   )r   r	   rK   rT   r"   r  )r%   r|   FirstFoo	SecondFoor   s        r&   test_distinct_classes"TestJitClass.test_distinct_classes  s    	C<.	!	"& 	" 
"	" 	C<.	!	"& 	" 
"	" 	qk"A&l"A&r)   c                   ^  " S S[         5      mU4S jnU" S5      nU R                  UR                  S5        U" S5      nU R                  UR                  S5        U" [        R                  " S/5      5      n[        R
                  R                  UR                  S/5        U" [        R                  " S/5      5      n[        R
                  R                  UR                  S/5        g )Nc                       \ rS rSrS rSrg)0TestJitClass.test_parameterized.<locals>.MyClassi  c                     Xl         g r!   r   r   s     r&   r'   9TestJitClass.test_parameterized.<locals>.MyClass.__init__      "
r)   r  Nr,   r2   r)   r&   MyClassr    s    #r)   r  c                 D   > [        TS[        U 5      4/5      nU" U 5      $ )Nr   )r   r   )r   clsr  s     r&   create_my_class8TestJitClass.test_parameterized.<locals>.create_my_class  s%    7gve}%=$>?Cu:r)   r   g(@)rK   rT   r   r   arraytestingassert_equal)r%   r  r   r   r   dr  s         @r&   test_parameterizedTestJitClass.test_parameterized  s    	#f 	#
	 C #&D!$'BHHcUO,


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


$0r)   c                    [         [        [         [         S.n[        U5       " S S[        5      5       nSnU" U5      nU R	                  UR
                  U5        U R	                  UR                  US-  5        U R	                  UR                  US-  5        U R	                  UR                  UR                  5        UR                  nU=R                  S-  sl        U R	                  UR                  US-
  5        U R	                  UR                  S5      US-  5        U R	                  UR                  US-  5      S5        U R	                  UR                  S5      UR                  S-  5        U R	                  UR                  S5      UR                  S-  5        U R	                  UR                  US-
  5        U=R                  S	-  sl        U R	                  UR                  US
-
  5        [        S 5       nU R                  [        R                   5       nU" U5        S S S 5        U R#                  S[%        WR&                  5      5        U R                  [(        5       nUR+                  U5        S S S 5        U R#                  S[%        UR&                  5      5        g ! , (       d  f       N= f! , (       d  f       NE= f)N)r   _value__value	__value__c                       \ rS rSrS r\S 5       r\S 5       r\R                  S 5       r\S 5       r	\	R                  S 5       r	S r
S	 rS
 rS rSrg)2TestJitClass.test_protected_attrs.<locals>.MyClassi-  c                 L    Xl         US-  U l        US-  U l        US-
  U l        g )Nr   r+   )r   r  _MyClass__valuer  r   s     r&   r'   ;TestJitClass.test_protected_attrs.<locals>.MyClass.__init__0  s(    "
#ai$qy!&r)   c                     U R                   $ r!   r  rH   s    r&   private_value@TestJitClass.test_protected_attrs.<locals>.MyClass.private_value6      ||#r)   c                     U R                   $ r!   r  rH   s    r&   _inner_value?TestJitClass.test_protected_attrs.<locals>.MyClass._inner_value:  s    {{"r)   c                     Xl         g r!   r  r%   vs     r&   r  r  >  s    r)   c                     U R                   $ r!   r  rH   s    r&   __private_valueBTestJitClass.test_protected_attrs.<locals>.MyClass.__private_valueB  r  r)   c                     Xl         g r!   r  r  s     r&   r  r  F  s     r)   c                 *    U R                   nXl         U$ r!   )_MyClass__private_value)r%   newolds      r&   swap_private_valueETestJitClass.test_protected_attrs.<locals>.MyClass.swap_private_valueJ  s    **'*$
r)   c                      U R                   U-  $ r!   r  r%   factors     r&   _protected_methodDTestJitClass.test_protected_attrs.<locals>.MyClass._protected_methodO  s    {{V++r)   c                      U R                   U-  $ r!   r  r  s     r&   __private_methodCTestJitClass.test_protected_attrs.<locals>.MyClass.__private_methodR  s    ||f,,r)   c                 $    U R                  U5      $ r!   )_MyClass__private_methodr  s     r&   check_private_methodGTestJitClass.test_protected_attrs.<locals>.MyClass.check_private_methodU  s    ,,V44r)   )r  r  r  r  r   N)r-   r.   r/   r0   r'   rr  r  r  rs  r  r  r  r  r  r1   r2   r)   r&   r  r  -  s    + $ $ # #     !  $ $ ##! $!
,-5r)   r  r   r   r+   r  r   d   e   c                     U R                   $ r!   )_TestJitClass__value)insts    r&   access_dunder8TestJitClass.test_protected_attrs.<locals>.access_dundero  s    <<r)   r  )r	   r   r   rK   rT   r   r  r  r  r  r  r  r  r
   r   r   r   r   r   r   AttributeErrorpy_func)r%   rW   r  r   r  freeze_inst_valuer  r   s           r&   test_protected_attrs!TestJitClass.test_protected_attrs%  sE   	
 
$(	5f (	5 
(	5T u~U+eai0++UQY7**DKK8 KKQ**,=,AB005uqyA00;SA//2DKK!OD2215t7I7IA7MN3#5 
	  
	  v112f$ 3 	,c&2B2B.CD~.&!!$' /,c&2B2B.CD 32 /.s   !	J,,J=,
J:=
Kc                     SSK Jn  S[        0n[        X5      nU" S5      nU R	                  UR
                  S5        U R	                  UR                  S5      S5        g)z=
Methods with annotations should compile fine (issue #1911).
r+   )AnnotatedClassr"   r   r   r   N)annotation_usecasesr  r	   r   rT   r"   r   )r%   r  rW   r  r   s        r&   test_annotationsTestJitClass.test_annotations}  sO    
 	8U|~,!f"Q'r)   c                 P   [          " S S[        5      5       nU R                  UR                  S5        U R                  UR                  R                  S5        U R                  UR
                  R                  S5        U R                  UR                  R                  S5        g )Nc                   4    \ rS rSrSrS rS r\S 5       rSr	g)*TestJitClass.test_docstring.<locals>.Applei  Class docstringc                     g)init docstringNr2   rH   s    r&   r'   3TestJitClass.test_docstring.<locals>.Apple.__init__      r)   c                     g)foo method docstringNr2   rH   s    r&   r   .TestJitClass.test_docstring.<locals>.Apple.foo  r  r)   c                     g)aval property docstringNr2   rH   s    r&   aval/TestJitClass.test_docstring.<locals>.Apple.aval  r  r)   r2   N)
r-   r.   r/   r0   __doc__r'   r   rr  r  r1   r2   r)   r&   Appler    s#    !' * *r)   r  r  r  r  r  )r   rK   rT   r  r'   r   r  )r%   r  s     r&   test_docstringTestJitClass.test_docstring  s    		*F 	* 
	* 	(9://1AB**,BC++-FGr)   c                     S[         4S[        4/n[        U5       " S S[        5      5       nSnSnSnXES.nU" S	SS0UD6nU R	                  UR
                  X4-  5        U R	                  UR                  U5        g )
Nr   r   c                       \ rS rSrS rSrg)+TestJitClass.test_kwargs.<locals>.TestClassi  c                 "    X-  U l         X0l        g r!   r;  r%   r"   r#   r$   s       r&   r'   4TestJitClass.test_kwargs.<locals>.TestClass.__init__  s    r)   r;  Nr,   r2   r)   r&   	TestClassr    s    r)   r  r   g?)r#   r$   r"   r2   )r	   r   r   rK   rT   r   r   )r%   rW   r  r"   r#   r$   kwargstcs           r&   test_kwargsTestJitClass.test_kwargs  s    eg  
$	 	 
	
 !%%f%qu%q!r)   c                    S[         4S[         4S[         4/n[        U5       " S S[        5      5       nU" SSS5      nU R                  UR                  S5        U R                  UR
                  S5        U R                  UR                  S5        U" SS5      nU R                  UR                  S5        U R                  UR
                  S5        U R                  UR                  S5        U" SS	SS
9nU R                  UR                  S5        U R                  UR
                  S5        U R                  UR                  S	5        g )Nr"   r#   r$   c                       \ rS rSrSS jrSrg)1TestJitClass.test_default_args.<locals>.TestClassi  c                 (    Xl         X l        X0l        g r!   r"   r#   r$   r  s       r&   r'   :TestJitClass.test_default_args.<locals>.TestClass.__init__  r%  r)   r  Nr*   r,   r2   r)   r&   r  r    s    r)   r  r+   r   r   r   )r#   r$   r"   )r	   r   rK   rT   r"   r#   r$   r%   rW   r  r  s       r&   test_default_argsTestJitClass.test_default_args  s   eee 
$	 	 
	 q!Qq!q!q!q!_q!q!q!a1%q!q!q!r)   c                 "   S[         4S[         4S[         4S[         4/n[        [        U5      nU" SS5      nU R                  UR                  S5        U R                  UR
                  S5        U R                  UR                  S5        U R                  UR                  S5        U" S	SS
SS9nU R                  UR                  S5        U R                  UR
                  S	5        U R                  UR                  S5        U R                  UR                  S
5        U" S	SS
S9nU R                  UR                  S5        U R                  UR
                  S	5        U R                  UR                  S5        U R                  UR                  S
5        U" S	SS9nU R                  UR                  S5        U R                  UR
                  S	5        U R                  UR                  S5        U R                  UR                  S5        g )Nr"   r#   r$   r   r   r   r+   r   r   *   r  )r#   r"   r   r$   )r#   r"   r   )r#   r"   )r	   r   r   rT   r"   r#   r$   r   r  s       r&   test_default_args_keyonly&TestJitClass.test_default_args_keyonly  s   eeee
 Z.	q!_q!q!q!q!a2-q!q!s#r"a2&q!q!q!r"a q!q!q!q!r)   c                 X   S[         4S[         4S[         4S[        R                  " [         S5      4S[         4/nU R                  [        R
                  5       n[        [        U5        S S S 5        SnU R                  U[        WR                  5      5        g ! , (       d  f       N6= f)Nr"   r#   r$   r7   r   r   z(VAR_POSITIONAL argument type unsupported)r	   r   UniTupler   r   UnsupportedErrorr   r4   r   r   r   )r%   rW   r   msgs       r&   &test_default_args_starargs_and_keyonly3TestJitClass.test_default_args_starargs_and_keyonly  s    eeeq12e	 v6676Z& 8 9c3v//01	 87s   B
B)c                     / n[        U5       " S S[        5      5       nS n[        S5       HC  n[        U" U5      U" 5       R	                  U5      5       H  u  pVU R                  XV5        M     ME     g )Nc                        \ rS rSrS rS rSrg)5TestJitClass.test_generator_method.<locals>.TestClassi  c                     g r!   r2   rH   s    r&   r'   >TestJitClass.test_generator_method.<locals>.TestClass.__init__  rn   r)   c              3   `   #    [        U5       H  n[        R                  " U5      v   M     g 7fr!   ranger   r   )r%   niteris      r&   gen9TestJitClass.test_generator_method.<locals>.TestClass.gen  s!     uA))A,& &   ,.r2   N)r-   r.   r/   r0   r'   r3  r1   r2   r)   r&   r  r+    s    'r)   r  c              3   `   #    [        U 5       H  n[        R                  " U5      v   M     g 7fr!   r/  )r1  r2  s     r&   expected_gen8TestJitClass.test_generator_method.<locals>.expected_gen  s!     5\iil" "r5  r   )r   rK   r0  rV   r3  r   )r%   rW   r  r7  r1  expectr\   s          r&   test_generator_method"TestJitClass.test_generator_method  sk    	$	' 	' 
	'	# 2YE"<#6	8NO''4  P r)   c                 2  ^ S[         S S  4/n[        U5       " S S[        5      5       m[        U4S j5       n[        S 5       nU" 5       nU R	                  U" US5      S5        U R	                  U" US5      S5        U R	                  U" US5      S5        g )	Nr   c                   &    \ rS rSrS rS rS rSrg),TestJitClass.test_getitem.<locals>.TestClassi  c                 T    [         R                  " S[         R                  S9U l        g Nr   r   r   zerosr	   r   rH   s    r&   r'   5TestJitClass.test_getitem.<locals>.TestClass.__init__      HHRrxx8	r)   c                      X R                   U'   g r!   r   r%   keyr   s      r&   __setitem__8TestJitClass.test_getitem.<locals>.TestClass.__setitem__      !%		#r)   c                      U R                   U   $ r!   r   r%   rG  s     r&   __getitem__8TestJitClass.test_getitem.<locals>.TestClass.__getitem__      yy~%r)   r   Nr-   r.   r/   r0   r'   rH  rM  r1   r2   r)   r&   r  r>        9&&r)   r  c                  4   > T" 5       n SU S'   SU S'   SU S'   U $ )Nr+   r   r   r2   )tr  s    r&   create_and_set_indices9TestJitClass.test_getitem.<locals>.create_and_set_indices  s*    AAaDAaDAaDHr)   c                 
    X   $ r!   r2   )rS  ns     r&   	get_index,TestJitClass.test_getitem.<locals>.get_index$  s	    4Kr)   r+   r   r   r	   r   rK   r
   rT   )r%   rW   rT  rX  rS  r  s        @r&   test_getitemTestJitClass.test_getitem  s    q"#	$	& 	& 
	& 
	 
	 
	 
	 #$1a!,1a!,1a!,r)   c                     S[         S S  4/n[        U5       " S S[        5      5       nU" 5       nSUS'   [        S 5       nU" U5      nU R	                  US5        U R	                  US   S5        g )	Nr   c                   &    \ rS rSrS rS rS rSrg)2TestJitClass.test_getitem_unbox.<locals>.TestClassi0  c                 T    [         R                  " S[         R                  S9U l        g r@  rA  rH   s    r&   r'   ;TestJitClass.test_getitem_unbox.<locals>.TestClass.__init__2  rD  r)   c                      X R                   U'   g r!   r   rF  s      r&   rH  >TestJitClass.test_getitem_unbox.<locals>.TestClass.__setitem__5  rJ  r)   c                      U R                   U   $ r!   r   rL  s     r&   rM  >TestJitClass.test_getitem_unbox.<locals>.TestClass.__getitem__8  rO  r)   r   NrP  r2   r)   r&   r  r_  0  rQ  r)   r  r   r+   c                     SU S'   U S   $ )N   r   r+   r2   rS  s    r&   set2return14TestJitClass.test_getitem_unbox.<locals>.set2return1>  s    AaDQ4Kr)   r   rg  rZ  )r%   rW   r  rS  ri  t_1s         r&   test_getitem_unboxTestJitClass.test_getitem_unbox-  s    q"#	$	& 	& 
	& K!		 
	 !nb!1r"r)   c                 F   S[         S S 2S S 24   4/n[        U5       " S S[        5      5       nU" 5       nSU[        SS5      '   [        S 5       n[        S 5       nU R                  U" USS5      S5        U" USSS	5        U R                  U[        SS5         S	5        g )
Nr   c                   &    \ rS rSrS rS rS rSrg)8TestJitClass.test_getitem_complex_key.<locals>.TestClassiJ  c                 T    [         R                  " S[         R                  S9U l        g N)r   r   r   rA  rH   s    r&   r'   ATestJitClass.test_getitem_complex_key.<locals>.TestClass.__init__L      HHXRXX>	r)   c                 p    X R                   [        UR                  5      [        UR                  5      4'   g r!   r   ro   realimagrF  s      r&   rH  DTestJitClass.test_getitem_complex_key.<locals>.TestClass.__setitem__O  s#    :>		#chh-SXX67r)   c                 p    U R                   [        UR                  5      [        UR                  5      4   $ r!   rv  rL  s     r&   rM  DTestJitClass.test_getitem_complex_key.<locals>.TestClass.__getitem__R  s&    yySXXCHH!=>>r)   r   NrP  r2   r)   r&   r  rp  J  s    ???r)   r  r   r+   c                     U [        X5         $ r!   complex)rS  rw  rx  s      r&   get_key6TestJitClass.test_getitem_complex_key.<locals>.get_keyY  s    WT())r)   c                     X0[        X5      '   g r!   r}  )rS  rw  rx  r   s       r&   set_key6TestJitClass.test_getitem_complex_key.<locals>.set_key]  s    %)gd!"r)   r   r   )r	   r   rK   r~  r
   rT   )r%   rW   r  rS  r  r  s         r&   test_getitem_complex_key%TestJitClass.test_getitem_complex_keyG  s    q!t%&	$	? 	? 
	? K'!Q-		* 
	* 
	* 
	* 	Aq)1-1a71a=)1-r)   c                    S[         S S 2S S 24   4/n[        U5       " S S[        5      5       nU" 5       nSUS'   [        S 5       n[        S 5       nU R	                  U" U5      S5        U" US5        U R	                  US	   S5        g )
Nr   c                   &    \ rS rSrS rS rS rSrg)6TestJitClass.test_getitem_tuple_key.<locals>.TestClassih  c                 T    [         R                  " S[         R                  S9U l        g rr  rA  rH   s    r&   r'   ?TestJitClass.test_getitem_tuple_key.<locals>.TestClass.__init__j  rt  r)   c                 0    X R                   US   US   4'   g Nr   r+   r   rF  s      r&   rH  BTestJitClass.test_getitem_tuple_key.<locals>.TestClass.__setitem__m  s    ,0		#a&#a&.)r)   c                 0    U R                   US   US   4   $ r  r   rL  s     r&   rM  BTestJitClass.test_getitem_tuple_key.<locals>.TestClass.__getitem__p  s    yyQQ00r)   r   NrP  r2   r)   r&   r  r  h  s    ?11r)   r     r+   r+   c                     U S   $ )Nr  r2   rh  s    r&   get112TestJitClass.test_getitem_tuple_key.<locals>.get11v  s    T7Nr)   c                     XS'   g )Nr   r   r2   rS  r   s     r&   set222TestJitClass.test_getitem_tuple_key.<locals>.set22z  s	    dGr)      r  rZ  )r%   rW   r  rS  r  r  s         r&   test_getitem_tuple_key#TestJitClass.test_getitem_tuple_keye  s    q!t%&	$	1 	1 
	1 K$		 
	 
	 
	 	q2&a4"%r)   c                    S[         S S  4/n[        U5       " S S[        5      5       nU" 5       nSUSSS2'   U R                  USSS2   S5        U R                  USSS2   S5        [        S 5       nU R                  U" U5      S5        [        S 5       nU" US5        U R                  USSS2   S5        U R                  US	S	S2   S
5        g )Nr   c                   &    \ rS rSrS rS rS rSrg)6TestJitClass.test_getitem_slice_key.<locals>.TestClassi  c                 T    [         R                  " S[         R                  S9U l        g r@  rA  rH   s    r&   r'   ?TestJitClass.test_getitem_slice_key.<locals>.TestClass.__init__  rD  r)   c                 ~    X R                   UR                  '   X!R                  -   U R                   UR                  '   g r!   )r   startstepstop)r%   slcr   s      r&   rH  BTestJitClass.test_getitem_slice_key.<locals>.TestClass.__setitem__  s*    '+		#))$&*XXo		#((#r)   c                 4    U R                   UR                     $ r!   )r   r  )r%   r  s     r&   rM  BTestJitClass.test_getitem_slice_key.<locals>.TestClass.__getitem__  s    yy++r)   r   NrP  r2   r)   r&   r  r    s    96,r)   r  r+   r   r   c                     U SSS2   $ )Nr      r+   r2   rh  s    r&   get51TestJitClass.test_getitem_slice_key.<locals>.get5  s    QqU8Or)   c                     XSSS2'   g )Nr   r  r+   r2   r  s     r&   set262TestJitClass.test_getitem_slice_key.<locals>.set26  s    a!eHr)   r  r   )r	   r   rK   rT   r
   )r%   rW   r  rS  r  r  s         r&   test_getitem_slice_key#TestJitClass.test_getitem_slice_key  s    q"#	$		, 		, 
		, K!Aa%1Qq51%1Qq51%		 
	 	a!$ 
	 
	 	a1Qq51%1Qq51%r)   c                    [        S5       Vs/ s H  n[        [        S5      U-   5      PM     nnU Vs/ s H  o3S-  [        4PM     nnUR	                  U Vs/ s H  o3R                  5       S-  [        4PM     sn5        [        U5       " S S[        5      5       nU" 5       R                  5         g s  snf s  snf s  snf )N   r   r   c                   &    \ rS rSrS rS rS rSrg)JTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.TruncatedLabeli  c                     SU l         g )Ng      $@)
aaaaaaaaaarH   s    r&   r'   STestJitClass.test_jitclass_longlabel_not_truncated.<locals>.TruncatedLabel.__init__  s	    "%r)   c                 d    [         R                  " U R                  U R                  5      U l        g r!   )randomgaussr  
bbbbbbbbbbrH   s    r&   meth1PTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.TruncatedLabel.meth1  s    "(,,t"Pr)   c                 $    U R                  5         g r!   )r  rH   s    r&   meth2PTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.TruncatedLabel.meth2  s    

r)   )r  r  N)r-   r.   r/   r0   r'   r  r  r1   r2   r)   r&   TruncatedLabelr    s    &Qr)   r  )	r0  chrordr   extendupperr   rK   r  )r%   r"   alphabetletterrW   r  s         r&   %test_jitclass_longlabel_not_truncated2TestJitClass.test_jitclass_longlabel_not_truncated  s     05Ry9y!CC1%y95=>X6"g&X>(K(llnr)73(KL	$	V 	 
	 	 # :>Ks   !B6B;"C c                    [          " S S[        5      5       nU" 5       n[        U5      nU R                  U[        R
                  5        [        R                  " U5      nU R                  [        R                  " U5      U5        g )Nc                       \ rS rSrS rSrg)5TestJitClass.test_pickling.<locals>.PickleTestSubjecti  c                     g r!   r2   rH   s    r&   r'   >TestJitClass.test_pickling.<locals>.PickleTestSubject.__init__  rn   r)   r2   Nr,   r2   r)   r&   PickleTestSubjectr    r   r)   r  )
r   rK   r   rD  r   ClassInstanceTypepickledumpsr   loads)r%   r  r  typickleds        r&   test_picklingTestJitClass.test_pickling  si    		 	 
	 !"D\b%"9"9:,,r"fll7+R0r)   c                 N  ^ [        S[        4/5       " S S5      5       n[        S[        4/5       " S S5      5       nU R                  UR                  [        5        U R                  UR
                  [        5        U R                  UR                  [        5        U R                  UR                  UR                  5        U R                  SUR                  SS5      5        U R                  S	UR                  SS5      5        U R                  S
UR                  SS5      5        U" S5      nU" S5      nU R                  SUR                  S5      5        U R                  S	UR                  S5      5        U R                  SUR                  SS5      5        U R                  SUR                  SS5      5        U R                  SUR                  SS5      5        U R                  SUR                  SS5      5        U R                  SUR                  SS5      5        U R                  SUR                  SS5      5        U R                  [        5       nUR                  SS5        S S S 5        U R                  S[        WR                  5      5        U R                  [        5       nUR                  S5        S S S 5        U R                  S[        UR                  5      5        [        / 5       " U4S jS5      5       mT" 5       nU R                  [        R                   5       nUR#                  5         S S S 5        U R                  S[        UR                  5      5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       NW= f)Nr"   c                   @    \ rS rSrS rS r\S 5       r\S 5       rSr	g)/TestJitClass.test_static_methods.<locals>.Test1i  c                     Xl         g r!   r  r  s     r&   r'   8TestJitClass.test_static_methods.<locals>.Test1.__init__      r)   c                 \    U R                  U R                  U5      U l        U R                  $ r!   r   r"   r%   r#   s     r&   increase8TestJitClass.test_static_methods.<locals>.Test1.increase  !    $&&!,vvr)   c                 
    X-   $ r!   r2   r;  s     r&   r   3TestJitClass.test_static_methods.<locals>.Test1.add  	    ur)   c                 
    X-
  $ r!   r2   r;  s     r&   sub3TestJitClass.test_static_methods.<locals>.Test1.sub  r  r)   r  N)
r-   r.   r/   r0   r'   r  staticmethodr   r  r1   r2   r)   r&   rt   r    s4        r)   rt   c                   0    \ rS rSrS rS r\S 5       rSrg)/TestJitClass.test_static_methods.<locals>.Test2i  c                     Xl         g r!   r  r  s     r&   r'   8TestJitClass.test_static_methods.<locals>.Test2.__init__  r  r)   c                 \    U R                  U R                  U5      U l        U R                  $ r!   r  r  s     r&   r  8TestJitClass.test_static_methods.<locals>.Test2.increase  r  r)   c                 
    X-
  $ r!   r2   r;  s     r&   r   3TestJitClass.test_static_methods.<locals>.Test2.add  r  r)   r  N)	r-   r.   r/   r0   r'   r  r  r   r1   r2   r)   r&   Test2r    s       r)   r  r   r+   r   r   r  r   y               @y              ?foobarr   r   zhas no attribute 'sub'z'not enough arguments: expected 2, got 1c                   8   > \ rS rSrS r\S 5       rU 4S jrSrg)/TestJitClass.test_static_methods.<locals>.Test3i
  c                     g r!   r2   rH   s    r&   r'   8TestJitClass.test_static_methods.<locals>.Test3.__init__  rn   r)   c                     g r!   r2   r;  s     r&   a_static_method?TestJitClass.test_static_methods.<locals>.Test3.a_static_method  r  r)   c                 (   > TR                  SS5      $ rC  )r  )r%   Test3s    r&   call_static;TestJitClass.test_static_methods.<locals>.Test3.call_static  s    ,,Q22r)   r2   N)	r-   r.   r/   r0   r'   r  r  r  r1   )r   s   r&   r   r  
  s&      3 3r)   r   z#Unknown attribute 'a_static_method')r   r	   rD  r   r   r  assertNotEqualrT   r  r   r  r   r   r   r   r   r   r  )r%   rt   r  t1t2r   invalidr   s          @r&   test_static_methods TestJitClass.test_static_methods  s   	C<.	!	 	 
"	  
C<.	!
	 
	 
"
	 	eii4eii4eii4EIIuyy1EIIaO,UYYq!_-EIIaO,1X1XBKKN+R[[^,BFF1aL)BFF1aL)BFF1aL)RVVB^,RVVB^,266%#78~.&IIaO /.&**+	- y)VIIaL *?&**+	- 
"		3 		3 
		3 'v112f! 3 	;&**+	-; /.
 *)* 32s$   M34N4N3
N
N
N$c                    [        [        S9n[        5        " S S5      5       nU R                  U[        5        U R                  UR                  R                  U5        [        US9 " S S5      5       nU R                  U[        5        U R                  UR                  R                  U5        [         " S S5      5       nU R                  U[        5        U R                  UR                  R                  U5        [        U5       " S	 S
5      5       nU R                  U[        5        U R                  UR                  R                  U5        g )Nr  c                   &    \ rS rSr% \\S'   S rSrg)<TestJitClass.test_jitclass_decorator_usecases.<locals>.Test1i   r"   c                     SU l         g Nr   r  rH   s    r&   r'   ETestJitClass.test_jitclass_decorator_usecases.<locals>.Test1.__init__$  	    r)   r  Nr   r2   r)   r&   rt   r         Hr)   rt   rW   c                       \ rS rSrS rSrg)<TestJitClass.test_jitclass_decorator_usecases.<locals>.Test2i*  c                     SU l         g r  r  rH   s    r&   r'   ETestJitClass.test_jitclass_decorator_usecases.<locals>.Test2.__init__-  r  r)   r  Nr,   r2   r)   r&   r  r  *      r)   r  c                   &    \ rS rSr% \\S'   S rSrg)<TestJitClass.test_jitclass_decorator_usecases.<locals>.Test3i3  r"   c                     SU l         g r  r  rH   s    r&   r'   ETestJitClass.test_jitclass_decorator_usecases.<locals>.Test3.__init__7  r  r)   r  Nr   r2   r)   r&   r   r  3  r  r)   r   c                       \ rS rSrS rSrg)<TestJitClass.test_jitclass_decorator_usecases.<locals>.Test4i=  c                     SU l         g r  r  rH   s    r&   r'   ETestJitClass.test_jitclass_decorator_usecases.<locals>.Test4.__init__@  r  r)   r  Nr,   r2   r)   r&   Test4r  =  r  r)   r  r   r   r   rD  r   assertDictEqualrL   rO   )r%   rW   rt   r  r   r  s         r&    test_jitclass_decorator_usecases-TestJitClass.test_jitclass_decorator_usecases  s+   W%		 	 
	 	e\2U--44d;	t		 	 
	
 	e\2U--44d;		 	 
	 	e\2U--44d;	$	 	 
	
 	e\2U--44d;r)   c                 b   [        [        S9n " S S5      n[        U5      nU R                  U[        5        U R                  UR                  R                  U5         " S S5      n[        XA5      nU R                  U[        5        U R                  UR                  R                  U5        g )Nr  c                   &    \ rS rSr% \\S'   S rSrg)CTestJitClass.test_jitclass_function_usecases.<locals>.AnnotatedTestiI  r"   c                     SU l         g r  r  rH   s    r&   r'   LTestJitClass.test_jitclass_function_usecases.<locals>.AnnotatedTest.__init__L  r  r)   r  Nr   r2   r)   r&   AnnotatedTestr&  I  s    Hr)   r)  c                       \ rS rSrS rSrg)ETestJitClass.test_jitclass_function_usecases.<locals>.UnannotatedTestiS  c                     SU l         g r  r  rH   s    r&   r'   NTestJitClass.test_jitclass_function_usecases.<locals>.UnannotatedTest.__init__U  r  r)   r  Nr,   r2   r)   r&   UnannotatedTestr+  S      r)   r.  r   )r%   rW   r)  JitTest1r.  JitTest2s         r&   test_jitclass_function_usecases,TestJitClass.test_jitclass_function_usecasesF  s    W%	 	 M*h5X0077>	 	
 O2h5X0077>r)   c                   ^^ [        [        S9n[        U5       " S S[        5      5       m[        U5       " S S[        5      5       mUU4S jnUn[	        U5      nU R                  T[        5        U R                  U" T" S5      5      U" T" S5      5      5        U R                  U" T" S5      5      U" T" S5      5      5        U R                  U" S	5      U" S	5      5        g )
Nr  c                   &    \ rS rSrS rS rS rSrg)2TestJitClass.test_jitclass_isinstance.<locals>.Fooi_  c                     Xl         g r!   r  r   s     r&   r'   ;TestJitClass.test_jitclass_isinstance.<locals>.Foo.__init__a  r  r)   c                     U R                   $ r!   r  rH   s    r&   getValue;TestJitClass.test_jitclass_isinstance.<locals>.Foo.getValued      zz!r)   c                      U R                   S-   $ ro  r  rH   s    r&   getValueIncr?TestJitClass.test_jitclass_isinstance.<locals>.Foo.getValueIncrg  s    zzA~%r)   r  N)r-   r.   r/   r0   r'   r:  r>  r1   r2   r)   r&   r|   r6  _  s    #"&r)   r|   c                        \ rS rSrS rS rSrg)2TestJitClass.test_jitclass_isinstance.<locals>.Barij  c                     Xl         g r!   r  r   s     r&   r'   ;TestJitClass.test_jitclass_isinstance.<locals>.Bar.__init__l  r  r)   c                     U R                   $ r!   r  rH   s    r&   r:  ;TestJitClass.test_jitclass_isinstance.<locals>.Bar.getValueo  r<  r)   r  N)r-   r.   r/   r0   r'   r:  r1   r2   r)   r&   r   rA  j  s    #"r)   r   c                    > [        U TT45      (       aK  U R                  5       n[        U T5      (       a  U R                  5       U-   S4$ U R                  5       U-   S4$ g)Nr|   r   zno match)rR   r:  r>  )r   r"   r   r|   s     r&   test_jitclass_isinstanceGTestJitClass.test_jitclass_isinstance.<locals>.test_jitclass_isinstancer  s^    #Sz**LLNc3''++-1588<<>A-u44!r)   r   r   r   )r   r	   r   rK   r
   rD  r   rT   )r%   rW   rG  pyfunccfuncr   r|   s        @@r&   rG  %TestJitClass.test_jitclass_isinstance\  s    '	$	&& 	& 
	& 
$	"& 	" 
	"		" *-.c<0As1v7C)5S?;E!H-r)   c                     U R                  [        5       n[         " S S[        5      5       nU" 5         S S S 5        U R	                  S[        WR                  5      5        g ! , (       d  f       N4= f)Nc                        \ rS rSrS rS rSrg):TestJitClass.test_jitclass_unsupported_dunder.<locals>.Fooi  c                     g r!   r2   rH   s    r&   r'   CTestJitClass.test_jitclass_unsupported_dunder.<locals>.Foo.__init__  s    r)   c                     g r!   r2   rH   s    r&   	__enter__DTestJitClass.test_jitclass_unsupported_dunder.<locals>.Foo.__enter__  s    r)   r2   N)r-   r.   r/   r0   r'   rR  r1   r2   r)   r&   r|   rN    s     r)   r|   z$Method '__enter__' is not supported.)r   r   r   rK   r   r   r   )r%   er|   s      r&    test_jitclass_unsupported_dunder-TestJitClass.test_jitclass_unsupported_dunder  sZ    y)Q f     E * 	<c!++>NO *)s    A$$
A2c                 z    [          " S S[        5      5       n[        nUR                  nU R	                  X#5        g )Nc                       \ rS rSrS rSrg)1TestJitClass.test_modulename.<locals>.TestModnamei  c                     SU l         g )N   r  rH   s    r&   r'   :TestJitClass.test_modulename.<locals>.TestModname.__init__  s	    r)   r  Nr,   r2   r)   r&   TestModnamerY    s    r)   r]  )r   rK   r-   r.   rT   )r%   r]  
thisModuleclassModules       r&   test_modulenameTestJitClass.test_modulename  s;    		& 	 
	 
!,,1r)   r2   )NNN)3r-   r.   r/   r0   r^   rc   rf   rv   r   r   r   r   r   r   r   r   r  r7  r@  rE  rK  r\  rf  rv  r  r  r  r  r  r   r  r	  r  r  r!  r'  r:  r[  rl  r  r  r  r  r  r  r"  r2  rG  rU  r`  r1   r2   r)   r&   rA   rA   0   s   24
O
"?$-*(,4'l)<4|*:O,
<*J$%L<&M*'<1,VEp ( (H*"$"6"@25(->#4.<&:#&J!.
1Q-f'<R?,'.R
P2r)   rA   c                       \ rS rSr " S S5      r\S 5       r\S 5       rSS jrS r	S	 r
S
 rS rS rS rS rS rS r\S 5       rS rS rSrg)TestJitClassOverloadsi  c                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)TestJitClassOverloads.PyListi  c                     S/U l         g r  r  rH   s    r&   r'   %TestJitClassOverloads.PyList.__init__  s    SDFr)   c                 :    U R                   R                  U5        g r!   r"   appendr  s     r&   rj  #TestJitClassOverloads.PyList.append  s    FFMM!r)   c                 8    U R                   R                  5         g r!   )r"   clearrH   s    r&   rm  "TestJitClassOverloads.PyList.clear  s    FFLLNr)   c                 2    [        U R                  5      S-  $ r   rU   r"   rH   s    r&   __abs__$TestJitClassOverloads.PyList.__abs__      tvv;?"r)   c                 8    [        U R                  5      S-  S:g  $ )Nr   r   rp  rH   s    r&   __bool__%TestJitClassOverloads.PyList.__bool__  s    tvv;?a''r)   c                 `    [        S5      nU R                  (       a  XR                  S   -  nU$ )Nr   r   )r~  r"   )r%   r   s     r&   __complex__(TestJitClassOverloads.PyList.__complex__  s&    
AvvVVAYHr)   c                     XR                   ;   $ r!   r  r  s     r&   __contains__)TestJitClassOverloads.PyList.__contains__  s    ;r)   c                 N    SnU R                   (       a  XR                   S   -  nU$ )Nr(  r   r  )r%   fs     r&   	__float__&TestJitClassOverloads.PyList.__float__  s"    AvvVVAYHr)   c                 N    SnU R                   (       a  XR                   S   -  nU$ )Nr   r   r  )r%   r2  s     r&   __int__$TestJitClassOverloads.PyList.__int__  s"    AvvVVAYHr)   c                 2    [        U R                  5      S-   $ ro  rp  rH   s    r&   __len__$TestJitClassOverloads.PyList.__len__  rs  r)   c                 8    [        U R                  5      S:X  a  gg)Nr   zPyList emptyzPyList non-emptyrp  rH   s    r&   __str__$TestJitClassOverloads.PyList.__str__  s    466{a%)r)   r  N)r-   r.   r/   r0   r'   rj  rm  rq  ru  rx  r{  r  r  r  r  r1   r2   r)   r&   PyListre    s9    				#	(					#	*r)   r  c                  `   ^  [        S[        R                  4/5       " U 4S jS5      5       m T $ )Nr"   c                   d   > \ rS rSrS rS rS rU 4S jrU 4S jrU 4S jr	U 4S jr
U 4S	 jrS
rg)9TestJitClassOverloads.get_int_wrapper.<locals>.IntWrapperi  c                     Xl         g r!   r  r   s     r&   r'   BTestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__init__      r)   c                 4    U R                   UR                   :H  $ r!   r  r%   r   s     r&   __eq__@TestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__eq__      vv((r)   c                     U R                   $ r!   r  rH   s    r&   __hash__BTestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__hash__      vvr)   c                 B   > T" U R                   UR                   -  5      $ r!   r  r%   r   
IntWrappers     r&   
__lshift__DTestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__lshift__      !$&&EGG"344r)   c                 B   > T" U R                   UR                   -	  5      $ r!   r  r  s     r&   
__rshift__DTestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__rshift__  r  r)   c                 B   > T" U R                   UR                   -  5      $ r!   r  r  s     r&   __and__ATestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__and__      !$&&577"233r)   c                 B   > T" U R                   UR                   -  5      $ r!   r  r  s     r&   __or__@TestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__or__  r  r)   c                 B   > T" U R                   UR                   -  5      $ r!   r  r  s     r&   __xor__ATestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__xor__  r  r)   r  N)r-   r.   r/   r0   r'   r  r  r  r  r  r  r  r1   r  s   r&   r  r    s0    )55444 4r)   r  )r   r   intpr  s   @r&   get_int_wrapper%TestJitClassOverloads.get_int_wrapper  s3    	C$%	&	4 	4 
'	42 r)   c                  `   ^  [        S[        R                  4/5       " U 4S jS5      5       m T $ )Nr"   c                      > \ rS rSrS rS rS rS rS rS r	S r
U 4S	 jrU 4S
 jrU 4S jrU 4S jrU 4S jrU 4S jrU 4S jrU 4S jrU 4S jrSrg)=TestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapperi  c                     Xl         g r!   r  r   s     r&   r'   FTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__init__  r  r)   c                 4    U R                   UR                   :H  $ r!   r  r  s     r&   r  DTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__eq__  r  r)   c                     U R                   $ r!   r  rH   s    r&   r  FTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__hash__  r  r)   c                 4    U R                   UR                   :  $ r!   r  r  s     r&   __ge__DTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__ge__  r  r)   c                 4    U R                   UR                   :  $ r!   r  r  s     r&   __gt__DTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__gt__      vv''r)   c                 4    U R                   UR                   :*  $ r!   r  r  s     r&   __le__DTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__le__  r  r)   c                 4    U R                   UR                   :  $ r!   r  r  s     r&   __lt__DTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__lt__  r  r)   c                 B   > T" U R                   UR                   -   5      $ r!   r  r%   r   FloatWrappers     r&   __add__ETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__add__      #DFFUWW$455r)   c                 B   > T" U R                   UR                   -  5      $ r!   r  r  s     r&   __floordiv__JTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__floordiv__      #DFFegg$566r)   c                 B   > T" U R                   UR                   -  5      $ r!   r  r  s     r&   __mod__ETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__mod__
  r  r)   c                 B   > T" U R                   UR                   -  5      $ r!   r  r  s     r&   __mul__ETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__mul__  r  r)   c                 *   > T" U R                   * 5      $ r!   r  r  s     r&   __neg__ETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__neg__      #TVVG,,r)   c                 *   > T" U R                   75      $ r!   r  r  s     r&   __pos__ETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__pos__  r  r)   c                 B   > T" U R                   UR                   -  5      $ r!   r  r  s     r&   __pow__ETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__pow__  r  r)   c                 B   > T" U R                   UR                   -
  5      $ r!   r  r  s     r&   __sub__ETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__sub__  r  r)   c                 B   > T" U R                   UR                   -  5      $ r!   r  r  s     r&   __truediv__ITestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__truediv__  r  r)   r  N)r-   r.   r/   r0   r'   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r1   r  s   r&   r  r    sX    ))()(6766--766 6r)   r  )r   r   r   r  s   @r&   get_float_wrapper'TestJitClassOverloads.get_float_wrapper  s4    	C'(	)0	6 0	6 
*0	6d r)   Nc                 j    U R                  [        U5      [        U5      US9  U R                  XUS9  g )N)r&  )rT   type)r%   r  r  r&  s       r&   
assertSame TestJitClassOverloads.assertSame!  s2    ed6l<C0r)   c                    [        S[        R                  " [        R                  5      05      " U R                  5      nS S S S S S S S	 S
 S S S S S S S S /nU Vs/ s H  n[        U5      PM     nnU R	                  5       nU" 5       n[        X$5       HA  u  pxU R                  U" U5      U" U5      5        U R                  U" U5      U" U5      5        MC     UR                  S5        UR                  S5        [        X$5       HA  u  pxU R                  U" U5      U" U5      5        U R                  U" U5      U" U5      5        MC     UR                  S5        UR                  S5        [        X$5       HA  u  pxU R                  U" U5      U" U5      5        U R                  U" U5      U" U5      5        MC     UR                  5         UR                  5         [        X$5       HA  u  pxU R                  U" U5      U" U5      5        U R                  U" U5      U" U5      5        MC     g s  snf )Nr"   c                     [        U 5      $ r!   )absr  s    r&   <lambda>6TestJitClassOverloads.test_overloads.<locals>.<lambda>+      c!fr)   c                 "    U R                  5       $ r!   )rq  r  s    r&   r  r  ,  
    aiikr)   c                     [        U 5      $ r!   boolr  s    r&   r  r  -  s    d1gr)   c                 "    U R                  5       $ r!   )ru  r  s    r&   r  r  .  s
    ajjlr)   c                     [        U 5      $ r!   r}  r  s    r&   r  r  /  s    gajr)   c                 "    U R                  5       $ r!   )rx  r  s    r&   r  r  0  s
    ammor)   c                     SU ;   $ r  r2   r  s    r&   r  r  1  s    a1fr)   c                 $    U R                  S5      $ r  )r{  r  s    r&   r  r  2  s    annQ'r)   c                     [        U 5      $ r!   rs   r  s    r&   r  r  3  s    eAhr)   c                 "    U R                  5       $ r!   )r  r  s    r&   r  r  4  s
    akkmr)   c                     [        U 5      $ r!   ro   r  s    r&   r  r  5  r  r)   c                 "    U R                  5       $ r!   )r  r  s    r&   r  r  6  r  r)   c                     [        U 5      $ r!   )rU   r  s    r&   r  r  7  r  r)   c                 "    U R                  5       $ r!   )r  r  s    r&   r  r  8  r  r)   c                     [        U 5      $ r!   )r   r  s    r&   r  r  9  r  r)   c                 "    U R                  5       $ r!   )r  r  s    r&   r  r  :  r  r)   c                     U (       a  S$ S$ )Nr+   r   r2   r  s    r&   r  r  ;  s    1am!mr)   r   )
r   r   rr   r  r  r
   rV   r  rj  rm  )	r%   JitListpy_funcsr~  	jit_funcspy_listjit_listpy_fjit_fs	            r&   test_overloads$TestJitClassOverloads.test_overloads%  s    CEJJ!789$++F !" %'#!!!##
& '//hT!Wh	/++-9x3KDOODM4>:OODM5?; 4 	qx3KDOODM4>:OODM5?; 4 	rx3KDOODM4>:OODM5?; 4 	x3KDOODM4>:OODM5?; 4- 0s   (H;c                    S n[        U5      n[        S[        R                  " [        R                  5      4/5       " S S5      5       nU" / SQ5      nU R                  U" U5      5        U R                  U" U5      5        UR                  S5        U R                  U" U5      5        U R                  U" U5      5        UR                  5         U R                  U" U5      5        U R                  U" U5      5        [        S[        R                  4/5       " S S	5      5       nU" S
5      nU R                  U" U5      5        U R                  U" U5      5        g )Nc                     [        U 5      $ r!   r  r  s    r&   py_b6TestJitClassOverloads.test_bool_fallback.<locals>.py_bY      7Nr)   r"   c                   ,    \ rS rSrS rS rS rS rSrg):TestJitClassOverloads.test_bool_fallback.<locals>.LenClassi^  c                     Xl         g r!   r  r  s     r&   r'   CTestJitClassOverloads.test_bool_fallback.<locals>.LenClass.__init__`  r  r)   c                 2    [        U R                  5      S-  $ )Nr   rp  rH   s    r&   r  BTestJitClassOverloads.test_bool_fallback.<locals>.LenClass.__len__c  s    466{Q&r)   c                 :    U R                   R                  U5        g r!   ri  r  s     r&   rj  ATestJitClassOverloads.test_bool_fallback.<locals>.LenClass.appendf  s    a r)   c                 :    U R                   R                  S5        g r  )r"   poprH   s    r&   r!  >TestJitClassOverloads.test_bool_fallback.<locals>.LenClass.popi  s    

1r)   r  N)	r-   r.   r/   r0   r'   r  rj  r!  r1   r2   r)   r&   LenClassr  ^  s    '!r)   r#  )r+   r   r   r   r#   c                       \ rS rSrS rSrg)=TestJitClassOverloads.test_bool_fallback.<locals>.NormalClassix  c                     Xl         g r!   r#   r  s     r&   r'   FTestJitClassOverloads.test_bool_fallback.<locals>.NormalClass.__init__z  r  r)   r'  Nr,   r2   r)   r&   NormalClassr%  x  r/  r)   r)  r   )
r
   r   r   rr   r  r   rj  r   r!  r   )r%   r  jit_br#  r   r)  s         r&   test_bool_fallback(TestJitClassOverloads.test_bool_fallbackW  s   	 T
	CEJJ/01	2	 	 
3	 y!S	"c
#

1c#s$	S	"c
#	C'(	)	 	 
*	 !nS	"c
#r)   c                 x	   S nS nS n[        U5      n[        U5      n[        U5      n[        / 5       " S S5      5       nU" 5       nU R                  U" U5      [        S5      5        U R                  U" U5      [        S5      5        U R                  U" U5      S5        U R                  U" U5      S5        U R	                  [
        5       n	U" U5        S S S 5        U R                  S[        W	R                  5      5        U R	                  [        5       n	U" U5        S S S 5        U R                  S[        U	R                  5      5        [        / 5       " S S	5      5       n
U
" 5       nU R                  U" U5      S
5        U R                  U" U5      S
5        U R	                  [
        5       n	U" U5        S S S 5        U R                  S[        U	R                  5      5        U R	                  [        5       n	U" U5        S S S 5        U R                  S[        U	R                  5      5        U R	                  [
        5       n	U" U5        S S S 5        U R                  S[        U	R                  5      5        U R	                  [        5       n	U" U5        S S S 5        U R                  S[        U	R                  5      5        [        / 5       " S S5      5       nU" 5       nU R                  U" U5      [        S5      5        U R                  U" U5      [        S5      5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S5        [        / 5       " S S5      5       nU" 5       nU R                  U" U5      [        S5      5        U R                  U" U5      [        S5      5        U R                  U" U5      S5        U R                  U" U5      S5        U R                  U" U5      S
5        U R                  U" U5      S
5        g ! , (       d  f       GN}= f! , (       d  f       GND= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNJ= f! , (       d  f       GN= f)Nc                     [        U 5      $ r!   r}  r  s    r&   py_c9TestJitClassOverloads.test_numeric_fallback.<locals>.py_c  s    1:r)   c                     [        U 5      $ r!   r  r  s    r&   r  9TestJitClassOverloads.test_numeric_fallback.<locals>.py_f  s    8Or)   c                     [        U 5      $ r!   r  r  s    r&   py_i9TestJitClassOverloads.test_numeric_fallback.<locals>.py_i  s    q6Mr)   c                        \ rS rSrS rS rSrg)?TestJitClassOverloads.test_numeric_fallback.<locals>.FloatClassi  c                     g r!   r2   rH   s    r&   r'   HTestJitClassOverloads.test_numeric_fallback.<locals>.FloatClass.__init__  rn   r)   c                     gNr(  r2   rH   s    r&   r  ITestJitClassOverloads.test_numeric_fallback.<locals>.FloatClass.__float__      r)   r2   N)r-   r.   r/   r0   r'   r  r1   r2   r)   r&   
FloatClassr7    s    r)   r>  r(  ro   c                        \ rS rSrS rS rSrg)=TestJitClassOverloads.test_numeric_fallback.<locals>.IntClassi  c                     g r!   r2   rH   s    r&   r'   FTestJitClassOverloads.test_numeric_fallback.<locals>.IntClass.__init__  rn   r)   c                     gr   r2   rH   s    r&   r  ETestJitClassOverloads.test_numeric_fallback.<locals>.IntClass.__int__  r   r)   r2   N)r-   r.   r/   r0   r'   r  r1   r2   r)   r&   IntClassr@        r)   rE  r   r~  rs   c                        \ rS rSrS rS rSrg)?TestJitClassOverloads.test_numeric_fallback.<locals>.IndexClassi  c                     g r!   r2   rH   s    r&   r'   HTestJitClassOverloads.test_numeric_fallback.<locals>.IndexClass.__init__  rn   r)   c                     gro  r2   rH   s    r&   	__index__ITestJitClassOverloads.test_numeric_fallback.<locals>.IndexClass.__index__  r   r)   r2   N)r-   r.   r/   r0   r'   rL  r1   r2   r)   r&   
IndexClassrH    rF  r)   rN  r+         ?c                   ,    \ rS rSrS rS rS rS rSrg)GTestJitClassOverloads.test_numeric_fallback.<locals>.FloatIntIndexClassi  c                     g r!   r2   rH   s    r&   r'   PTestJitClassOverloads.test_numeric_fallback.<locals>.FloatIntIndexClass.__init__  rn   r)   c                     gr;  r2   rH   s    r&   r  QTestJitClassOverloads.test_numeric_fallback.<locals>.FloatIntIndexClass.__float__  r=  r)   c                     gr   r2   rH   s    r&   r  OTestJitClassOverloads.test_numeric_fallback.<locals>.FloatIntIndexClass.__int__  r   r)   c                     gro  r2   rH   s    r&   rL  QTestJitClassOverloads.test_numeric_fallback.<locals>.FloatIntIndexClass.__index__  r   r)   r2   N)	r-   r.   r/   r0   r'   r  r  rL  r1   r2   r)   r&   FloatIntIndexClassrQ    s    r)   rZ  )
r
   r   r  r~  r   r   r   r   r   r   )r%   r/  r  r4  jit_cr  jit_ir>  r   rT  rE  rN  rZ  s                r&   test_numeric_fallback+TestJitClassOverloads.test_numeric_fallback  s   			 T
T
T
	"	 	 
	 lS	76?3c
GFO4S	6*c
F+y)QI *eS-.{+q#J ,eS-.	"	 	 
	 jS	1%c
A&y)QI *iQ[[!12{+q#J ,iQ[[!12y)QI *gs1;;/0{+q#J ,gs1;;/0	"	 	 
	 lS	71:.c
GAJ/S	2&c
B'S	1%c
A&	"	 	 
	 !"S	76?3c
GFO4S	6*c
F+S	1%c
A&K *) ,+  *) ,+ *) ,+sH   	Q	Q"6	Q4	R	R	R*
Q"
Q14
R
R
R'*
R9c                    U R                  5       nU R                  5       nS S S S S S S S S	 S
 S S S /nS S S S S S S /n/ SQnS n[        R                  " [	        [
        U5      U5       H  u  nu  pUR                  n
U
" X5      nU" U5      nU" U	5      n[        U5      [        La  U R                  OU R                  nU" X" X5      5        U" X" U
" X5      5      5        U" X" U" X5      5      5        M     [        R                  " [	        [
        U5      U5       H  u  nu  pUR                  n
[        U5      [        U	5      pU
" X5      nU" U5      nU" U	5      nU R                  X" X5      5        U R                  X" U
" X5      5      5        U R                  X" U" X5      5      5        M     g )Nc                 
    X:H  $ r!   r2   r   s     r&   r  ?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>      r)   c                 
    X:g  $ r!   r2   r   s     r&   r  ra    rb  r)   c                 
    X:  $ r!   r2   r   s     r&   r  ra    rb  r)   c                 
    X:  $ r!   r2   r   s     r&   r  ra        r)   c                 
    X:*  $ r!   r2   r   s     r&   r  ra    rb  r)   c                 
    X:  $ r!   r2   r   s     r&   r  ra    rf  r)   c                 
    X-   $ r!   r2   r   s     r&   r  ra    rf  r)   c                 
    X-  $ r!   r2   r   s     r&   r  ra    rb  r)   c                 
    X-  $ r!   r2   r   s     r&   r  ra    rf  r)   c                 
    X-  $ r!   r2   r   s     r&   r  ra    rf  r)   c                 
    X-  $ r!   r2   r   s     r&   r  ra    rb  r)   c                 
    X-
  $ r!   r2   r   s     r&   r  ra    rf  r)   c                 
    X-  $ r!   r2   r   s     r&   r  ra    rf  r)   c                 
    X:H  $ r!   r2   r   s     r&   r  ra    rb  r)   c                 
    X:g  $ r!   r2   r   s     r&   r  ra    rb  r)   c                 
    X-  $ r!   r2   r   s     r&   r  ra    rb  r)   c                 
    X-	  $ r!   r2   r   s     r&   r  ra    rb  r)   c                 
    X-  $ r!   r2   r   s     r&   r  ra    rf  r)   c                 
    X-  $ r!   r2   r   s     r&   r  ra    rf  r)   c                 
    X-  $ r!   r2   r   s     r&   r  ra    rf  r)   )r          @)gX9v?r(  )g333333*@g)\(?c                     [        U SU 5      $ )Nr"   )getattrr  s    r&   unwrap=TestJitClassOverloads.test_arithmetic_logical.<locals>.unwrap  s    5#u--r)   )r  r  	itertoolsproductmapr
   r  r  rs   rT   assertAlmostEqualro   )r%   r  r  float_py_funcsint_py_funcstest_valuesr{  r  r"   r#   r  r]   jit_xjit_ychecks                  r&   test_arithmetic_logical-TestJitClassOverloads.test_arithmetic_logical  s   ))+
--/  
   

	. '..D.);8ME6A ==DAzH OE OE >.   ++ 
 (E!K((F4#567(F5#678!8$ '..D,'6ME6A ==Dq63q6qAzHqMEqMEXuQ{3Xvd5.@'ABXveE.A'BC6r)   c           
      L  ^^ U R                  5       nU R                  5       nUR                  5       S   nUR                  5       S   n[        S[        R
                  4/5       " U4S jSU5      5       m[        S[        R                  05       " U4S jSU5      5       mTR                  5       S   nTR                  5       S   nS nS Vs/ s H
  o" U5      PM     n	nS	 Vs/ s H
  o" U5      PM     n
n/ S
Qn[        R                  " [        [        U	5      XB4UT4/U5       H  u  nu  pu  nnUR                  nU" U" U5      U" U5      5      R                  nU R                  UU" U" U5      U" U5      5      R                  5        U R                  UU" U" U5      U" U5      5      R                  5        M     [        R                  " [        [        U
5      X14UT4/U5       H  u  nu  pu  nn[        U5      [        U5      nnUR                  nU" U" U5      U" U5      5      R                  nU R                  UU" U" U5      U" U5      5      R                  5        U R                  UU" U" U5      U" U5      5      R                  5        M     g s  snf s  snf )Nr+   r"   c                   X   > \ rS rSrS rU 4S jrU 4S jrU 4S jrU 4S jrU 4S jr	Sr
g	)
RTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapperi3  c                     Xl         g r!   r  r   s     r&   r'   [TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__init__5  r  r)   c                 B   > T" U R                   UR                   -  5      $ r!   r  r%   r   JitIntUpdateWrappers     r&   __ilshift__^TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__ilshift__8      *466UWW+<==r)   c                 B   > T" U R                   UR                   -	  5      $ r!   r  r  s     r&   __irshift__^TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__irshift__;  r  r)   c                 B   > T" U R                   UR                   -  5      $ r!   r  r  s     r&   __iand__[TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__iand__>      *466EGG+;<<r)   c                 B   > T" U R                   UR                   -  5      $ r!   r  r  s     r&   __ior__ZTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__ior__A  r  r)   c                 B   > T" U R                   UR                   -  5      $ r!   r  r  s     r&   __ixor__[TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__ixor__D  r  r)   r  N)r-   r.   r/   r0   r'   r  r  r  r  r  r1   )r  s   r&   r  r  3  s&    >>=== =r)   r  c                   p   > \ rS rSrS rU 4S jrU 4S jrU 4S jrU 4S jrU 4S jr	U 4S jr
U 4S	 jrS
rg)TTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapperiG  c                     Xl         g r!   r  r   s     r&   r'   ]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__init__J  r  r)   c                 H   > T" U R                   SUR                   -  -   5      $ NgX9v@r  r%   r   JitFloatUpdateWrappers     r&   __iadd__]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__iadd__M  s    ,TVVeeggo-EFFr)   c                 H   > T" U R                   S-  UR                   -  5      $ r  r  r  s     r&   __ifloordiv__bTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__ifloordiv__P  s    ,TVVe^uww-FGGr)   c                 H   > T" U R                   UR                   S-   -  5      $ ro  r  r  s     r&   __imod__]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__imod__S  s    ,TVVuww{-CDDr)   c                 H   > T" U R                   UR                   -  S-   5      $ ro  r  r  s     r&   __imul__]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__imul__V  s     ,TVVegg-=-ABBr)   c                 H   > T" U R                   UR                   -  S-   5      $ ro  r  r  s     r&   __ipow__]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__ipow__Y  s     ,TVVuww->-BCCr)   c                 H   > T" U R                   SUR                   -  -
  5      $ r;  r  r  s     r&   __isub__]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__isub__\  s     ,TVVfuww6F-FGGr)   c                 H   > T" U R                   S-   UR                   -  5      $ ro  r  r  s     r&   __itruediv__aTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__itruediv___  s    ,dffqjEGG-CDDr)   r  N)r-   r.   r/   r0   r'   r  r  r  r  r  r  r  r1   )r  s   r&   r  r  G  s8    GHECDHE Er)   r  c                 2    SU  S3n0 n[        X5        US   $ )Nz
def f(x, y):
    x z= y
    return x
r~  )exec)optemplate	namespaces      r&   get_update_funcNTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.get_update_funce  s1    	d H
 I%S>!r)   )+//%***-/)<<>>&|^rw  )r  r  mror   r   r  r   r}  r~  r  r
   r  r"   r  ro   rT   )r%   JitIntWrapperJitFloatWrapperPyIntWrapperPyFloatWrapperPyIntUpdateWrapperPyFloatUpdateWrapperr  r  r  r  r  r  py_clsjit_clsr"   r#   r  r]   r  r  s                      @@r&   test_arithmetic_logical_inplace5TestJitClassOverloads.test_arithmetic_logical_inplace*  s    ,,.002$((*1-(,,.q1	C$%	&	=, 	= 
'	=& 
3&	'	EN 	E 
(	E4 1446q9488:1=	"9
  9
"/"- 9
 7
  7
+ 7
 
 1:0A0AD.)#5)+@A 1,E$Ffq! ==DF1Ivay133H""8T'!*gaj-I-K-KL""8U71:wqz-J-L-LM1 1:0A0AD,'!1')<= 1,E$Ffq! q63q6qA==DF1Ivay133HXtGAJ
'C'E'EFXuWQZ'D'F'FG15s   J&J!c           
      4    " S S5      n " S SU5      nS nS nS nS n/ S	Qn[         R                  " X/S
S/5       H  u  pU	(       a  [        OUn
U
" U5      nU
" U5      nU
" U5      n[        U5      nS H$  nU R	                  U" U" U5      5      US-  5        M&     U Hn  u  nnU R	                  U" U" U5      U" U5      5      U" U5      U" U5      :H  5        U R	                  U" U" U5      U" U5      5      U" U5      U" U5      :g  5        Mp     M     g )Nc                   2    \ rS rSr% \\S'   S rS rS rSr	g)9TestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqTesti  r"   c                     Xl         g r!   r  r  s     r&   r'   BTestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqTest.__init__  r  r)   c                      U R                   S-  $ )Nr   r  rH   s    r&   r  BTestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqTest.__hash__  s    vv{"r)   c                 @    U R                   UR                   -
  S-  S:H  $ )Nrg  r   r  r%   os     r&   r  @TestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqTest.__eq__  s    *a//r)   r  N)
r-   r.   r/   r0   ro   rp   r'   r  r  r1   r2   r)   r&   
HashEqTestr    s    F#0r)   r  c                       \ rS rSrS rSrg);TestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqNeTesti  c                 @    U R                   UR                   -
  S-  S:  $ )Nrg  r+   r  r  s     r&   __ne__BTestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqNeTest.__ne__  s    *Q..r)   r2   N)r-   r.   r/   r0   r  r1   r2   r)   r&   HashEqNeTestr    s    /r)   r  c                     [        U 5      $ r!   )hashr  s    r&   py_hash6TestJitClassOverloads.test_hash_eq_ne.<locals>.py_hash  r  r)   c                 
    X:H  $ r!   r2   r   s     r&   py_eq4TestJitClassOverloads.test_hash_eq_ne.<locals>.py_eq  	    6Mr)   c                 
    X:g  $ r!   r2   r   s     r&   py_ne4TestJitClassOverloads.test_hash_eq_ne.<locals>.py_ne  r  r)   c                     U $ r!   r2   )r~  s    r&   identity_decoratorATestJitClassOverloads.test_hash_eq_ne.<locals>.identity_decorator  s    Hr)   ))r   r+   )r   r  )r   r   )r   r   FT)r   r   r   r   ir   )r}  r~  r
   r   rT   )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_ne%TestJitClassOverloads.test_hash_eq_ne  s&   
	0 
	0	/: 	/				
 "+!2!2&"
H !(-?I!'*I&G&Gx(G'  71:!6B? ( $1  GAJ
3QK8A;.   GAJ
3QK8A;. $"
r)   c                     " S S5      nUn[        S[        R                  4/5      " U5      nU" S5      R                  5       nU" S5      R                  5       nU" S5      R                  5       nU" S5      R                  5       nU R	                  XF5        U R	                  XW5        U R	                  [        U5      [        U5      5        U R	                  [        U5      [        U5      5        g )Nc                   &    \ rS rSrS rS rS rSrg)BTestJitClassOverloads.test_bool_fallback_len.<locals>.NoBoolHasLeni  c                     Xl         g r!   r   r   s     r&   r'   KTestJitClassOverloads.test_bool_fallback_len.<locals>.NoBoolHasLen.__init__  r   r)   c                     U R                   $ r!   r   rH   s    r&   r  JTestJitClassOverloads.test_bool_fallback_len.<locals>.NoBoolHasLen.__len__  s    xxr)   c                     [        U 5      $ r!   r  rH   s    r&   get_boolKTestJitClassOverloads.test_bool_fallback_len.<locals>.NoBoolHasLen.get_bool      Dz!r)   r   N)r-   r.   r/   r0   r'   r  r  r1   r2   r)   r&   NoBoolHasLenr    s     "r)   r  r   r   r   )r   r   int64r  rT   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_len,TestJitClassOverloads.test_bool_fallback_len  s    "	" 	"  %!5 67A"1+..0"1+..0*1o668*1o668 	>> 	o.5H0IJo.5H0IJr)   c                      " S S5      nUn[        / 5      " U5      nU" 5       R                  5       nU" 5       R                  5       nU R                  XE5        U R                  [        U5      [        U5      5        g )Nc                        \ rS rSrS rS rSrg)ETestJitClassOverloads.test_bool_fallback_default.<locals>.NoBoolNoLeni  c                     g r!   r2   rH   s    r&   r'   NTestJitClassOverloads.test_bool_fallback_default.<locals>.NoBoolNoLen.__init__  rn   r)   c                     [        U 5      $ r!   r  rH   s    r&   r  NTestJitClassOverloads.test_bool_fallback_default.<locals>.NoBoolNoLen.get_bool  r  r)   r2   N)r-   r.   r/   r0   r'   r  r1   r2   r)   r&   NoBoolNoLenr    s    "r)   r   )r   r  rT   r  )r%   r   r  r  py_class_booljitted_class_bools         r&   test_bool_fallback_default0TestJitClassOverloads.test_bool_fallback_default  so    	" 	" |H- 
++-(N335 	: 	m,d3D.EFr)   c                     " S S5      n " S S5      nS[         R                  4/n[        U5      " U5      n[        U5      " U5      nU" S5      nU" S5      nU" S5      nU" S5      n	U R                  Xv:H  X:H  5        U R                  Xv:*  X:*  5        U R                  Xv:  X:  5        U R                  Xv:  X:  5        U R                  Xv:  X:  5        g )Nc                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
HTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefinedi  c                     Xl         g r!   r  r  s     r&   r'   QTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__init__  r  r)   c                 4    U R                   UR                   :H  $ r!   r  r  s     r&   r  OTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__eq__  r  r)   c                 4    U R                   UR                   :*  $ r!   r  r  s     r&   r  OTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__le__  r  r)   c                 4    U R                   UR                   :  $ r!   r  r  s     r&   r  OTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__lt__   r  r)   c                 4    U R                   UR                   :  $ r!   r  r  s     r&   r  OTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__ge__#  r  r)   c                 4    U R                   UR                   :  $ r!   r  r  s     r&   r  OTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__gt__&  r  r)   r  N)r-   r.   r/   r0   r'   r  r  r  r  r  r1   r2   r)   r&   OperatorsDefinedr'    s     ))()(r)   r4  c                       \ rS rSrS rSrg)JTestJitClassOverloads.test_operator_reflection.<locals>.NoOperatorsDefinedi)  c                     Xl         g r!   r  r  s     r&   r'   STestJitClassOverloads.test_operator_reflection.<locals>.NoOperatorsDefined.__init__*  r  r)   r  Nr,   r2   r)   r&   NoOperatorsDefinedr6  )      r)   r9  r"   r   r   )r   r	   r   rT   )
r%   r4  r9  rW   JitOperatorsDefinedJitNoOperatorsDefinedpy_ops_definedpy_ops_not_definedjit_ops_definedjit_ops_not_defineds
             r&   test_operator_reflection.TestJitClassOverloads.test_operator_reflection  s   	( 	(&	 	 ekk"#&tn-=> (/A B)!,/2-a03A6+=,?	A 	+=,?	A 	+<,>	@ 	+=,?	A 	+<,>	@r)   c           	      F    " S S5      n " S S5      nSn[         R                  R                  S5        [         R                  R                  U4S9n[         R                  R                  X34S9nU" U5      nU" U5      n[        US[        S S S2   0S	9" U5      n[        US[        S S S2   0S	9" U5      n	U" U5      n
U" U5      n[        US[        S S 2S S S24   0S	9" U5      n[        US[        S S 2S S S24   0S	9" U5      n[         R
                  R                  Xv-  X-  5        [         R
                  R                  Xz-  X-  5        [         R
                  R                  X-  X-  5        [         R
                  R                  X-  X-  5        [         R
                  R                  Xg-  X-  5        [         R
                  R                  Xk-  X-  5        [         R
                  R                  X-  X-  5        [         R
                  R                  X-  X-  5        Xz-  nX-  nX-  n	X-  n[         R
                  R                  UR                  U	R                  5        [         R
                  R                  UR                  UR                  5        g )
Nc                   ,    \ rS rSrS rS rS rS rSrg);TestJitClassOverloads.test_matmul_operator.<locals>.ArrayAtiH  c                     Xl         g r!   r   r%   r  s     r&   r'   DTestJitClassOverloads.test_matmul_operator.<locals>.ArrayAt.__init__I       r)   c                 4    U R                   UR                   -  $ r!   rG  r  s     r&   
__matmul__FTestJitClassOverloads.test_matmul_operator.<locals>.ArrayAt.__matmul__L  s    xx%))++r)   c                 4    UR                   U R                   -  $ r!   rG  r  s     r&   __rmatmul__GTestJitClassOverloads.test_matmul_operator.<locals>.ArrayAt.__rmatmul__O  s    yy488++r)   c                 B    U R                   UR                   -  U l         U $ r!   rG  r  s     r&   __imatmul__GTestJitClassOverloads.test_matmul_operator.<locals>.ArrayAt.__imatmul__R  s    88eii/r)   rG  N)	r-   r.   r/   r0   r'   rL  rO  rR  r1   r2   r)   r&   ArrayAtrE  H  s    !,,r)   rT  c                       \ rS rSrS rSrg)=TestJitClassOverloads.test_matmul_operator.<locals>.ArrayNoAtiV  c                     Xl         g r!   rG  rH  s     r&   r'   FTestJitClassOverloads.test_matmul_operator.<locals>.ArrayNoAt.__init__W  rJ  r)   rG  Nr,   r2   r)   r&   	ArrayNoAtrV  V  s    !r)   rY  r   r+   )sizer   r  )r   r  seedr   r   r  assert_allcloser   )r%   rT  rY  rW  r   matvector_noat	vector_atjit_vector_noatjit_vector_atmatrix_noat	matrix_atjit_matrix_noatjit_matrix_ats                 r&   test_matmul_operator*TestJitClassOverloads.test_matmul_operatorF  sU   	 		! 	! 
		qiiQD)iiQF+nCL	"9E73Q3<3HI#N wss|/DEcJnCL	"9E71SqS5>3JKCP wq1u~/FGL 	

""9#:#0#B	D


""9#:#0#B	D


""9#:#0#B	D


""9#:#0#B	D 	

"";#:#2#B	D


"";#:#2#B	D


"";#:#2#B	D


"";#:#2#B	D 	 	 	((


""9==-2C2CD


""9==-2C2CDr)   c                     " S S5      n " S S5      n/ SQn/ UQSPSPSPS	PS
Pn[         US4[        US4[        S S S2   U[        R                  " / SQ5      [        R                  " / SQ5      444 H  u  pVnSU0n[	        X5      n	[	        X(5      n
U" US   5      nU" US   5      nU	" US   5      nU
" US   5      nU H~  nS[        U5      ;  a.  U R                  [        SU S35      [        SU S35      5        M@  U R                  [        [        SU S35      5      [        [        SU S35      5      5        M     M     g )Nc                   b    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rSrg)RTestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefinedi  c                     Xl         g r!   r  r  s     r&   r'   [TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__init__  r  r)   c                 4    UR                   U R                   -   $ r!   r  r  s     r&   __radd__[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__radd__      ww''r)   c                 4    UR                   U R                   -
  $ r!   r  r  s     r&   __rsub__[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rsub__  rp  r)   c                 4    UR                   U R                   -  $ r!   r  r  s     r&   __rmul__[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rmul__  rp  r)   c                 4    UR                   U R                   -  $ r!   r  r  s     r&   __rtruediv___TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rtruediv__  rp  r)   c                 4    UR                   U R                   -  $ r!   r  r  s     r&   __rfloordiv__`TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rfloordiv__      ww$&&((r)   c                 4    UR                   U R                   -  $ r!   r  r  s     r&   __rmod__[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rmod__  rp  r)   c                 4    UR                   U R                   -  $ r!   r  r  s     r&   __rpow__[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rpow__  r}  r)   c                 4    UR                   U R                   -  $ r!   r  r  s     r&   __rlshift__^TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rlshift__  r}  r)   c                 4    UR                   U R                   -	  $ r!   r  r  s     r&   __rrshift__^TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rrshift__  r}  r)   c                 4    UR                   U R                   -  $ r!   r  r  s     r&   __rand__[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rand__  rp  r)   c                 4    UR                   U R                   -  $ r!   r  r  s     r&   __rxor__[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rxor__  rp  r)   c                 4    UR                   U R                   -  $ r!   r  r  s     r&   __ror__ZTestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__ror__  rp  r)   r  N)r-   r.   r/   r0   r'   rn  rr  ru  rx  r{  r  r  r  r  r  r  r  r1   r2   r)   r&   r4  rj    sC    (((()()))(((r)   r4  c                       \ rS rSrS rSrg)TTestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.NoOperatorsDefinedi  c                     Xl         g r!   r  r  s     r&   r'   ]TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.NoOperatorsDefined.__init__  r  r)   r  Nr,   r2   r)   r&   r9  r    r:  r)   r9  )r  r  r  r  r  r  r  r  r  r  r  r  )r   r   )rx        @r+   )rO  rx  r  )g      4@g      8rO  r"   r   r  zpy_ops_not_defined z py_ops_definedzjit_ops_not_defined z jit_ops_defined)
r	   r   r   r  r   r   rT   evalassertTupleEqualtuple)r%   r4  r9  float_opint_op	test_typetest_op
test_valuerW   r;  r<  r=  r>  r?  r@  r  s                   r&   "test_arithmetic_logical_reflection8TestJitClassOverloads.test_arithmetic_logical_reflection  s{   &	( &	(P	 	 9888T848#8s8C8 FF#h)SqS\8,'/)BCE/
*I
 #D"*+;"B$,-?$F!-jm<N!3JqM!B1*Q-@O"7
1"F3y>1$$22$oFG3B47GHI
 ))d%8O#LMNd%9"=M#NOP !/
r)   c                 n     " S S5      n[        / 5      " U5      nU" 5       nU R                  X3:H  5        g )Nc                        \ rS rSrS rS rSrg)GTestJitClassOverloads.test_implicit_hash_compiles.<locals>.ImplicitHashi  c                     g r!   r2   rH   s    r&   r'   PTestJitClassOverloads.test_implicit_hash_compiles.<locals>.ImplicitHash.__init__  rn   r)   c                     g)NFr2   r  s     r&   r  NTestJitClassOverloads.test_implicit_hash_compiles.<locals>.ImplicitHash.__eq__  s    r)   r2   N)r-   r.   r/   r0   r'   r  r1   r2   r)   r&   ImplicitHashr    s    r)   r  )r   r   )r%   r  jittedinstances       r&   test_implicit_hash_compiles1TestJitClassOverloads.test_implicit_hash_compiles  s4    	 	 "l+8-.r)   r2   r!   )r-   r.   r/   r0   r  r  r  r  r  r  r+  r]  r  r  r  r  r#  rA  r   rf  r  r  r1   r2   r)   r&   rc  rc    s    ,* ,*\  : 4 4l10<d($Ta'FDDLkHZ:x)KVG./@b =E =E~JX/r)   rc  __main__)2r+  r}  r  r  typingrq   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   r   rK   r   r4   r?   rA   rc  r-   mainr2   r)   r&   <module>r     s          # + + + $ , 8 * ' , 9 L L 1  i28_ i2X#D/OX D/N zMMO r)   