
    xKg?                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	Z
d dlmZmZmZmZmZmZmZmZmZ d dlmZmZ d dlmZ d dlmZmZ d dlmZ d dlm Z  d d	l!m"Z" d d
l#m$Z$ d dl%m&Z&m'Z'm(Z( d dl%m)Z)  G d de*      Z+ G d de*      Z,d Z- G d de'e&      Z. G d de&e'      Z/e0dk(  r ejb                          yy)    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                       e Zd ZddddZy)
TestClass1   ac                <    || _         || _        || _        || _        y N)xyzr   )selfr!   r"   r#   r   s        _/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_jitclasses.py__init__zTestClass1.__init__   s        N   __name__
__module____qualname__r&    r'   r%   r   r      s    q r'   r   c                       e Zd ZddddZy)
TestClass2r   r   c                J    || _         || _        || _        || _        || _        y r    )r!   r"   r#   argsr   )r$   r!   r"   r#   r   r2   s         r%   r&   zTestClass2.__init__!   s%    	r'   Nr(   r*   r.   r'   r%   r0   r0       s    1 r'   r0   c                 f    t        j                  |       }t        |      }|j                          |S r    )r   box_get_meminfoptrr   acquire)boxptrmis      r%   _get_meminfor9   )   s)    

!
!#
&C	BJJLIr'   c                   &   e Zd Zd/dZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zed        Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0y)0TestJitClassNc                 4   |t        |       G d dt                     }|}|j                  j                  }t	        |j
                  j                               }t	        |j
                  j                               }|#t        |t              r|j                         }n|}|J | j                  t        |      t        |             t        t        ||      |      D ]5  \  }}	| j                  |d   |	d          | j                  |d   |	d          7 y )Nc                       e Zd Zd Zy)&TestJitClass._check_spec.<locals>.Testc                      y r    r.   r$   s    r%   r&   z/TestJitClass._check_spec.<locals>.Test.__init__7   s    r'   Nr*   r.   r'   r%   Testr>   4   s    r'   rA   r   r)   )r   object
class_typeinstance_typeliststructkeysvalues
isinstancer   itemsassertEquallenzip)
r$   spectest_clsall_expectedrA   clstynamesrH   gotexpecteds
             r%   _check_speczTestJitClass._check_spec2   s    d^v   H##11U\\&&()ell))+,$,#zz|#'''US%67 UF!3\BMCSVXa[1SVXa[1 Cr'   c                 ^    t               }t        |d<   t        |d<   | j                  |       y Nr!   r"   )r   r	   r   rU   r$   rN   s     r%   test_ordereddict_specz"TestJitClass.test_ordereddict_specL   s)    }S	S	r'   c                 F    dt         fdt        fg}| j                  |       y rW   )r	   r   rU   rX   s     r%   test_list_speczTestJitClass.test_list_specR   s%    eg r'   c           	          dt         fg}t        |       G d dt                     }| j                  |||dt	        j
                  t              fgz          y )Nr!   c                   B    e Zd ZU eed<   ej                  e   ed<   d Zy)1TestJitClass.test_type_annotations.<locals>.Test1r!   r"   c                      y r    r.   r@   s    r%   r&   z:TestJitClass.test_type_annotations.<locals>.Test1.__init___       r'   N)	r+   r,   r-   int__annotations__ptListfloatr&   r.   r'   r%   Test1r^   Z   s    Fwwu~r'   rf   r"   )r	   r   rB   rU   r   ListTyper   )r$   rN   rf   s      r%   test_type_annotationsz"TestJitClass.test_type_annotationsW   sT    e~	$	F 	 
	 	udsENN74K.L-M&MNr'   c                      G d d      }t          G d d|             }| j                  |dt        d      fdt        d      fg	       y )
Nc                       e Zd ZU eed<   y):TestJitClass.test_type_annotation_inheritance.<locals>.Foor!   N)r+   r,   r-   ra   rb   r.   r'   r%   Foork   f   s    Fr'   rl   c                   (    e Zd ZU eed<   deddfdZy):TestJitClass.test_type_annotation_inheritance.<locals>.Barr"   valuereturnNc                 2    t        |      | _        || _        y r    )ra   r!   r"   r$   ro   s     r%   r&   zCTestJitClass.test_type_annotation_inheritance.<locals>.Bar.__init__m   s    Ur'   r+   r,   r-   re   rb   r&   r.   r'   r%   Barrn   i   s    He  r'   rt   r!   r   r"           )rO   rP   )r   rU   r   )r$   rl   rt   s      r%    test_type_annotation_inheritancez-TestJitClass.test_type_annotation_inheritanced   sX    	 	 
	# 	 
	 	fQi(83s:L'M 	 	
r'   c                    dt         fdt        d d  fg}dt        fdt        d d  fg} G d dt              }| j	                  t
              5 }t        ||       d d d        | j                  dt        j                               | j	                  t
              5 }t        ||       d d d        | j                  t        |j                        d       y # 1 sw Y   ~xY w# 1 sw Y   ;xY w)Nr!   r"   r)   c                       e Zd Zd Zy)+TestJitClass.test_spec_errors.<locals>.Testc                      y r    r.   r@   s    r%   r&   z4TestJitClass.test_spec_errors.<locals>.Test.__init__{   r`   r'   Nr*   r.   r'   r%   rA   ry   y       r'   rA   z*spec values should be Numba type instancesz"spec keys should be strings, got 1)ra   r   r	   rB   assertRaises	TypeErrorr   assertInstr	exceptionrK   )r$   spec1spec2rA   raisess        r%   test_spec_errorszTestJitClass.test_spec_errorsu   s    sc71:./Uc71:./	6 	
 y)VT5! *B&**+	-y)VT5! *V--.=	? *) *)s   CC!C!C*c                     t        g        G d d             }| j                  t        j                        5 } |        d d d        | j	                  dt        j                               y # 1 sw Y   /xY w)Nc                       e Zd Zd Zy)+TestJitClass.test_init_errors.<locals>.Testc                      yN   r.   r@   s    r%   r&   z4TestJitClass.test_init_errors.<locals>.Test.__init__       r'   Nr*   r.   r'   r%   rA   r      s    r'   rA   z"__init__() should return None, not)r   r|   r   r   r~   r   r   )r$   rA   r   s      r%   test_init_errorszTestJitClass.test_init_errors   sg    	"	 	 
	 v112fF 3 	:&**+	- 32s   A..A7c                     t               }t        |d<   t        |d<   t        d d  |d<   t        |       G d dt                     }|S )Nr!   r"   arrc                       e Zd Zd Zd Zy)9TestJitClass._make_Float2AndArray.<locals>.Float2AndArrayc                 .    || _         || _        || _        y r    r!   r"   r   )r$   r!   r"   r   s       r%   r&   zBTestJitClass._make_Float2AndArray.<locals>.Float2AndArray.__init__   s    r'   c                 Z    | xj                   |z  c_         | xj                  |z  c_        |S r    r!   r"   r$   vals     r%   addz=TestJitClass._make_Float2AndArray.<locals>.Float2AndArray.add   s!    ##
r'   N)r+   r,   r-   r&   r   r.   r'   r%   Float2AndArrayr      s    
r'   r   )r   r   r   rB   )r$   rN   r   s      r%   _make_Float2AndArrayz!TestJitClass._make_Float2AndArray   sM    }S	S	ajU	$
	V 
	 

	 r'   c                 x    t               }t        |d<   t        |d<   t        |       G d dt                     }|S )Nr!   r"   c                       e Zd Zd Zy)+TestJitClass._make_Vector2.<locals>.Vector2c                      || _         || _        y r    r   )r$   r!   r"   s      r%   r&   z4TestJitClass._make_Vector2.<locals>.Vector2.__init__   s    r'   Nr*   r.   r'   r%   Vector2r      s    r'   r   )r   r	   r   rB   )r$   rN   r   s      r%   _make_Vector2zTestJitClass._make_Vector2   s?    }S	S		$	f 	 
	 r'   c                 P   | j                         | j                         t        d        t        fd       }t        j                  dt        j
                        } ||      \  }}}| j                  |d       | j                  |d       | j                  ||       y )Nc                 4    | j                   | j                  z   S r    r   objs    r%   barz*TestJitClass.test_jit_class_1.<locals>.bar   s    55355= r'   c                      dd|       }|j                  d        dd      } |       |      |j                  fS )Nr)      {         )r   r   )r   r   vecr   r   r   s      r%   fooz*TestJitClass.test_jit_class_1.<locals>.foo   s@     Aq)CGGCL!Q-Cs8SXsww..r'   
   dtype   r   )r   r   r
   nponesr   rK   assertPreciseEqual)	r$   r   inpr   bcr   r   r   s	         @@@r%   test_jit_class_1zTestJitClass.test_jit_class_1   s    224$$&		! 
	! 
	/ 
	/ ggb

+c(1a-.E"3'r'   c                 4   | j                         }t        d        }t        d        }t        j                  dt        j                        } |dd|      }t        |      }| j                  |j                  d       | j                  |j                  t        j                  |             | j                  |j                  j                  |j                          ||      }t        |      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  t        j                  |             | j                  |j                  |j                         ~~| j                  |j                  d        ||      \  }	}
}| j                  |	d       | j                  |
d       | j                  ||       | j                  |j                  d       | j                  |j                  d       | j                  |j                   |       | j                  |j#                  d      d       | j                  |j                  d	       | j                  |j                  d
       d|_        d|_        t        j                  dt        j                        x|_        }| j                  |j                  d       | j                  |j                  d       | j                  |j                   |       y )Nc                     | S r    r.   r   s    r%   identityz>TestJitClass.test_jitclass_usage_from_python.<locals>.identity   s    Jr'   c                 H    | j                   | j                  | j                  fS r    r   r   s    r%   retrieve_attributeszITestJitClass.test_jitclass_usage_from_python.<locals>.retrieve_attributes   s    55#%%((r'   r   r   r)   r   r   r   |   }   iM  i  r   )r   r
   r   aranger   r9   rK   refcountdatar   box_get_dataptr_numba_type_rC   assertIsr!   r"   r   r   )r$   r   r   r   r   r   obj_meminfootherother_meminfoout_xout_yout_arrnewarrs                r%   test_jitclass_usage_from_pythonz,TestJitClass.test_jitclass_usage_from_python   s   224		 
	 
	) 
	) 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ug""gs# 	""cggs# 	s+(( 99Qbjj99&$$cggv&r'   c                     t               }t        |d<   t        |       G d dt                     }| j	                   |d      j
                         | j                   |d      j
                         y )Nr   c                       e Zd Zd Zy)2TestJitClass.test_jitclass_datalayout.<locals>.Fooc                     || _         y r    r   r   s     r%   r&   z;TestJitClass.test_jitclass_datalayout.<locals>.Foo.__init__  	    r'   Nr*   r.   r'   r%   rl   r     s    r'   rl   TF)r   r   r   rB   
assertTruer   assertFalse)r$   rN   rl   s      r%   test_jitclass_datalayoutz%TestJitClass.test_jitclass_datalayout  s[    }U	$	& 	 
	
 	D	&U(r'   c                   	 t               }t               }t        |d<   t        |      |d<   t        d        	t        |       G 	fddt                     }|j                  |j                  j                          |dd       }| j                  |j                  d       | j                  |j                          |d|      }t        |      }t        |      }| j                  |j                  d       | j                  |j                  j                  |j                         | j                  |j                  d       | j                  |j                  d	       |j!                         }| j                  ||j                         | j                  |j                         |j#                   |d
d              | j%                  |j                         | j                  |j                  j                  d
       | j                  |j                  j                         |j#                   |dd              | j%                  |j                  j                         | j                  |j                  j                  j                  d       | j                  |j                  d       ~~| j                  |j                  d	       y )Nr   nextc                     | j                   S r    r   )nodes    r%   get_dataz1TestJitClass.test_deferred_type.<locals>.get_data  s    99r'   c                   $    e Zd Zd Z fdZd Zy)3TestJitClass.test_deferred_type.<locals>.LinkedNodec                      || _         || _        y r    )r   r   )r$   r   r   s      r%   r&   z<TestJitClass.test_deferred_type.<locals>.LinkedNode.__init__  s     	 	r'   c                 (     | j                         S r    r   )r$   r   s    r%   get_next_datazATestJitClass.test_deferred_type.<locals>.LinkedNode.get_next_data#  s    		**r'   c                 `    | }|j                   |j                   }|j                   ||_         y r    r   )r$   r   curs      r%   append_to_tailzBTestJitClass.test_deferred_type.<locals>.LinkedNode.append_to_tail'  s-    hh*((C hh* r'   N)r+   r,   r-   r&   r   r   )r   s   r%   
LinkedNoder     s    !+!r'   r   r   A  r   r   7  i  )r   r   r   r   r
   r   rB   definerC   rD   rK   r   assertIsNoner   r9   r   r   r   assertIsNotNone)
r$   	node_typerN   r   firstsecondfirst_meminfosecond_meminfo	first_valr   s
            @r%   test_deferred_typezTestJitClass.test_deferred_type  s0   !O	}V	*V		 
	 
$	! 	! 
	!  	..<<=3%S)%**%C'$U+%f-//3))5::6//300!4 ((*	EJJ/ 	%**%jd34UZZ(#.%**//*jd34UZZ__---s3 	//3N//3r'   c                 Z   t               }t        |d<   t        |d<   t        |d<   t	        |       G d dt
                     } |ddd      } G d	 d
t        j                        }t        j                  t        j                  |            }t        j                  |t        j                  |            d   }| j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                   |j                          y )Nr   r   r   c                       e Zd Zd Zy)-TestJitClass.test_c_structure.<locals>.Structc                 .    || _         || _        || _        y r    )r   r   r   )r$   r   r   r   s       r%   r&   z6TestJitClass.test_c_structure.<locals>.Struct.__init__X      r'   Nr*   r.   r'   r%   Structr   U  s    r'   r   iͫ     o!	@c                   ^    e Zd Zdej                  fdej
                  fdej                  fgZy).TestJitClass.test_c_structure.<locals>.CStructr   r   r   N)r+   r,   r-   ctypesc_int32c_int16c_double_fields_r.   r'   r%   CStructr   _  s-    fnn%fnn%foo&Hr'   r   r   )r   r	   r   r   r   rB   r   	Structurec_void_pr   r   castPOINTERrK   r   r   r   )r$   rN   r   str   r7   cstructs          r%   test_c_structurezTestJitClass.test_c_structureO  s    }S	S	S		$	V 	 
	 FD&)	f&& 	 ood22267++c6>>'#:;A>BDD)BDD)BDD)r'   c                     | j                         } |dd      }t        d        }| j                  t              5 } |||       d d d        | j	                  dt        j                               y # 1 sw Y   /xY w)Nr)   r   c                 
    | |u S r    r.   r   r   s     r%   do_isz#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_iszTestJitClass.test_isl  ss    ##%q!		 
	 }-% . 	6F<L<L8MN .-s   
A33A<c                 Z    | j                         } |dd      }| j                  ||       y Nr)   r   )r   assertIsInstance)r$   r   r   s      r%   test_isinstancezTestJitClass.test_isinstancey  s+    $$&amc7+r'   c                     | j                         }| j                  t              5 } G d d|      }d d d        | j                  t	        j
                        d       y # 1 sw Y   /xY w)Nc                       e Zd Zy)+TestJitClass.test_subclassing.<locals>.SubVN)r+   r,   r-   r.   r'   r%   SubVr    s    r'   r  zcannot subclass from a jitclass)r   r|   r}   rK   r   r   )r$   r   r   r  s       r%   test_subclassingzTestJitClass.test_subclassing~  sZ    $$&y)Vw  * 	V--.:	< *)s   A  A)c                      G d dt               }t        dt        fg       G d d|             } |d      }| j                  |j	                         d       y )Nc                       e Zd Zd Zy)*TestJitClass.test_base_class.<locals>.Basec                     | j                   S r    attrr@   s    r%   whatz/TestJitClass.test_base_class.<locals>.Base.what  s    yy r'   N)r+   r,   r-   r  r.   r'   r%   Baser    s    !r'   r  r  c                       e Zd Zd Zy)*TestJitClass.test_base_class.<locals>.Testc                     || _         y r    r  r$   r  s     r%   r&   z3TestJitClass.test_base_class.<locals>.Test.__init__  	     	r'   Nr*   r.   r'   r%   rA   r!    s    !r'   rA   r   )rB   r   r	   rK   r  )r$   r  rA   r   s       r%   test_base_classzTestJitClass.test_base_class  sV    	!6 	!
 
FE?#	$	!4 	! 
%	!
 3iS)r'   c                      G d dt               }| j                  t              5 }t        |       d d d        | j	                  t        j                        d       y # 1 sw Y   /xY w)Nc                       e Zd ZdZd Zy)'TestJitClass.test_globals.<locals>.Miner   c                      y r    r.   r@   s    r%   r&   z0TestJitClass.test_globals.<locals>.Mine.__init__  r`   r'   N)r+   r,   r-   constantr&   r.   r'   r%   Miner(    s    Hr'   r+  z-class members are not yet supported: constantrB   r|   r}   r   rK   r   r   )r$   r+  r   s      r%   test_globalszTestJitClass.test_globals  sV    	6 	 y)VTN * 	V--.H	J *)   AA(c                    t        dt        fg       G d dt                     } |d      }| j                  |j                  d       | j                  |j
                  d       d|_        | j                  |j                  d       | j                  |j
                  d       t        d        } ||d	      \  }}}| j                  |d       | j                  |d	       | j                  |d
       y )Nr  c                   F    e Zd Zd Zed        Zej                  d        Zy)1TestJitClass.test_user_getter_setter.<locals>.Fooc                     || _         y r    r  r#  s     r%   r&   z:TestJitClass.test_user_getter_setter.<locals>.Foo.__init__  r$  r'   c                      | j                   dz   S Nr)   r  r@   s    r%   ro   z7TestJitClass.test_user_getter_setter.<locals>.Foo.value  s    yy1}$r'   c                     |dz
  | _         y r4  r  r   s     r%   ro   z7TestJitClass.test_user_getter_setter.<locals>.Foo.value  s    !G	r'   N)r+   r,   r-   r&   propertyro   setterr.   r'   r%   rl   r1    s3    ! % % \\$ $r'   rl   r   r   i  i  c                 b    | j                   }|| _         | j                   }| j                  }|||fS r    )ro   r  )r   r   r   r   r   s        r%   r   z1TestJitClass.test_user_getter_setter.<locals>.bar  s/    		ACI		AAa7Nr'   r   i6  )r   r	   rB   rK   r  ro   r
   )r$   rl   r   r   r   r   r   s          r%   test_user_getter_setterz$TestJitClass.test_user_getter_setter  s    	FE?#	$	$& 	$ 
%	$ #h3'G,	7+C( 
	 
	 c3-1aC C G$r'   c                      G d dt               }| j                  t              5 }t        |       d d d        | j	                  t        j                        d       y # 1 sw Y   /xY w)Nc                   F    e Zd Zd Zed        Zej                  d        Zy)1TestJitClass.test_user_deleter_error.<locals>.Fooc                      y r    r.   r@   s    r%   r&   z:TestJitClass.test_user_deleter_error.<locals>.Foo.__init__  r`   r'   c                      yr4  r.   r@   s    r%   ro   z7TestJitClass.test_user_deleter_error.<locals>.Foo.value  s    r'   c                      y r    r.   r@   s    r%   ro   z7TestJitClass.test_user_deleter_error.<locals>.Foo.value      r'   N)r+   r,   r-   r&   r6  ro   deleterr.   r'   r%   rl   r<    s3       ]] r'   rl   zdeleter is not supported: valuer,  r$   rl   r   s      r%   test_user_deleter_errorz$TestJitClass.test_user_deleter_error  sS    	& 	 y)VSM *V--.:	< *)r.  c                     G d dt               }| j                  t              5 }t        |dt        fg       d d d        | j                  t        j                        d       | j                  t              5 }t        |dt        fg       d d d        | j                  t        |j                        d       y # 1 sw Y   xY w# 1 sw Y   ;xY w)Nc                   (    e Zd Zd Zed        Zd Zy)3TestJitClass.test_name_shadowing_error.<locals>.Fooc                      y r    r.   r@   s    r%   r&   z<TestJitClass.test_name_shadowing_error.<locals>.Foo.__init__  r`   r'   c                      y r    r.   r@   s    r%   my_propertyz?TestJitClass.test_name_shadowing_error.<locals>.Foo.my_property  r@  r'   c                      y r    r.   r@   s    r%   	my_methodz=TestJitClass.test_name_shadowing_error.<locals>.Foo.my_method  r`   r'   N)r+   r,   r-   r&   r6  rI  rK  r.   r'   r%   rl   rF    s       r'   rl   rI  zname shadowing: my_propertyrK  zname shadowing: my_method)rB   r|   	NameErrorr   r	   rK   r   r   rB  s      r%   test_name_shadowing_errorz&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                    t        dt        fg       G d dt                     }|}t        dt        fg       G d dt                     }|} |d      }| j                  |j                  d       | j                  |j                         d        |d      }| j                  |j                  d       | j                  |j                         d	       y )
Nr!   c                       e Zd Zd Zd Zy)/TestJitClass.test_distinct_classes.<locals>.Fooc                     |dz   | _         y Nr   r!   r$   r!   s     r%   r&   z8TestJitClass.test_distinct_classes.<locals>.Foo.__init__      Qr'   c                      | j                   dz   S r4  rS  r@   s    r%   runz3TestJitClass.test_distinct_classes.<locals>.Foo.run      vvz!r'   Nr+   r,   r-   r&   rW  r.   r'   r%   rl   rP        "r'   rl   c                       e Zd Zd Zd Zy)rP  c                     |dz
  | _         y rR  rS  rT  s     r%   r&   z8TestJitClass.test_distinct_classes.<locals>.Foo.__init__  rU  r'   c                      | j                   dz
  S r4  rS  r@   s    r%   rW  z3TestJitClass.test_distinct_classes.<locals>.Foo.run  rX  r'   NrY  r.   r'   r%   rl   z/TestJitClass.test_distinct_classes.<locals>.Foo  rZ  r'   r   r      r   r   )r   r	   rB   rK   r!   rW  )r$   rl   FirstFoo	SecondFoor   s        r%   test_distinct_classesz"TestJitClass.test_distinct_classes  s    	C<.	!	"& 	" 
"	" 	C<.	!	"& 	" 
"	" 	qk"A&l"A&r'   c                     G d dt               fd} |d      }| j                  |j                  d        |d      }| j                  |j                  d        |t        j                  dg            }t        j
                  j                  |j                  dg        |t        j                  dg            }t        j
                  j                  |j                  dg       y )Nc                       e Zd Zd Zy)0TestJitClass.test_parameterized.<locals>.MyClassc                     || _         y r    ro   rr   s     r%   r&   z9TestJitClass.test_parameterized.<locals>.MyClass.__init__  	    "
r'   Nr*   r.   r'   r%   MyClassrd    s    #r'   rh  c                 D    t        dt        |       fg      } ||       S )Nro   )r   r   )ro   clsrh  s     r%   create_my_classz8TestJitClass.test_parameterized.<locals>.create_my_class  s%    7gve}%=$>?Cu:r'   r   g(@)rB   rK   ro   r   arraytestingassert_equal)r$   rk  r   r   r   drh  s         @r%   test_parameterizedzTestJitClass.test_parameterized  s    	#f 	#
	 C #&D!$'BHHcUO,


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


$0r'   c                    t         t        t         t         d}t        |       G d dt                     }d} ||      }| j	                  |j
                  |       | j	                  |j                  |dz         | j	                  |j                  |dz         | j	                  |j                  |j                         |j                  }|xj                  dz  c_        | j	                  |j                  |dz
         | j	                  |j                  d      |dz         | j	                  |j                  |dz        d       | j	                  |j                  d      |j                  dz         | j	                  |j                  d      |j                  dz         | j	                  |j                  |dz
         |xj                  d	z  c_        | j	                  |j                  |d
z
         t        d        }| j                  t        j                         5 } ||       d d d        | j#                  dt%        j&                               | j                  t(              5 }|j+                  |       d d d        | j#                  dt%        |j&                               y # 1 sw Y   xY w# 1 sw Y   ;xY w)N)ro   _value__value	__value__c                       e Zd Zd Zed        Zed        Zej                  d        Zed        Zej                  d        Zd Z	d Z
d	 Zd
 Zy)2TestJitClass.test_protected_attrs.<locals>.MyClassc                 N    || _         |dz  | _        |dz  | _        |dz
  | _        y )Nr   r)   )ro   rr  _MyClass__valuert  rr   s     r%   r&   z;TestJitClass.test_protected_attrs.<locals>.MyClass.__init__0  s*    "
#ai$qy!&r'   c                     | j                   S r    rx  r@   s    r%   private_valuez@TestJitClass.test_protected_attrs.<locals>.MyClass.private_value6      ||#r'   c                     | j                   S r    rr  r@   s    r%   _inner_valuez?TestJitClass.test_protected_attrs.<locals>.MyClass._inner_value:  s    {{"r'   c                     || _         y r    r~  r$   vs     r%   r  z?TestJitClass.test_protected_attrs.<locals>.MyClass._inner_value>  s	    r'   c                     | j                   S r    rz  r@   s    r%   __private_valuezBTestJitClass.test_protected_attrs.<locals>.MyClass.__private_valueB  r|  r'   c                     || _         y r    rz  r  s     r%   r  zBTestJitClass.test_protected_attrs.<locals>.MyClass.__private_valueF  s	     r'   c                 ,    | j                   }|| _         |S r    )_MyClass__private_value)r$   newolds      r%   swap_private_valuezETestJitClass.test_protected_attrs.<locals>.MyClass.swap_private_valueJ  s    **'*$
r'   c                      | j                   |z  S r    r~  r$   factors     r%   _protected_methodzDTestJitClass.test_protected_attrs.<locals>.MyClass._protected_methodO  s    {{V++r'   c                      | j                   |z  S r    rz  r  s     r%   __private_methodzCTestJitClass.test_protected_attrs.<locals>.MyClass.__private_methodR  s    ||f,,r'   c                 $    | j                  |      S r    )_MyClass__private_methodr  s     r%   check_private_methodzGTestJitClass.test_protected_attrs.<locals>.MyClass.check_private_methodU  s    ,,V44r'   N)r+   r,   r-   r&   r6  r{  r  r7  r  r  r  r  r  r.   r'   r%   rh  rv  -  s    + $ $ # #     !  $ $ ##! $!
,-5r'   rh  r   r   r)   r   r   d   e   c                     | j                   S r    )_TestJitClass__value)insts    r%   access_dunderz8TestJitClass.test_protected_attrs.<locals>.access_dundero  s    <<r'   r  )r	   r   r   rB   rK   ro   rr  r{  r  r  r  r  rt  r
   r|   r   r   r~   r   r   AttributeErrorpy_func)r$   rN   rh  ro   r  freeze_inst_valuer  r   s           r%   test_protected_attrsz!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,,J8,J58Kc                     ddl m} dt        i}t        ||      } |d      }| j	                  |j
                  d       | j	                  |j                  d      d       y)zM
        Methods with annotations should compile fine (issue #1911).
        r)   )AnnotatedClassr!   r   r   r   N)annotation_usecasesr  r	   r   rK   r!   r   )r$   r  rN   rj  r   s        r%   test_annotationszTestJitClass.test_annotations}  sQ    
 	8U|~t,!f"Q'r'   c                 P   t          G d dt                     }| j                  |j                  d       | j                  |j                  j                  d       | j                  |j
                  j                  d       | j                  |j                  j                  d       y )Nc                   ,    e Zd ZdZd Zd Zed        Zy)*TestJitClass.test_docstring.<locals>.AppleClass docstringc                      y)init docstringNr.   r@   s    r%   r&   z3TestJitClass.test_docstring.<locals>.Apple.__init__      r'   c                      y)foo method docstringNr.   r@   s    r%   r   z.TestJitClass.test_docstring.<locals>.Apple.foo  r  r'   c                      y)aval property docstringNr.   r@   s    r%   avalz/TestJitClass.test_docstring.<locals>.Apple.aval  r  r'   N)r+   r,   r-   __doc__r&   r   r6  r  r.   r'   r%   Appler    s#    !' * *r'   r  r  r  r  r  )r   rB   rK   r  r&   r   r  )r$   r  s     r%   test_docstringzTestJitClass.test_docstring  s    		*F 	* 
	* 	(9://1AB**,BC++-FGr'   c                     dt         fdt        fg}t        |       G d dt                     }d}d}d}||d} |d	ddi|}| j	                  |j
                  ||z         | j	                  |j                  |       y )
Nr   r   c                       e Zd Zd Zy)+TestJitClass.test_kwargs.<locals>.TestClassc                 &    ||z  | _         || _        y r    r
  r$   r!   r"   r#   s       r%   r&   z4TestJitClass.test_kwargs.<locals>.TestClass.__init__  s    Qr'   Nr*   r.   r'   r%   	TestClassr    s    r'   r  r   g?)r"   r#   r!   r.   )r	   r   r   rB   rK   r   r   )r$   rN   r  r!   r"   r#   kwargstcs           r%   test_kwargszTestJitClass.test_kwargs  s    eg  
$	 	 
	
 q!%%f%q1u%q!r'   c                    dt         fdt         fdt         fg}t        |       G d dt                     } |ddd      }| j                  |j                  d       | j                  |j
                  d       | j                  |j                  d        |dd      }| j                  |j                  d       | j                  |j
                  d       | j                  |j                  d        |dd	d
      }| j                  |j                  d       | j                  |j
                  d       | j                  |j                  d	       y )Nr!   r"   r#   c                       e Zd ZddZy)1TestJitClass.test_default_args.<locals>.TestClassc                 .    || _         || _        || _        y r    )r!   r"   r#   r  s       r%   r&   z:TestJitClass.test_default_args.<locals>.TestClass.__init__  r   r'   Nr(   r*   r.   r'   r%   r  r    s    r'   r  r)   r   r   r   )r"   r#   r!   )r	   r   rB   rK   r!   r"   r#   r$   rN   r  r  s       r%   test_default_argszTestJitClass.test_default_args  s   eee 
$	 	 
	 q!Qq!q!q!q!_q!q!q!a1%q!q!q!r'   c                 4   dt         fdt         fdt         fdt         fg}t        t        |      } |dd      }| j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       | j                  |j                  d        |d	dd
d      }| j                  |j                  d       | j                  |j
                  d	       | j                  |j                  d       | j                  |j                  d
        |d	dd
      }| j                  |j                  d       | j                  |j
                  d	       | j                  |j                  d       | j                  |j                  d
        |d	d      }| j                  |j                  d       | j                  |j
                  d	       | j                  |j                  d       | j                  |j                  d       y )Nr!   r"   r#   r   r   r   r)   r   r   *   r  )r"   r!   r   r#   )r"   r!   r   )r"   r!   )r	   r   r   rK   r!   r"   r#   r   r  s       r%   test_default_args_keyonlyz&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                 L   dt         fdt         fdt         fdt        j                  t         d      fdt         fg}| j                  t        j
                        5 }t        t        |       d d d        d}| j                  |t        j                               y # 1 sw Y   1xY w)Nr!   r"   r#   r2   r   r   z(VAR_POSITIONAL argument type unsupported)r	   r   UniTupler|   r   UnsupportedErrorr   r0   r~   r   r   )r$   rN   r   msgs       r%   &test_default_args_starargs_and_keyonlyz3TestJitClass.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                     g }t        |       G d dt                     }d }t        d      D ]B  }t         ||       |       j	                  |            D ]  \  }}| j                  ||        D y )Nc                       e Zd Zd Zd Zy)5TestJitClass.test_generator_method.<locals>.TestClassc                      y r    r.   r@   s    r%   r&   z>TestJitClass.test_generator_method.<locals>.TestClass.__init__  r`   r'   c              3   Z   K   t        |      D ]  }t        j                  |        y wr    ranger   r   )r$   niteris      r%   genz9TestJitClass.test_generator_method.<locals>.TestClass.gen  s"     uA))A,& &   )+N)r+   r,   r-   r&   r  r.   r'   r%   r  r    s    'r'   r  c              3   Z   K   t        |       D ]  }t        j                  |        y wr    r  )r  r  s     r%   expected_genz8TestJitClass.test_generator_method.<locals>.expected_gen  s"     5\iil" "r  r   )r   rB   r  rM   r  r   )r$   rN   r  r  r  expectrS   s          r%   test_generator_methodz"TestJitClass.test_generator_method  so    	$	' 	' 
	'	# 2YE"<#6	8NO''4  P r'   c                 0   dt         d d  fg}t        |       G d dt                     t        fd       }t        d        } |       }| j	                   ||d      d       | j	                   ||d      d       | j	                   ||d      d       y )	Nr   c                       e Zd Zd Zd Zd Zy),TestJitClass.test_getitem.<locals>.TestClassc                 X    t        j                  dt         j                        | _        y Nr   r   r   zerosr	   r   r@   s    r%   r&   z5TestJitClass.test_getitem.<locals>.TestClass.__init__      HHRrxx8	r'   c                 "    || j                   |<   y r    r   r$   keyr   s      r%   __setitem__z8TestJitClass.test_getitem.<locals>.TestClass.__setitem__      !%		#r'   c                      | j                   |   S r    r   r$   r  s     r%   __getitem__z8TestJitClass.test_getitem.<locals>.TestClass.__getitem__      yy~%r'   Nr+   r,   r-   r&   r  r  r.   r'   r%   r  r        9&&r'   r  c                  4            } d| d<   d| d<   d| d<   | S )Nr)   r   r   r.   )tr  s    r%   create_and_set_indicesz9TestJitClass.test_getitem.<locals>.create_and_set_indices  s*    AAaDAaDAaDHr'   c                     | |   S r    r.   )r  ns     r%   	get_indexz,TestJitClass.test_getitem.<locals>.get_index$  s    Q4Kr'   r)   r   r   r	   r   rB   r
   rK   )r$   rN   r  r  r  r  s        @r%   test_getitemzTestJitClass.test_getitem  s    q"#	$	& 	& 
	& 
	 
	 
	 
	 #$1a!,1a!,1a!,r'   c                     dt         d d  fg}t        |       G d dt                     } |       }d|d<   t        d        } ||      }| j	                  |d       | j	                  |d   d       y )	Nr   c                       e Zd Zd Zd Zd Zy)2TestJitClass.test_getitem_unbox.<locals>.TestClassc                 X    t        j                  dt         j                        | _        y r  r  r@   s    r%   r&   z;TestJitClass.test_getitem_unbox.<locals>.TestClass.__init__2  r  r'   c                 "    || j                   |<   y r    r   r  s      r%   r  z>TestJitClass.test_getitem_unbox.<locals>.TestClass.__setitem__5  r  r'   c                      | j                   |   S r    r   r  s     r%   r  z>TestJitClass.test_getitem_unbox.<locals>.TestClass.__getitem__8  r  r'   Nr  r.   r'   r%   r  r  0  r  r'   r  r   r)   c                     d| d<   | d   S )N   r   r)   r.   r  s    r%   set2return1z4TestJitClass.test_getitem_unbox.<locals>.set2return1>  s    AaDQ4Kr'   r   r  r  )r$   rN   r  r  r  t_1s         r%   test_getitem_unboxzTestJitClass.test_getitem_unbox-  s    q"#	$	& 	& 
	& K!		 
	 !nb!1r"r'   c                 F   dt         d d d d f   fg}t        |       G d dt                     } |       }d|t        dd      <   t        d        }t        d        }| j                   ||dd      d        ||ddd	       | j                  |t        dd         d	       y )
Nr   c                       e Zd Zd Zd Zd Zy)8TestJitClass.test_getitem_complex_key.<locals>.TestClassc                 X    t        j                  dt         j                        | _        y N)r   r   r   r  r@   s    r%   r&   zATestJitClass.test_getitem_complex_key.<locals>.TestClass.__init__L      HHXRXX>	r'   c                 r    || j                   t        |j                        t        |j                        f<   y r    r   ra   realimagr  s      r%   r  zDTestJitClass.test_getitem_complex_key.<locals>.TestClass.__setitem__O  s%    :>		#chh-SXX67r'   c                 p    | j                   t        |j                        t        |j                        f   S r    r  r  s     r%   r  zDTestJitClass.test_getitem_complex_key.<locals>.TestClass.__getitem__R  s&    yySXXCHH!=>>r'   Nr  r.   r'   r%   r  r   J  s    ???r'   r  r   r)   c                      | t        ||         S r    complex)r  r  r  s      r%   get_keyz6TestJitClass.test_getitem_complex_key.<locals>.get_keyY  s    WT4())r'   c                 "    || t        ||      <   y r    r
  )r  r  r  r   s       r%   set_keyz6TestJitClass.test_getitem_complex_key.<locals>.set_key]  s    %)AgdD!"r'   r   r   )r	   r   rB   r  r
   rK   )r$   rN   r  r  r  r  s         r%   test_getitem_complex_keyz%TestJitClass.test_getitem_complex_keyG  s    q!t%&	$	? 	? 
	? K'!Q-		* 
	* 
	* 
	* 	Aq)1-1a71a=)1-r'   c                    dt         d d d d f   fg}t        |       G d dt                     } |       }d|d<   t        d        }t        d        }| j	                   ||      d        ||d       | j	                  |d	   d       y )
Nr   c                       e Zd Zd Zd Zd Zy)6TestJitClass.test_getitem_tuple_key.<locals>.TestClassc                 X    t        j                  dt         j                        | _        y r  r  r@   s    r%   r&   z?TestJitClass.test_getitem_tuple_key.<locals>.TestClass.__init__j  r  r'   c                 2    || j                   |d   |d   f<   y Nr   r)   r   r  s      r%   r  zBTestJitClass.test_getitem_tuple_key.<locals>.TestClass.__setitem__m  s    ,0		#a&#a&.)r'   c                 0    | j                   |d   |d   f   S r  r   r  s     r%   r  zBTestJitClass.test_getitem_tuple_key.<locals>.TestClass.__getitem__p  s    yyQQ00r'   Nr  r.   r'   r%   r  r  h  s    ?11r'   r     r)   r)   c                     | d   S )Nr  r.   r  s    r%   get11z2TestJitClass.test_getitem_tuple_key.<locals>.get11v  s    T7Nr'   c                     || d<   y )Nr   r   r.   r  r   s     r%   set22z2TestJitClass.test_getitem_tuple_key.<locals>.set22z  s    AdGr'      r  r  )r$   rN   r  r  r  r  s         r%   test_getitem_tuple_keyz#TestJitClass.test_getitem_tuple_keye  s    q!t%&	$	1 	1 
	1 K$		 
	 
	 
	 	q2&a4"%r'   c                    dt         d d  fg}t        |       G d dt                     } |       }d|ddd<   | j                  |ddd   d       | j                  |ddd   d       t        d        }| j                   ||      d       t        d        } ||d       | j                  |ddd   d       | j                  |d	d	d   d
       y )Nr   c                       e Zd Zd Zd Zd Zy)6TestJitClass.test_getitem_slice_key.<locals>.TestClassc                 X    t        j                  dt         j                        | _        y r  r  r@   s    r%   r&   z?TestJitClass.test_getitem_slice_key.<locals>.TestClass.__init__  r  r'   c                     || j                   |j                  <   ||j                  z   | j                   |j                  <   y r    )r   startstepstop)r$   slcr   s      r%   r  zBTestJitClass.test_getitem_slice_key.<locals>.TestClass.__setitem__  s.    '+		#))$&*SXXo		#((#r'   c                 4    | j                   |j                     S r    )r   r&  )r$   r)  s     r%   r  zBTestJitClass.test_getitem_slice_key.<locals>.TestClass.__getitem__  s    yy++r'   Nr  r.   r'   r%   r  r#    s    96,r'   r  r)   r   r   c                     | ddd   S )Nr      r)   r.   r  s    r%   get5z1TestJitClass.test_getitem_slice_key.<locals>.get5  s    QqU8Or'   c                     || ddd<   y )Nr   r,  r)   r.   r  s     r%   set26z2TestJitClass.test_getitem_slice_key.<locals>.set26  s    Aa!eHr'   r,  r   )r	   r   rB   rK   r
   )r$   rN   r  r  r-  r/  s         r%   test_getitem_slice_keyz#TestJitClass.test_getitem_slice_key  s    q"#	$		, 		, 
		, K!Aa%1Qq51%1Qq51%		 
	 	a!$ 
	 
	 	a1Qq51%1Qq51%r'   c                 |   t        d      D cg c]  }t        t        d      |z          }}|D cg c]  }|dz  t        f }}|j	                  |D cg c]  }|j                         dz  t        f c}       t        |       G d dt                     } |       j                          y c c}w c c}w c c}w )N   r   r   c                       e Zd Zd Zd Zd Zy)JTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.TruncatedLabelc                     d| _         y )Ng      $@)
aaaaaaaaaar@   s    r%   r&   zSTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.TruncatedLabel.__init__  s	    "%r'   c                 b    t        j                  | j                  | j                        | _        y r    )randomgaussr6  
bbbbbbbbbbr@   s    r%   meth1zPTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.TruncatedLabel.meth1  s    "(,,t"Pr'   c                 $    | j                          y r    )r;  r@   s    r%   meth2zPTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.TruncatedLabel.meth2  s    

r'   N)r+   r,   r-   r&   r;  r=  r.   r'   r%   TruncatedLabelr4    s    &Qr'   r>  )	r  chrordr   extendupperr   rB   r=  )r$   r!   alphabetletterrN   r>  s         r%   %test_jitclass_longlabel_not_truncatedz2TestJitClass.test_jitclass_longlabel_not_truncated  s     05Ry9y!CC1%y95=>X6"g&X>(K(fllnr)73(KL	$	V 	 
	 	 # :>Ks   B/B4 B9c                    t          G d dt                     } |       }t        |      }| j                  |t        j
                         t        j                  |      }| j                  t        j                  |      |       y )Nc                       e Zd Zd Zy)5TestJitClass.test_pickling.<locals>.PickleTestSubjectc                      y r    r.   r@   s    r%   r&   z>TestJitClass.test_pickling.<locals>.PickleTestSubject.__init__  r`   r'   Nr*   r.   r'   r%   PickleTestSubjectrH    r{   r'   rJ  )
r   rB   r   r  r   ClassInstanceTypepickledumpsr   loads)r$   rJ  r  typickleds        r%   test_picklingzTestJitClass.test_pickling  si    		 	 
	 !"D\b%"9"9:,,r"fll7+R0r'   c                 .   t        dt        fg       G d d             }t        dt        fg       G d d             }| j                  |j                  t               | j                  |j
                  t               | j                  |j                  t               | j                  |j                  |j                         | j                  d|j                  dd             | j                  d	|j                  dd             | j                  d
|j                  dd              |d      } |d      }| j                  d|j                  d             | j                  d	|j                  d             | j                  d|j                  dd             | j                  d|j                  dd             | j                  d|j                  dd             | j                  d|j                  dd             | j                  d|j                  dd             | j                  d|j                  dd             | j                  t              5 }|j                  dd       d d d        | j                  dt        j                               | j                  t              5 }|j                  d       d d d        | j                  dt        |j                               t        g        G fdd                     }| j                  t        j                         5 }|j#                          d d d        | j                  dt        |j                               y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   HxY w)Nr!   c                   8    e Zd Zd Zd Zed        Zed        Zy)/TestJitClass.test_static_methods.<locals>.Test1c                     || _         y r    rS  rT  s     r%   r&   z8TestJitClass.test_static_methods.<locals>.Test1.__init__  	    r'   c                 \    | j                  | j                  |      | _        | j                  S r    r   r!   r$   r"   s     r%   increasez8TestJitClass.test_static_methods.<locals>.Test1.increase  !    $&&!,vvr'   c                     | |z   S r    r.   r
  s     r%   r   z3TestJitClass.test_static_methods.<locals>.Test1.add      1ur'   c                     | |z
  S r    r.   r
  s     r%   subz3TestJitClass.test_static_methods.<locals>.Test1.sub  r]  r'   N)r+   r,   r-   r&   rZ  staticmethodr   r_  r.   r'   r%   rf   rT    s4        r'   rf   c                   (    e Zd Zd Zd Zed        Zy)/TestJitClass.test_static_methods.<locals>.Test2c                     || _         y r    rS  rT  s     r%   r&   z8TestJitClass.test_static_methods.<locals>.Test2.__init__  rV  r'   c                 \    | j                  | j                  |      | _        | j                  S r    rX  rY  s     r%   rZ  z8TestJitClass.test_static_methods.<locals>.Test2.increase  r[  r'   c                     | |z
  S r    r.   r
  s     r%   r   z3TestJitClass.test_static_methods.<locals>.Test2.add  r]  r'   N)r+   r,   r-   r&   rZ  r`  r   r.   r'   r%   Test2rb    s       r'   rf  r   r)   r   r   r,  r   y               @y              ?foobarr   r   zhas no attribute 'sub'z'not enough arguments: expected 2, got 1c                   .    e Zd Zd Zed        Z fdZy)/TestJitClass.test_static_methods.<locals>.Test3c                      y r    r.   r@   s    r%   r&   z8TestJitClass.test_static_methods.<locals>.Test3.__init__  r`   r'   c                      y r    r.   r
  s     r%   a_static_methodz?TestJitClass.test_static_methods.<locals>.Test3.a_static_method  r@  r'   c                 (    j                  dd      S r  )rm  )r$   Test3s    r%   call_staticz;TestJitClass.test_static_methods.<locals>.Test3.call_static  s    ,,Q22r'   N)r+   r,   r-   r&   r`  rm  rp  )ro  s   r%   ro  rj  
  s!      3r'   ro  z#Unknown attribute 'a_static_method')r   r	   r  r   r   r_  assertNotEqualrK   rZ  r|   r  r~   r   r   r}   r   r   rp  )r$   rf   rf  t1t2r   invalidro  s          @r%   test_static_methodsz 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$   M24M?3N2M<?NNc                    t        t              }t                G d d             }| j                  |t               | j                  |j                  j                  |       t        |       G d d             }| j                  |t               | j                  |j                  j                  |       t         G d d             }| j                  |t               | j                  |j                  j                  |       t        |       G d	 d
             }| j                  |t               | j                  |j                  j                  |       y )NrS  c                       e Zd ZU eed<   d Zy)<TestJitClass.test_jitclass_decorator_usecases.<locals>.Test1r!   c                     d| _         y Nr   rS  r@   s    r%   r&   zETestJitClass.test_jitclass_decorator_usecases.<locals>.Test1.__init__$  rV  r'   Nrs   r.   r'   r%   rf   rx         Hr'   rf   rN   c                       e Zd Zd Zy)<TestJitClass.test_jitclass_decorator_usecases.<locals>.Test2c                     d| _         y rz  rS  r@   s    r%   r&   zETestJitClass.test_jitclass_decorator_usecases.<locals>.Test2.__init__-  rV  r'   Nr*   r.   r'   r%   rf  r~  *      r'   rf  c                       e Zd ZU eed<   d Zy)<TestJitClass.test_jitclass_decorator_usecases.<locals>.Test3r!   c                     d| _         y rz  rS  r@   s    r%   r&   zETestJitClass.test_jitclass_decorator_usecases.<locals>.Test3.__init__7  rV  r'   Nrs   r.   r'   r%   ro  r  3  r{  r'   ro  c                       e Zd Zd Zy)<TestJitClass.test_jitclass_decorator_usecases.<locals>.Test4c                     d| _         y rz  rS  r@   s    r%   r&   zETestJitClass.test_jitclass_decorator_usecases.<locals>.Test4.__init__@  rV  r'   Nr*   r.   r'   r%   Test4r  =  r  r'   r  r   r   r   r  r   assertDictEqualrC   rF   )r$   rN   rf   rf  ro  r  s         r%    test_jitclass_decorator_usecasesz-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                 j   t        t              } G d d      }t        |      }| j                  |t               | j                  |j                  j                  |        G d d      }t        ||      }| j                  |t               | j                  |j                  j                  |       y )NrS  c                       e Zd ZU eed<   d Zy)CTestJitClass.test_jitclass_function_usecases.<locals>.AnnotatedTestr!   c                     d| _         y rz  rS  r@   s    r%   r&   zLTestJitClass.test_jitclass_function_usecases.<locals>.AnnotatedTest.__init__L  rV  r'   Nrs   r.   r'   r%   AnnotatedTestr  I  s    Hr'   r  c                       e Zd Zd Zy)ETestJitClass.test_jitclass_function_usecases.<locals>.UnannotatedTestc                     d| _         y rz  rS  r@   s    r%   r&   zNTestJitClass.test_jitclass_function_usecases.<locals>.UnannotatedTest.__init__U  rV  r'   Nr*   r.   r'   r%   UnannotatedTestr  S      r'   r  r  )r$   rN   r  JitTest1r  JitTest2s         r%   test_jitclass_function_usecasesz,TestJitClass.test_jitclass_function_usecasesF  s    W%	 	 M*h5X0077>	 	
 OT2h5X0077>r'   c                    t        t              }t        |       G d dt                     t        |       G d dt                     fd}|}t	        |      }| j                  t               | j                   | d             | d                   | j                   | d             | d                   | j                   |d	       |d	             y )
Nrf  c                       e Zd Zd Zd Zd Zy)2TestJitClass.test_jitclass_isinstance.<locals>.Fooc                     || _         y r    rf  rr   s     r%   r&   z;TestJitClass.test_jitclass_isinstance.<locals>.Foo.__init__a  rg  r'   c                     | j                   S r    rf  r@   s    r%   getValuez;TestJitClass.test_jitclass_isinstance.<locals>.Foo.getValued      zz!r'   c                      | j                   dz   S r4  rf  r@   s    r%   getValueIncrz?TestJitClass.test_jitclass_isinstance.<locals>.Foo.getValueIncrg  s    zzA~%r'   N)r+   r,   r-   r&   r  r  r.   r'   r%   rl   r  _  s    #"&r'   rl   c                       e Zd Zd Zd Zy)2TestJitClass.test_jitclass_isinstance.<locals>.Barc                     || _         y r    rf  rr   s     r%   r&   z;TestJitClass.test_jitclass_isinstance.<locals>.Bar.__init__l  rg  r'   c                     | j                   S r    rf  r@   s    r%   r  z;TestJitClass.test_jitclass_isinstance.<locals>.Bar.getValueo  r  r'   N)r+   r,   r-   r&   r  r.   r'   r%   rt   r  j  s    #"r'   rt   c                     t        | f      rF| j                         }t        |       r| j                         |z   dfS | j                         |z   dfS y)Nrl   rt   zno match)rI   r  r  )r   r!   rt   rl   s     r%   test_jitclass_isinstancezGTestJitClass.test_jitclass_isinstance.<locals>.test_jitclass_isinstancer  sX    #Sz*LLNc3'++-1588<<>A-u44!r'   r   r   r   )r   r	   r   rB   r
   r  r   rK   )r$   rN   r  pyfunccfuncrt   rl   s        @@r%   r  z%TestJitClass.test_jitclass_isinstance\  s    '	$	&& 	& 
	& 
$	"& 	" 
	"		" *-.c<0As1v7C)5S?;E!H-r'   c                     | j                  t              5 }t         G d dt                     } |        d d d        | j	                  dt        j                               y # 1 sw Y   /xY w)Nc                       e Zd Zd Zd Zy):TestJitClass.test_jitclass_unsupported_dunder.<locals>.Fooc                      y r    r.   r@   s    r%   r&   zCTestJitClass.test_jitclass_unsupported_dunder.<locals>.Foo.__init__  s    r'   c                      y r    r.   r@   s    r%   	__enter__zDTestJitClass.test_jitclass_unsupported_dunder.<locals>.Foo.__enter__  s    r'   N)r+   r,   r-   r&   r  r.   r'   r%   rl   r    s     r'   rl   z$Method '__enter__' is not supported.)r|   r}   r   rB   r~   r   r   )r$   erl   s      r%    test_jitclass_unsupported_dunderz-TestJitClass.test_jitclass_unsupported_dunder  sZ    y)Q f     E * 	<c!++>NO *)s    A$$A-c                 |    t          G d dt                     }t        }|j                  }| j	                  ||       y )Nc                       e Zd Zd Zy)1TestJitClass.test_modulename.<locals>.TestModnamec                     d| _         y )N   rS  r@   s    r%   r&   z:TestJitClass.test_modulename.<locals>.TestModname.__init__  s	    r'   Nr*   r.   r'   r%   TestModnamer    s    r'   r  )r   rB   r+   r,   rK   )r$   r  
thisModuleclassModules       r%   test_modulenamezTestJitClass.test_modulename  s=    		& 	 
	 
!,,[1r'   )NNN)1r+   r,   r-   rU   rY   r[   rh   rv   r   r   r   r   r   r   r   r   r  r  r  r  r%  r-  r9  rC  rM  ra  rp  r  r   r  r  r  r  r  r  r  r  r  r  r   r0  rE  rQ  ru  r  r  r  r  r  r.   r'   r%   r;   r;   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'   r;   c                       e Zd Z G d d      Zed        Zed        ZddZd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zed        Zd Zd Zy)TestJitClassOverloadsc                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)TestJitClassOverloads.PyListc                     dg| _         y rz  rS  r@   s    r%   r&   z%TestJitClassOverloads.PyList.__init__  s    SDFr'   c                 :    | j                   j                  |       y r    r!   appendrY  s     r%   r  z#TestJitClassOverloads.PyList.append  s    FFMM!r'   c                 8    | j                   j                          y r    )r!   clearr@   s    r%   r  z"TestJitClassOverloads.PyList.clear  s    FFLLNr'   c                 2    t        | j                        dz  S r   rL   r!   r@   s    r%   __abs__z$TestJitClassOverloads.PyList.__abs__      tvv;?"r'   c                 8    t        | j                        dz  dk7  S )Nr   r   r  r@   s    r%   __bool__z%TestJitClassOverloads.PyList.__bool__  s    tvv;?a''r'   c                 X    t        d      }| j                  r|| j                  d   z  }|S )Nr   r   )r  r!   )r$   r   s     r%   __complex__z(TestJitClassOverloads.PyList.__complex__  s(    
AvvTVVAYHr'   c                     || j                   v S r    rS  rY  s     r%   __contains__z)TestJitClassOverloads.PyList.__contains__  s    ;r'   c                 F    d}| j                   r|| j                   d   z  }|S )Nr   r   rS  )r$   fs     r%   	__float__z&TestJitClassOverloads.PyList.__float__  s$    AvvTVVAYHr'   c                 F    d}| j                   r|| j                   d   z  }|S )Nr   r   rS  )r$   r  s     r%   __int__z$TestJitClassOverloads.PyList.__int__  s$    AvvTVVAYHr'   c                 2    t        | j                        dz   S r4  r  r@   s    r%   __len__z$TestJitClassOverloads.PyList.__len__  r  r'   c                 6    t        | j                        dk(  ryy)Nr   zPyList emptyzPyList non-emptyr  r@   s    r%   __str__z$TestJitClassOverloads.PyList.__str__  s    466{a%)r'   N)r+   r,   r-   r&   r  r  r  r  r  r  r  r  r  r  r.   r'   r%   PyListr    s9    				#	(					#	*r'   r  c                  ^     t        dt        j                  fg       G  fdd               S )Nr!   c                   R    e Zd Zd Zd Zd Z fdZ fdZ fdZ fdZ	 fdZ
y	)
9TestJitClassOverloads.get_int_wrapper.<locals>.IntWrapperc                     || _         y r    rS  rr   s     r%   r&   zBTestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__init__  	    r'   c                 4    | j                   |j                   k(  S r    rS  r$   r   s     r%   __eq__z@TestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__eq__      vv((r'   c                     | j                   S r    rS  r@   s    r%   __hash__zBTestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__hash__      vvr'   c                 B     | j                   |j                   z        S r    rS  r$   r   
IntWrappers     r%   
__lshift__zDTestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__lshift__      !$&&EGG"344r'   c                 B     | j                   |j                   z	        S r    rS  r  s     r%   
__rshift__zDTestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__rshift__  r  r'   c                 B     | j                   |j                   z        S r    rS  r  s     r%   __and__zATestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__and__      !$&&577"233r'   c                 B     | j                   |j                   z        S r    rS  r  s     r%   __or__z@TestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__or__  r  r'   c                 B     | j                   |j                   z        S r    rS  r  s     r%   __xor__zATestJitClassOverloads.get_int_wrapper.<locals>.IntWrapper.__xor__  r  r'   N)r+   r,   r-   r&   r  r  r  r  r  r  r  r  s   r%   r  r    s+    )55444r'   r  )r   r   intpr  s   @r%   get_int_wrapperz%TestJitClassOverloads.get_int_wrapper  s3    	C$%	&	4 	4 
'	42 r'   c                  ^     t        dt        j                  fg       G  fdd               S )Nr!   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	 fdZ
 fd	Z fd
Z fdZ fdZ fdZ fdZ fdZ fdZy)=TestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapperc                     || _         y r    rS  rr   s     r%   r&   zFTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__init__  r  r'   c                 4    | j                   |j                   k(  S r    rS  r  s     r%   r  zDTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__eq__  r  r'   c                     | j                   S r    rS  r@   s    r%   r  zFTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__hash__  r  r'   c                 4    | j                   |j                   k\  S r    rS  r  s     r%   __ge__zDTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__ge__  r  r'   c                 4    | j                   |j                   kD  S r    rS  r  s     r%   __gt__zDTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__gt__      vv''r'   c                 4    | j                   |j                   k  S r    rS  r  s     r%   __le__zDTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__le__  r  r'   c                 4    | j                   |j                   k  S r    rS  r  s     r%   __lt__zDTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__lt__  r  r'   c                 B     | j                   |j                   z         S r    rS  r$   r   FloatWrappers     r%   __add__zETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__add__      #DFFUWW$455r'   c                 B     | j                   |j                   z        S r    rS  r  s     r%   __floordiv__zJTestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__floordiv__      #DFFegg$566r'   c                 B     | j                   |j                   z        S r    rS  r  s     r%   __mod__zETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__mod__
  r  r'   c                 B     | j                   |j                   z        S r    rS  r  s     r%   __mul__zETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__mul__  r  r'   c                 *     | j                          S r    rS  r  s     r%   __neg__zETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__neg__      #TVVG,,r'   c                 *     | j                         S r    rS  r  s     r%   __pos__zETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__pos__  r  r'   c                 B     | j                   |j                   z        S r    rS  r  s     r%   __pow__zETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__pow__  r  r'   c                 B     | j                   |j                   z
        S r    rS  r  s     r%   __sub__zETestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__sub__  r  r'   c                 B     | j                   |j                   z        S r    rS  r  s     r%   __truediv__zITestJitClassOverloads.get_float_wrapper.<locals>.FloatWrapper.__truediv__  r  r'   N)r+   r,   r-   r&   r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r  r  s   r%   r  r    sS    ))()(6766--766r'   r  )r   r   r   r  s   @r%   get_float_wrapperz'TestJitClassOverloads.get_float_wrapper  s4    	C'(	)0	6 0	6 
*0	6d r'   Nc                 x    | j                  t        |      t        |      |       | j                  |||       y )N)r  )rK   type)r$   r   r   r  s       r%   
assertSamez TestJitClassOverloads.assertSame!  s4    ed6l<C0r'   c                 x    t        dt        j                  t        j                        i      | j                        }d d d d d d d d	 d
 d d d d d d d d g}|D cg c]  }t        |       }}| j	                         } |       }t        ||      D ]A  \  }}| j                   ||       ||             | j                   ||       ||             C |j                  d       |j                  d       t        ||      D ]A  \  }}| j                   ||       ||             | j                   ||       ||             C |j                  d       |j                  d       t        ||      D ]A  \  }}| j                   ||       ||             | j                   ||       ||             C |j                          |j                          t        ||      D ]A  \  }}| j                   ||       ||             | j                   ||       ||             C y c c}w )Nr!   c                     t        |       S r    )absrS  s    r%   <lambda>z6TestJitClassOverloads.test_overloads.<locals>.<lambda>+      c!fr'   c                 "    | j                         S r    )r  rS  s    r%   r#  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>,  
    aiikr'   c                     t        |       S r    boolrS  s    r%   r#  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>-  s    d1gr'   c                 "    | j                         S r    )r  rS  s    r%   r#  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>.  s
    ajjlr'   c                     t        |       S r    r
  rS  s    r%   r#  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>/  s    gajr'   c                 "    | j                         S r    )r  rS  s    r%   r#  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>0  s
    ammor'   c                 
    d| v S rz  r.   rS  s    r%   r#  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>1  s    a1fr'   c                 $    | j                  d      S rz  )r  rS  s    r%   r#  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>2  s    annQ'r'   c                     t        |       S r    re   rS  s    r%   r#  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>3  s    eAhr'   c                 "    | j                         S r    )r  rS  s    r%   r#  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>4  s
    akkmr'   c                     t        |       S r    ra   rS  s    r%   r#  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>5  r$  r'   c                 "    | j                         S r    )r  rS  s    r%   r#  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>6  r&  r'   c                     t        |       S r    )rL   rS  s    r%   r#  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>7  r$  r'   c                 "    | j                         S r    )r  rS  s    r%   r#  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>8  r&  r'   c                     t        |       S r    )r   rS  s    r%   r#  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>9  r$  r'   c                 "    | j                         S r    )r  rS  s    r%   r#  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>:  r&  r'   c                     | rdS dS )Nr)   r   r.   rS  s    r%   r#  z6TestJitClassOverloads.test_overloads.<locals>.<lambda>;  s    1am!mr'   r   )
r   r   rd   r  r  r
   rM   r  r  r  )	r$   JitListpy_funcsr  	jit_funcspy_listjit_listpy_fjit_fs	            r%   test_overloadsz$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   'H7c                    d }t        |      }t        dt        j                  t        j                        fg       G d d             } |g d      }| j                   ||             | j                   ||             |j                  d       | j                   ||             | j                   ||             |j                          | j                   ||             | j                   ||             t        dt        j                  fg       G d d	             } |d
      }| j                   ||             | j                   ||             y )Nc                     t        |       S r    r(  rS  s    r%   py_bz6TestJitClassOverloads.test_bool_fallback.<locals>.py_bY      7Nr'   r!   c                   $    e Zd Zd Zd Zd Zd Zy):TestJitClassOverloads.test_bool_fallback.<locals>.LenClassc                     || _         y r    rS  rT  s     r%   r&   zCTestJitClassOverloads.test_bool_fallback.<locals>.LenClass.__init__`  rV  r'   c                 2    t        | j                        dz  S )Nr   r  r@   s    r%   r  zBTestJitClassOverloads.test_bool_fallback.<locals>.LenClass.__len__c  s    466{Q&r'   c                 :    | j                   j                  |       y r    r  rY  s     r%   r  zATestJitClassOverloads.test_bool_fallback.<locals>.LenClass.appendf  s    a r'   c                 :    | j                   j                  d       y rz  )r!   popr@   s    r%   rM  z>TestJitClassOverloads.test_bool_fallback.<locals>.LenClass.popi  s    

1r'   N)r+   r,   r-   r&   r  r  rM  r.   r'   r%   LenClassrH  ^  s    '!r'   rN  )r)   r   r   r   r"   c                       e Zd Zd Zy)=TestJitClassOverloads.test_bool_fallback.<locals>.NormalClassc                     || _         y r    )r"   rY  s     r%   r&   zFTestJitClassOverloads.test_bool_fallback.<locals>.NormalClass.__init__z  rV  r'   Nr*   r.   r'   r%   NormalClassrP  x  r  r'   rR  r   )
r
   r   r   rd   r  r   r  r   rM  r   )r$   rE  jit_brN  r   rR  s         r%   test_bool_fallbackz(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                 <	   d }d }d }t        |      }t        |      }t        |      }t        g        G d d             } |       }| j                   ||      t        d             | j                   ||      t        d             | j                   ||      d       | j                   ||      d       | j	                  t
              5 }	 ||       d d d        | j                  dt        	j                               | j	                  t              5 }	 ||       d d d        | j                  dt        |	j                               t        g        G d d	             }
 |
       }| j                   ||      d
       | j                   ||      d
       | j	                  t
              5 }	 ||       d d d        | j                  dt        |	j                               | j	                  t              5 }	 ||       d d d        | j                  dt        |	j                               | j	                  t
              5 }	 ||       d d d        | j                  dt        |	j                               | j	                  t              5 }	 ||       d d d        | j                  dt        |	j                               t        g        G d d             } |       }| j                   ||      t        d             | j                   ||      t        d             | j                   ||      d       | j                   ||      d       | j                   ||      d       | j                   ||      d       t        g        G d d             } |       }| j                   ||      t        d             | j                   ||      t        d             | j                   ||      d       | j                   ||      d       | j                   ||      d
       | j                   ||      d
       y # 1 sw Y   xxY w# 1 sw Y   :xY w# 1 sw Y   xY w# 1 sw Y   oxY w# 1 sw Y   1xY w# 1 sw Y   xY w)Nc                     t        |       S r    r
  rS  s    r%   py_cz9TestJitClassOverloads.test_numeric_fallback.<locals>.py_c  s    1:r'   c                     t        |       S r    r0  rS  s    r%   r@  z9TestJitClassOverloads.test_numeric_fallback.<locals>.py_f  s    8Or'   c                     t        |       S r    r3  rS  s    r%   py_iz9TestJitClassOverloads.test_numeric_fallback.<locals>.py_i  s    q6Mr'   c                       e Zd Zd Zd Zy)?TestJitClassOverloads.test_numeric_fallback.<locals>.FloatClassc                      y r    r.   r@   s    r%   r&   zHTestJitClassOverloads.test_numeric_fallback.<locals>.FloatClass.__init__  r`   r'   c                      yNr   r.   r@   s    r%   r  zITestJitClassOverloads.test_numeric_fallback.<locals>.FloatClass.__float__      r'   N)r+   r,   r-   r&   r  r.   r'   r%   
FloatClassr\    s    r'   ra  r   ra   c                       e Zd Zd Zd Zy)=TestJitClassOverloads.test_numeric_fallback.<locals>.IntClassc                      y r    r.   r@   s    r%   r&   zFTestJitClassOverloads.test_numeric_fallback.<locals>.IntClass.__init__  r`   r'   c                      yr   r.   r@   s    r%   r  zETestJitClassOverloads.test_numeric_fallback.<locals>.IntClass.__int__  r   r'   N)r+   r,   r-   r&   r  r.   r'   r%   IntClassrc        r'   rf  r   r  re   c                       e Zd Zd Zd Zy)?TestJitClassOverloads.test_numeric_fallback.<locals>.IndexClassc                      y r    r.   r@   s    r%   r&   zHTestJitClassOverloads.test_numeric_fallback.<locals>.IndexClass.__init__  r`   r'   c                      yr4  r.   r@   s    r%   	__index__zITestJitClassOverloads.test_numeric_fallback.<locals>.IndexClass.__index__  r   r'   N)r+   r,   r-   r&   rl  r.   r'   r%   
IndexClassri    rg  r'   rm  r)         ?c                   $    e Zd Zd Zd Zd Zd Zy)GTestJitClassOverloads.test_numeric_fallback.<locals>.FloatIntIndexClassc                      y r    r.   r@   s    r%   r&   zPTestJitClassOverloads.test_numeric_fallback.<locals>.FloatIntIndexClass.__init__  r`   r'   c                      yr_  r.   r@   s    r%   r  zQTestJitClassOverloads.test_numeric_fallback.<locals>.FloatIntIndexClass.__float__  r`  r'   c                      yr   r.   r@   s    r%   r  zOTestJitClassOverloads.test_numeric_fallback.<locals>.FloatIntIndexClass.__int__  r   r'   c                      yr4  r.   r@   s    r%   rl  zQTestJitClassOverloads.test_numeric_fallback.<locals>.FloatIntIndexClass.__index__  r   r'   N)r+   r,   r-   r&   r  r  rl  r.   r'   r%   FloatIntIndexClassrp    s    r'   ru  )
r
   r   r  r  r|   r}   r~   r   r   r   )r$   rW  r@  rZ  jit_crA  jit_ira  r   r  rf  rm  ru  s                r%   test_numeric_fallbackz+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	Q*	Q7	R	RQQ'*Q47RRRc                    | j                         }| j                         }d d d d d d d d d	 d
 d d d g}d d d d d d d g}g d}d }t        j                  t	        t
        |      |      D ]  \  }\  }}	|j                  }
 |
||	      } ||      } ||	      }t        |      t        ur| j                  n| j                  } || |||	              || | |
||                    || | |||                    t        j                  t	        t
        |      |      D ]  \  }\  }}	|j                  }
t        |      t        |	      }	} |
||	      } ||      } ||	      }| j                  | |||	             | j                  | | |
||                   | j                  | | |||                    y )Nc                     | |k(  S r    r.   r   s     r%   r#  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>      ar'   c                     | |k7  S r    r.   r   s     r%   r#  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r{  r'   c                     | |k\  S r    r.   r   s     r%   r#  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r{  r'   c                     | |kD  S r    r.   r   s     r%   r#  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>      Qr'   c                     | |k  S r    r.   r   s     r%   r#  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r{  r'   c                     | |k  S r    r.   r   s     r%   r#  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |z   S r    r.   r   s     r%   r#  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |z  S r    r.   r   s     r%   r#  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r{  r'   c                     | |z  S r    r.   r   s     r%   r#  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |z  S r    r.   r   s     r%   r#  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |z  S r    r.   r   s     r%   r#  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r{  r'   c                     | |z
  S r    r.   r   s     r%   r#  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |z  S r    r.   r   s     r%   r#  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |k(  S r    r.   r   s     r%   r#  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r{  r'   c                     | |k7  S r    r.   r   s     r%   r#  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r{  r'   c                     | |z  S r    r.   r   s     r%   r#  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r{  r'   c                     | |z	  S r    r.   r   s     r%   r#  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r{  r'   c                     | |z  S r    r.   r   s     r%   r#  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |z  S r    r.   r   s     r%   r#  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   c                     | |z  S r    r.   r   s     r%   r#  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r'   )ru          @)gX9v?r   )g333333*@g)\(?c                     t        | d|       S )Nr!   )getattrrf  s    r%   unwrapz=TestJitClassOverloads.test_arithmetic_logical.<locals>.unwrap  s    5#u--r'   )r  r  	itertoolsproductmapr
   r  r  re   rK   assertAlmostEqualra   )r$   r  r  float_py_funcsint_py_funcstest_valuesr  rA  r!   r"   r@  rT   jit_xjit_ychecks                  r%   test_arithmetic_logicalz-TestJitClassOverloads.test_arithmetic_logical  s   ))+
--/  
   

	. '..D.);8ME6Aq ==DAqzH OE OE >.   ++ 
 (E!QK((F4u#567(F5#678!8$ '..D,'6ME6Aq ==Dq63q6qAAqzHqMEqMEXuQ{3Xvd5%.@'ABXveE5.A'BC6r'   c           
      <   | j                         }| j                         }|j                         d   }|j                         d   }t        dt        j
                  fg       G fdd|             t        dt        j                  i       G fdd|             j                         d   }j                         d   }d }dD cg c]
  } ||       }	}d	D cg c]
  } ||       }
}g d
}t        j                  t        t        |	      ||f|fg|      D ]  \  }\  }}\  }}|j                  } | ||       ||            j                  }| j                  | | ||       ||            j                         | j                  | | ||       ||            j                          t        j                  t        t        |
      ||f|fg|      D ]  \  }\  }}\  }}t        |      t        |      }}|j                  } | ||       ||            j                  }| j                  | | ||       ||            j                         | j                  | | ||       ||            j                          y c c}w c c}w )Nr)   r!   c                   F    e Zd Zd Z fdZ fdZ fdZ fdZ fdZy)RTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapperc                     || _         y r    rS  rr   s     r%   r&   z[TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__init__5  r  r'   c                 B     | j                   |j                   z        S r    rS  r$   r   JitIntUpdateWrappers     r%   __ilshift__z^TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__ilshift__8      *466UWW+<==r'   c                 B     | j                   |j                   z	        S r    rS  r  s     r%   __irshift__z^TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__irshift__;  r  r'   c                 B     | j                   |j                   z        S r    rS  r  s     r%   __iand__z[TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__iand__>      *466EGG+;<<r'   c                 B     | j                   |j                   z        S r    rS  r  s     r%   __ior__zZTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__ior__A  r  r'   c                 B     | j                   |j                   z        S r    rS  r  s     r%   __ixor__z[TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__ixor__D  r  r'   N)	r+   r,   r-   r&   r  r  r  r  r  )r  s   r%   r  r  3  s!    >>===r'   r  c                   Z    e Zd Zd Z fdZ fdZ fdZ fdZ fdZ fdZ	 fdZ
y	)
TTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapperc                     || _         y r    rS  rr   s     r%   r&   z]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__init__J  r  r'   c                 H     | j                   d|j                   z  z         S NgX9v@rS  r$   r   JitFloatUpdateWrappers     r%   __iadd__z]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__iadd__M  s    ,TVVeeggo-EFFr'   c                 H     | j                   dz  |j                   z        S r  rS  r  s     r%   __ifloordiv__zbTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__ifloordiv__P  s    ,TVVe^uww-FGGr'   c                 H     | j                   |j                   dz   z        S r4  rS  r  s     r%   __imod__z]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__imod__S  s    ,TVVuww{-CDDr'   c                 H     | j                   |j                   z  dz         S r4  rS  r  s     r%   __imul__z]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__imul__V  s     ,TVVegg-=-ABBr'   c                 H     | j                   |j                   z  dz         S r4  rS  r  s     r%   __ipow__z]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__ipow__Y  s     ,TVVuww->-BCCr'   c                 H     | j                   d|j                   z  z
        S r_  rS  r  s     r%   __isub__z]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__isub__\  s     ,TVVfuww6F-FGGr'   c                 H     | j                   dz   |j                   z        S r4  rS  r  s     r%   __itruediv__zaTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__itruediv___  s    ,dffqjEGG-CDDr'   N)r+   r,   r-   r&   r  r  r  r  r  r  r  )r  s   r%   r  r  G  s2    GHECDHEr'   r  c                 4    d|  d}i }t        ||       |d   S )Nz
def f(x, y):
    x z= y
    return x
r  )exec)optemplate	namespaces      r%   get_update_funczNTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.get_update_funce  s3    	d H
 I9%S>!r'   )+//%***-/)<<>>&|^r  )r  r  mror   r   r  r   r  r  r  r
   r  r!   r  ra   rK   )r$   JitIntWrapperJitFloatWrapperPyIntWrapperPyFloatWrapperPyIntUpdateWrapperPyFloatUpdateWrapperr  r  r  r  r  rA  py_clsjit_clsr!   r"   r@  rT   r  r  s                      @@r%   test_arithmetic_logical_inplacez5TestJitClassOverloads.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$FGfq! ==DF1Ivay133H""8T'!*gaj-I-K-KL""8U71:wqz-J-L-LM1 1:0A0AD,'!=1')<= 1,E$FGfq! q63q6qA==DF1Ivay133HXtGAJ
'C'E'EFXuWQZ'D'F'FG15s   J"Jc           
           G d d      } G d d|      }d }d }d }d }g d	}t        j                  ||gd
dg      D ]  \  }}	|	rt        n|}
 |
|      } |
|      } |
|      }t        |      }dD ]#  }| j	                   | ||            |dz         % |D ]m  \  }}| j	                   | ||       ||             ||       ||      k(         | j	                   | ||       ||             ||       ||      k7         o  y )Nc                   *    e Zd ZU eed<   d Zd Zd Zy)9TestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqTestr!   c                     || _         y r    rS  rT  s     r%   r&   zBTestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqTest.__init__  rV  r'   c                      | j                   dz  S )Nr   rS  r@   s    r%   r  zBTestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqTest.__hash__  s    vv{"r'   c                 @    | j                   |j                   z
  dz  dk(  S )Nr  r   rS  r$   os     r%   r  z@TestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqTest.__eq__  s    *a//r'   N)r+   r,   r-   ra   rb   r&   r  r  r.   r'   r%   
HashEqTestr    s    F#0r'   r  c                       e Zd Zd Zy);TestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqNeTestc                 @    | j                   |j                   z
  dz  dkD  S )Nr  r)   rS  r  s     r%   __ne__zBTestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqNeTest.__ne__  s    *Q..r'   N)r+   r,   r-   r  r.   r'   r%   HashEqNeTestr    s    /r'   r  c                     t        |       S r    )hashrS  s    r%   py_hashz6TestJitClassOverloads.test_hash_eq_ne.<locals>.py_hash  rF  r'   c                     | |k(  S r    r.   r   s     r%   py_eqz4TestJitClassOverloads.test_hash_eq_ne.<locals>.py_eq      6Mr'   c                     | |k7  S r    r.   r   s     r%   py_nez4TestJitClassOverloads.test_hash_eq_ne.<locals>.py_ne  r  r'   c                     | S r    r.   )r  s    r%   identity_decoratorzATestJitClassOverloads.test_hash_eq_ne.<locals>.identity_decorator  s    Hr'   ))r   r)   )r   r  )r   r   )r   r   FT)r   r   r      ir   )r  r  r
   r   rK   )r$   r  r  r  r  r  r  comparisonsbase_clsuse_jit	decorator	hash_funceq_funcne_funcr  r  r!   r"   s                     r%   test_hash_eq_nez%TestJitClassOverloads.test_hash_eq_ne  s*   
	0 
	0	/: 	/				
 "+!2!2&"
Hg !(-?I!'*I&G&Gx(G'  71:!6B? ( $1  GAJ
3QK8A;.   GAJ
3QK8A;. $"
r'   c                     G d d      }|} t        dt        j                  fg      |      } |d      j                         } |d      j                         } |d      j                         } |d      j                         }| j	                  ||       | j	                  ||       | j	                  t        |      t        |             | j	                  t        |      t        |             y )Nc                       e Zd Zd Zd Zd Zy)BTestJitClassOverloads.test_bool_fallback_len.<locals>.NoBoolHasLenc                     || _         y r    r   r   s     r%   r&   zKTestJitClassOverloads.test_bool_fallback_len.<locals>.NoBoolHasLen.__init__  r   r'   c                     | j                   S r    r   r@   s    r%   r  zJTestJitClassOverloads.test_bool_fallback_len.<locals>.NoBoolHasLen.__len__  s    xxr'   c                     t        |       S r    r(  r@   s    r%   get_boolzKTestJitClassOverloads.test_bool_fallback_len.<locals>.NoBoolHasLen.get_bool      Dz!r'   N)r+   r,   r-   r&   r  r	  r.   r'   r%   NoBoolHasLenr    s     "r'   r  r   r   r   )r   r   int64r	  rK   r  )r$   r  py_classjitted_classpy_class_0_boolpy_class_2_booljitted_class_0_booljitted_class_2_bools           r%   test_bool_fallback_lenz,TestJitClassOverloads.test_bool_fallback_len  s    "	" 	"  7x%!5 67A"1+..0"1+..0*1o668*1o668 	*=>*=> 	o.5H0IJo.5H0IJr'   c                      G d d      }|} t        g       |      } |       j                         } |       j                         }| j                  ||       | j                  t        |      t        |             y )Nc                       e Zd Zd Zd Zy)ETestJitClassOverloads.test_bool_fallback_default.<locals>.NoBoolNoLenc                      y r    r.   r@   s    r%   r&   zNTestJitClassOverloads.test_bool_fallback_default.<locals>.NoBoolNoLen.__init__  r`   r'   c                     t        |       S r    r(  r@   s    r%   r	  zNTestJitClassOverloads.test_bool_fallback_default.<locals>.NoBoolNoLen.get_bool  r
  r'   N)r+   r,   r-   r&   r	  r.   r'   r%   NoBoolNoLenr    s    "r'   r  )r   r	  rK   r  )r$   r  r  r  py_class_booljitted_class_bools         r%   test_bool_fallback_defaultz0TestJitClassOverloads.test_bool_fallback_default  st    	" 	" #x|H- 
++-(N335 	(9: 	m,d3D.EFr'   c                     G d d      } G d d      }dt         j                  fg} t        |      |      } t        |      |      } |d      } |d      } |d      } |d      }	| j                  ||k(  |	|k(         | j                  ||k  |	|k         | j                  ||k  |	|k         | j                  ||k\  |	|k\         | j                  ||kD  |	|kD         y )Nc                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)HTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefinedc                     || _         y r    rS  rT  s     r%   r&   zQTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__init__  rV  r'   c                 4    | j                   |j                   k(  S r    rS  r  s     r%   r  zOTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__eq__  r  r'   c                 4    | j                   |j                   k  S r    rS  r  s     r%   r  zOTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__le__  r  r'   c                 4    | j                   |j                   k  S r    rS  r  s     r%   r  zOTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__lt__   r  r'   c                 4    | j                   |j                   k\  S r    rS  r  s     r%   r  zOTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__ge__#  r  r'   c                 4    | j                   |j                   kD  S r    rS  r  s     r%   r  zOTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__gt__&  r  r'   N)	r+   r,   r-   r&   r  r  r  r  r  r.   r'   r%   OperatorsDefinedr    s     ))()(r'   r&  c                       e Zd Zd Zy)JTestJitClassOverloads.test_operator_reflection.<locals>.NoOperatorsDefinedc                     || _         y r    rS  rT  s     r%   r&   zSTestJitClassOverloads.test_operator_reflection.<locals>.NoOperatorsDefined.__init__*  rV  r'   Nr*   r.   r'   r%   NoOperatorsDefinedr(  )      r'   r*  r!   r   r   )r   r	   r   rK   )
r$   r&  r*  rN   JitOperatorsDefinedJitNoOperatorsDefinedpy_ops_definedpy_ops_not_definedjit_ops_definedjit_ops_not_defineds
             r%   test_operator_reflectionz.TestJitClassOverloads.test_operator_reflection  s   	( 	(&	 	 ekk"#,htn-=> ./A B)!,/2-a03A6+~=,?	A 	+~=,?	A 	+n<,>	@ 	+~=,?	A 	+n<,>	@r'   c           
          G d d      } G d d      }d}t         j                  j                  d       t         j                  j                  |f      }t         j                  j                  ||f      } ||      } ||      } t        |dt        d d d   i	      |      } t        |dt        d d d   i	      |      }	 ||      }
 ||      } t        |dt        d d d d df   i	      |      } t        |dt        d d d d df   i	      |      }t         j
                  j                  ||z  |	|z         t         j
                  j                  ||
z  |	|z         t         j
                  j                  ||z  ||z         t         j
                  j                  ||
z  ||z         t         j
                  j                  ||z  ||	z         t         j
                  j                  ||z  ||z         t         j
                  j                  |
|z  ||	z         t         j
                  j                  |
|z  ||z         ||
z  }||
z  }|	|z  }	||z  }t         j
                  j                  |j                  |	j                         t         j
                  j                  |j                  |j                         y )
Nc                   $    e Zd Zd Zd Zd Zd Zy);TestJitClassOverloads.test_matmul_operator.<locals>.ArrayAtc                     || _         y r    r   r$   rl  s     r%   r&   zDTestJitClassOverloads.test_matmul_operator.<locals>.ArrayAt.__init__I  	     r'   c                 4    | j                   |j                   z  S r    r7  r  s     r%   
__matmul__zFTestJitClassOverloads.test_matmul_operator.<locals>.ArrayAt.__matmul__L  s    xx%))++r'   c                 4    |j                   | j                   z  S r    r7  r  s     r%   __rmatmul__zGTestJitClassOverloads.test_matmul_operator.<locals>.ArrayAt.__rmatmul__O  s    yy488++r'   c                 B    | j                   |j                   z  | _         | S r    r7  r  s     r%   __imatmul__zGTestJitClassOverloads.test_matmul_operator.<locals>.ArrayAt.__imatmul__R  s    88eii/r'   N)r+   r,   r-   r&   r;  r=  r?  r.   r'   r%   ArrayAtr5  H  s    !,,r'   r@  c                       e Zd Zd Zy)=TestJitClassOverloads.test_matmul_operator.<locals>.ArrayNoAtc                     || _         y r    r7  r8  s     r%   r&   zFTestJitClassOverloads.test_matmul_operator.<locals>.ArrayNoAt.__init__W  r9  r'   Nr*   r.   r'   r%   	ArrayNoAtrB  V  s    !r'   rD  r   r)   )sizer   r|  )r   r8  seedr   r   rm  assert_allcloser   )r$   r@  rD  r  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_operatorz*TestJitClassOverloads.test_matmul_operatorF  s   	 		! 	! 
		qiiQD)iiQF+nCL	I(9E73Q3<3HI#NEwss|/DEcJnCL	K(9E71SqS5>3JKCPG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                     G d d      } G d d      }g d}g |dddd	d
}t         |dft        |dft        d d d   |t        j                  g d      t        j                  g d      fffD ]  \  }}}d|i}t	        ||      }	t	        ||      }
 ||d         } ||d         } |	|d         } |
|d         }|D ]z  }dt        |      vr-| j                  t        d| d      t        d| d             =| j                  t        t        d| d            t        t        d| d                   |  y )Nc                   Z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)RTestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefinedc                     || _         y r    rS  rT  s     r%   r&   z[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__init__  rV  r'   c                 4    |j                   | j                   z   S r    rS  r  s     r%   __radd__z[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__radd__      ww''r'   c                 4    |j                   | j                   z
  S r    rS  r  s     r%   __rsub__z[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rsub__  rX  r'   c                 4    |j                   | j                   z  S r    rS  r  s     r%   __rmul__z[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rmul__  rX  r'   c                 4    |j                   | j                   z  S r    rS  r  s     r%   __rtruediv__z_TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rtruediv__  rX  r'   c                 4    |j                   | j                   z  S r    rS  r  s     r%   __rfloordiv__z`TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rfloordiv__      ww$&&((r'   c                 4    |j                   | j                   z  S r    rS  r  s     r%   __rmod__z[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rmod__  rX  r'   c                 4    |j                   | j                   z  S r    rS  r  s     r%   __rpow__z[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rpow__  ra  r'   c                 4    |j                   | j                   z  S r    rS  r  s     r%   __rlshift__z^TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rlshift__  ra  r'   c                 4    |j                   | j                   z	  S r    rS  r  s     r%   __rrshift__z^TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rrshift__  ra  r'   c                 4    |j                   | j                   z  S r    rS  r  s     r%   __rand__z[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rand__  rX  r'   c                 4    |j                   | j                   z  S r    rS  r  s     r%   __rxor__z[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rxor__  rX  r'   c                 4    |j                   | j                   z  S r    rS  r  s     r%   __ror__zZTestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__ror__  rX  r'   N)r+   r,   r-   r&   rW  rZ  r\  r^  r`  rc  re  rg  ri  rk  rm  ro  r.   r'   r%   r&  rT    sC    (((()()))(((r'   r&  c                       e Zd Zd Zy)TTestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.NoOperatorsDefinedc                     || _         y r    rS  rT  s     r%   r&   z]TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.NoOperatorsDefined.__init__  rV  r'   Nr*   r.   r'   r%   r*  rq    r+  r'   r*  )r  r  r  r  r  r  r  r  r  r  r  r  )r   r   )r        @r)   )rn  r  rs  )g      4@g      8rn  r!   r   rl  zpy_ops_not_defined z py_ops_definedzjit_ops_not_defined z jit_ops_defined)
r	   r   r   rl  r   r   rK   evalassertTupleEqualtuple)r$   r&  r*  float_opint_op	test_typetest_op
test_valuerN   r,  r-  r.  r/  r0  r1  r  s                   r%   "test_arithmetic_logical_reflectionz8TestJitClassOverloads.test_arithmetic_logical_reflection  s   &	( &	(P	 	 9888T848#8s8C8 FF#h)SqS\8,'/)BCE/
*Iw
 #D"*+;T"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                 p     G d d      } t        g       |      } |       }| j                  ||k(         y )Nc                       e Zd Zd Zd Zy)GTestJitClassOverloads.test_implicit_hash_compiles.<locals>.ImplicitHashc                      y r    r.   r@   s    r%   r&   zPTestJitClassOverloads.test_implicit_hash_compiles.<locals>.ImplicitHash.__init__  r`   r'   c                      y)NFr.   r  s     r%   r  zNTestJitClassOverloads.test_implicit_hash_compiles.<locals>.ImplicitHash.__eq__  s    r'   N)r+   r,   r-   r&   r  r.   r'   r%   ImplicitHashr    s    r'   r  )r   r   )r$   r  jittedinstances       r%   test_implicit_hash_compilesz1TestJitClassOverloads.test_implicit_hash_compiles  s8    	 	 "l+8X-.r'   r    )r+   r,   r-   r  r`  r  r  r  rB  rT  rx  r  r  r  r  r  r2  r   rQ  r|  r  r.   r'   r%   r  r    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'   r  __main__)2r   r  rL  r8  typingrc   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   rB   r   r0   r9   r;   r  r+   mainr.   r'   r%   <module>r     s          # + + + $ , 8 * ' , 9 L L 1  i28_ i2X#D/OX D/N zHMMO r'   