
    J/Ph?                        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j1                     dS dS )    N)OrderedDict)	booleandeferred_typefloat32float64int16int32njitoptionaltypeof)errorstypes)
Dispatcher)LoweringErrorTypingError)MemInfo)jitclass)_box)JitClassType)MemoryLeakMixinTestCaseskip_if_typeguard)skip_unless_scipyc                       e Zd ZddddZdS )
TestClass1      ac                >    || _         || _        || _        || _        d S N)xyzr   )selfr"   r#   r$   r   s        [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_jitclasses.py__init__zTestClass1.__init__   s"        Nr   __name__
__module____qualname__r'    r(   r&   r   r      s4        q       r(   r   c                       e Zd ZddddZdS )
TestClass2r   r   r   c                L    || _         || _        || _        || _        || _        d S r!   )r"   r#   r$   argsr   )r%   r"   r#   r$   r   r2   s         r&   r'   zTestClass2.__init__!   s)    	r(   Nr)   r*   r.   r(   r&   r0   r0       s4        1       r(   r0   c                 t    t          j        |           }t          |          }|                                 |S r!   )r   box_get_meminfoptrr   acquire)boxptrmis      r&   _get_meminfor9   )   s/    

!#
&
&C	BJJLLLIr(   c                   .   e Zd Zd/dZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zed             Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0dS )0TestJitClassNc                    |*t          |           G d dt                                }|}|j        j        }t	          |j                                                  }t	          |j                                                  }|,t          |t                    r|
                                }n|}|J |                     t          |          t          |                     t          t          ||          |          D ]I\  }}	|                     |d         |	d                    |                     |d         |	d                    Jd S )Nc                       e Zd Zd ZdS )&TestJitClass._check_spec.<locals>.Testc                     d S r!   r.   r%   s    r&   r'   z/TestJitClass._check_spec.<locals>.Test.__init__7   s    Dr(   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   sV   d^^    v   ^ H#1U\&&(())el))++,,$,, $#zz||#'''US%6%6777 UF!3!3\BB 	2 	2MCSVXa[111SVXa[1111	2 	2r(   c                 t    t                      }t          |d<   t          |d<   |                     |           d S Nr"   r#   )r   r	   r   rU   r%   rN   s     r&   test_ordereddict_specz"TestJitClass.test_ordereddict_specL   s7    }}S	S	r(   c                 T    dt           fdt          fg}|                     |           d S rW   )r	   r   rU   rX   s     r&   test_list_speczTestJitClass.test_list_specR   s1    eg r(   c           	          dt           fg}t          |           G d dt                                }|                     |||dt	          j        t                    fgz              d S )Nr"   c                   @    e Zd ZU eed<   ej        e         ed<   d ZdS )1TestJitClass.test_type_annotations.<locals>.Test1r"   r#   c                     d S r!   r.   r@   s    r&   r'   z:TestJitClass.test_type_annotations.<locals>.Test1.__init___       r(   N)	r+   r,   r-   int__annotations__ptListfloatr'   r.   r(   r&   Test1r^   Z   s@         FFFwu~    r(   rf   r#   )r	   r   rB   rU   r   ListTyper   )r%   rN   rf   s      r&   test_type_annotationsz"TestJitClass.test_type_annotationsW   s~    e~	$	 	 	 	 	F 	 	 
	 	udsEN74K4K.L-M&MNNNNNr(   c                      G d d          }t            G d d|                      }|                     |dt          d          fdt          d          fg	           d S )
Nc                       e Zd ZU eed<   dS ):TestJitClass.test_type_annotation_inheritance.<locals>.Foor"   N)r+   r,   r-   ra   rb   r.   r(   r&   Foork   f   s         FFFFFr(   rl   c                   *    e Zd ZU eed<   deddfdZdS ):TestJitClass.test_type_annotation_inheritance.<locals>.Barr#   valuereturnNc                 <    t          |          | _        || _        d S r!   )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   sA         HHH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   s    	 	 	 	 	 	 	 	 
	 	 	 	 	# 	 	 
	 	fQii(83s:L'M 	 	
 	
 	
 	
 	
r(   c                 <   dt           fdt          d d          fg}dt          fdt          d d          fg} G d dt                    }|                     t
                    5 }t          ||           d d d            n# 1 swxY w Y   |                     dt          |j	                             |                     t
                    5 }t          ||           d d d            n# 1 swxY w Y   | 
                    t          |j	                  d           d S )Nr"   r#   r   c                       e Zd Zd ZdS )+TestJitClass.test_spec_errors.<locals>.Testc                     d S r!   r.   r@   s    r&   r'   z4TestJitClass.test_spec_errors.<locals>.Test.__init__{   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c7111:./Uc7111:./	 	 	 	 	6 	 	 	
 y)) 	"VT5!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"B&*++	- 	- 	-y)) 	"VT5!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"V-..=	? 	? 	? 	? 	?s$   "A??BBC))C-0C-c                    t          g            G d d                      }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                       e Zd Zd ZdS )+TestJitClass.test_init_errors.<locals>.Testc                     dS N   r.   r@   s    r&   r'   z4TestJitClass.test_init_errors.<locals>.Test.__init__       qr(   Nr*   r.   r(   r&   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   s    	"	 	 	 	 	 	 	 
	 v122 	fDFFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	:&*++	- 	- 	- 	- 	-s   AA Ac                     t                      }t          |d<   t          |d<   t          d d          |d<   t          |           G d dt                                }|S )Nr"   r#   arrc                       e Zd Zd Zd ZdS )9TestJitClass._make_Float2AndArray.<locals>.Float2AndArrayc                 0    || _         || _        || _        d S r!   r"   r#   r   )r%   r"   r#   r   s       r&   r'   zBTestJitClass._make_Float2AndArray.<locals>.Float2AndArray.__init__   s    r(   c                 F    | xj         |z  c_         | xj        |z  c_        |S r!   r"   r#   r%   vals     r&   addz=TestJitClass._make_Float2AndArray.<locals>.Float2AndArray.add   s%    ##
r(   N)r+   r,   r-   r'   r   r.   r(   r&   Float2AndArrayr      s2          
    r(   r   )r   r   r   rB   )r%   rN   r   s      r&   _make_Float2AndArrayz!TestJitClass._make_Float2AndArray   sp    }}S	S	aaajU	$
	 
	 
	 
	 
	V 
	 
	 

	 r(   c                     t                      }t          |d<   t          |d<   t          |           G d dt                                }|S )Nr"   r#   c                       e Zd Zd ZdS )+TestJitClass._make_Vector2.<locals>.Vector2c                 "    || _         || _        d S r!   r   )r%   r"   r#   s      r&   r'   z4TestJitClass._make_Vector2.<locals>.Vector2.__init__   s    r(   Nr*   r.   r(   r&   Vector2r      s#            r(   r   )r   r	   r   rB   )r%   rN   r   s      r&   _make_Vector2zTestJitClass._make_Vector2   s^    }}S	S		$	 	 	 	 	f 	 	 
	 r(   c                    |                                  |                                 t          d             t          fd            }t          j        dt          j                  } ||          \  }}}|                     |d           |                     |d           |                     ||           d S )Nc                      | j         | j        z   S r!   r   objs    r&   barz*TestJitClass.test_jit_class_1.<locals>.bar   s    535= r(   c                      dd|           }|                     d            dd          } |           |          |j        fS )Nr      {         )r   r   )r   r   vecr   r   r   s      r&   fooz*TestJitClass.test_jit_class_1.<locals>.foo   sS     .Aq))CGGCLLL'!Q--C3s88SSXXsw..r(   
   dtype   r   )r   r   r
   nponesr   rK   assertPreciseEqual)	r%   r   inpr   bcr   r   r   s	         @@@r&   test_jit_class_1zTestJitClass.test_jit_class_1   s    2244$$&&		! 	! 
	! 
	/ 	/ 	/ 	/ 	/ 	/ 
	/ gb
+++#c((1a-...E"""3'''''r(   c                 B   |                                  }t          d             }t          d             }t          j        dt          j                  } |dd|          }t          |          }|                     |j        d           |                     |j        t          j
        |                     |                     |j        j        |j                    ||          }t          |          }|                     |j        d           |                     |j        d           |                     |j        t          j
        |                     |                     |j        |j                   ~~|                     |j        d            ||          \  }	}
}|                     |	d           |                     |
d           |                     ||           |                     |j        d           |                     |j        d           |                     |j        |           |                     |                    d          d           |                     |j        d	           |                     |j        d
           d|_        d|_        t          j        dt          j                  x|_        }|                     |j        d           |                     |j        d           |                     |j        |           d S )Nc                     | S r!   r.   r   s    r&   identityz>TestJitClass.test_jitclass_usage_from_python.<locals>.identity   s    Jr(   c                 *    | j         | j        | j        fS r!   r   r   s    r&   retrieve_attributeszITestJitClass.test_jitclass_usage_from_python.<locals>.retrieve_attributes   s    5#%((r(   r   r   r   r   r   r   |   }   iM  i  r   )r   r
   r   aranger   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4		 	 
	 
	) 	) 
	) i"*---nQ3''"3''-q111)4+?+D+DEEE)4'2	4 	4 	4 $U++-q111/333+T-A%-H-HIII+[-=>>> =-q111 !4 3C 8 8ug""""""gs### 	""""""cgs### 	s+++(((((( 9Qbj9999&$$$$$$cgv&&&&&r(   c                    t                      }t          |d<   t          |           G d dt                                }|                      |d          j                   |                      |d          j                   d S )Nr   c                       e Zd Zd ZdS )2TestJitClass.test_jitclass_datalayout.<locals>.Fooc                     || _         d S r!   r   r   s     r&   r'   z;TestJitClass.test_jitclass_datalayout.<locals>.Foo.__init__      r(   Nr*   r.   r(   r&   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	                    |dd           }| 
                    |j        d           |                     |j                    |d|          }t          |          }t          |          }| 
                    |j        d           | 
                    |j        j        |j                   | 
                    |j        d           | 
                    |j        d	           |                                }| 
                    ||j                   |                     |j                   |                     |d
d                      |                     |j                   | 
                    |j        j        d
           |                     |j        j                   |                     |dd                      |                     |j        j                   | 
                    |j        j        j        d           | 
                    |j        d           ~~| 
                    |j        d	           d S )Nr   nextc                     | j         S r!   r   )nodes    r&   get_dataz1TestJitClass.test_deferred_type.<locals>.get_data  s
    9r(   c                   &    e Zd Zd Z fdZd ZdS )3TestJitClass.test_deferred_type.<locals>.LinkedNodec                 "    || _         || _        d S r!   )r   r   )r%   r   r   s      r&   r'   z<TestJitClass.test_deferred_type.<locals>.LinkedNode.__init__  s     	 			r(   c                 $     | j                   S r!   r   )r%   r   s    r&   get_next_datazATestJitClass.test_deferred_type.<locals>.LinkedNode.get_next_data#  s    x	***r(   c                 B    | }|j         |j         }|j         ||_         d S r!   r   )r%   r   curs      r&   append_to_tailzBTestJitClass.test_deferred_type.<locals>.LinkedNode.append_to_tail'  s+    h*(C h* r(   N)r+   r,   r-   r'   r   r   )r   s   r&   
LinkedNoder     sL        ! ! !+ + + + +! ! ! ! !r(   r   r   A  r   r   7  i  )r   r   r   r   r
   r   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  s   !OO	}}V	**V		 	 
	 
$	! 	! 	! 	! 	! 	! 	! 	! 	! 
	!  	.<===
3%%S)))%*%%%C''$U++%f--/333)5:666/3330!444 ((**	EJ/// 	%*%%%jjd33444UZ(((#...%*/***jjd33444UZ_----s333 	/333N/33333r(   c                 ^   t                      }t          |d<   t          |d<   t          |d<   t	          |           G d dt
                                } |ddd          } G d	 d
t          j                  }t          j        t          j
        |                    }t          j        |t          j        |                    d         }|                     |j        |j                   |                     |j        |j                   |                     |j        |j                   d S )Nr   r   r   c                       e Zd Zd ZdS )-TestJitClass.test_c_structure.<locals>.Structc                 0    || _         || _        || _        d S r!   )r   r   r   )r%   r   r   r   s       r&   r'   z6TestJitClass.test_c_structure.<locals>.Struct.__init__X      r(   Nr*   r.   r(   r&   Structr   U  s#            r(   r   iͫ     o!	@c                   B    e Zd Zdej        fdej        fdej        fgZdS ).TestJitClass.test_c_structure.<locals>.CStructr   r   r   N)r+   r,   r-   ctypesc_int32c_int16c_double_fields_r.   r(   r&   CStructr   _  s3        fn%fn%fo&HHHr(   r   r   )r   r	   r   r   r   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  s2   }}S	S	S		$	 	 	 	 	V 	 	 
	 VFD&))	 	 	 	 	f& 	 	 	 od226677+c6>'#:#:;;A>BD)))BD)))BD)))))r(   c                 2   |                                  } |dd          }t          d             }|                     t                    5 } |||           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nr   r   c                 
    | |u S r!   r.   r   r   s     r&   do_isz#TestJitClass.test_is.<locals>.do_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  s    ##%%q!		 	 
	 }-- 	 E%	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	6F<L8M8MNNNNNs   A$$A(+A(c                 r    |                                  } |dd          }|                     ||           d S Nr   r   )r   assertIsInstance)r%   r   r   s      r&   test_isinstancezTestJitClass.test_isinstancey  s>    $$&&gammc7+++++r(   c                     |                                  }|                     t                    5 } G d d|          }d d d            n# 1 swxY w Y   |                     t	          |j                  d           d S )Nc                       e Zd ZdS )+TestJitClass.test_subclassing.<locals>.SubVN)r+   r,   r-   r.   r(   r&   SubVr    s        r(   r  zcannot subclass from a jitclass)r   r|   r}   rK   r   r   )r%   r   r   r  s       r&   test_subclassingzTestJitClass.test_subclassing~  s    $$&&y)) 	V    w   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	V-..:	< 	< 	< 	< 	<s   A

AAc                      G d dt                     }t          dt          fg           G d d|                      } |d          }|                     |                                d           d S )Nc                       e Zd Zd ZdS )*TestJitClass.test_base_class.<locals>.Basec                     | j         S r!   attrr@   s    r&   whatz/TestJitClass.test_base_class.<locals>.Base.what  s
    y r(   N)r+   r,   r-   r  r.   r(   r&   Baser    s#        ! ! ! ! !r(   r  r  c                       e Zd Zd ZdS )*TestJitClass.test_base_class.<locals>.Testc                     || _         d S r!   r  r%   r  s     r&   r'   z3TestJitClass.test_base_class.<locals>.Test.__init__       			r(   Nr*   r.   r(   r&   rA   r!    s#        ! ! ! ! !r(   rA   r   )rB   r   r	   rK   r  )r%   r  rA   r   s       r&   test_base_classzTestJitClass.test_base_class  s    	! 	! 	! 	! 	!6 	! 	! 	!
 
FE?#	$	$	! 	! 	! 	! 	!4 	! 	! 
%	$	!
 d3iiS)))))r(   c                      G d dt                     }|                     t                    5 }t          |           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nc                       e Zd ZdZd ZdS )'TestJitClass.test_globals.<locals>.Miner   c                     d S r!   r.   r@   s    r&   r'   z0TestJitClass.test_globals.<locals>.Mine.__init__  r`   r(   N)r+   r,   r-   constantr'   r.   r(   r&   Miner(    s(        H    r(   r+  z-class members are not yet supported: constantrB   r|   r}   r   rK   r   r   )r%   r+  r   s      r&   test_globalszTestJitClass.test_globals  s    	 	 	 	 	6 	 	 	 y)) 	VTNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	V-..H	J 	J 	J 	J 	J   A

AAc                 &   t          dt          fg           G d dt                                } |d          }|                     |j        d           |                     |j        d           d|_        |                     |j        d           |                     |j        d           t          d             } ||d	          \  }}}|                     |d           |                     |d	           |                     |d
           d S )Nr  c                   J    e Zd Zd Zed             Zej        d             ZdS )1TestJitClass.test_user_getter_setter.<locals>.Fooc                     || _         d S r!   r  r#  s     r&   r'   z:TestJitClass.test_user_getter_setter.<locals>.Foo.__init__  r$  r(   c                     | j         dz   S Nr   r  r@   s    r&   ro   z7TestJitClass.test_user_getter_setter.<locals>.Foo.value  s    y1}$r(   c                     |dz
  | _         d S 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    s[        ! ! ! % % X% \$ $ \$ $ $r(   rl   r   r   i  i  c                 D    | 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  s6   	FE?#	$	$	$ 	$ 	$ 	$ 	$& 	$ 	$ 
%	$	$ c#hh3'''G,,,	7+++C((( 
	 	 
	 #c3--1aC   C   G$$$$$r(   c                      G d dt                     }|                     t                    5 }t          |           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nc                   J    e Zd Zd Zed             Zej        d             ZdS )1TestJitClass.test_user_deleter_error.<locals>.Fooc                     d S r!   r.   r@   s    r&   r'   z:TestJitClass.test_user_deleter_error.<locals>.Foo.__init__  r`   r(   c                     dS r4  r.   r@   s    r&   ro   z7TestJitClass.test_user_deleter_error.<locals>.Foo.value  s    qr(   c                     d S 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<    s[             X ]  ]  r(   rl   zdeleter is not supported: valuer,  r%   rl   r   s      r&   test_user_deleter_errorz$TestJitClass.test_user_deleter_error  s    	 	 	 	 	& 	 	 	 y)) 	VSMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	V-..:	< 	< 	< 	< 	<r.  c                     G d dt                     }|                     t                    5 }t          |dt          fg           d d d            n# 1 swxY w Y   |                     t          |j                  d           |                     t                    5 }t          |dt          fg           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nc                   0    e Zd Zd Zed             Zd ZdS )3TestJitClass.test_name_shadowing_error.<locals>.Fooc                     d S r!   r.   r@   s    r&   r'   z<TestJitClass.test_name_shadowing_error.<locals>.Foo.__init__  r`   r(   c                     d S r!   r.   r@   s    r&   my_propertyz?TestJitClass.test_name_shadowing_error.<locals>.Foo.my_property  r@  r(   c                     d S r!   r.   r@   s    r&   	my_methodz=TestJitClass.test_name_shadowing_error.<locals>.Foo.my_method  r`   r(   N)r+   r,   r-   r'   r6  rI  rK  r.   r(   r&   rl   rF    sM             X    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  st   
	 
	 
	 
	 
	& 
	 
	 
	 y)) 	4VSM512333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4V-..0MNNNy)) 	2VSK/0111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2V-..0KLLLLLs#   AAA CC	C	c                    t          dt          fg           G d dt                                }|}t          dt          fg           G d dt                                }|} |d          }|                     |j        d           |                     |                                d            |d          }|                     |j        d           |                     |                                d	           d S )
Nr"   c                       e Zd Zd Zd ZdS )/TestJitClass.test_distinct_classes.<locals>.Fooc                     |dz   | _         d S Nr   r"   r%   r"   s     r&   r'   z8TestJitClass.test_distinct_classes.<locals>.Foo.__init__      Qr(   c                     | j         dz   S r4  rS  r@   s    r&   runz3TestJitClass.test_distinct_classes.<locals>.Foo.run      vz!r(   Nr+   r,   r-   r'   rW  r.   r(   r&   rl   rP    2          " " " " "r(   rl   c                       e Zd Zd Zd ZdS )rP  c                     |dz
  | _         d S 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<.	!	!	" 	" 	" 	" 	"& 	" 	" 
"	!	" 	hqkk"""A&&&ill"""A&&&&&r(   c                     G d dt                     fd} |d          }|                     |j        d            |d          }|                     |j        d            |t          j        dg                    }t          j                            |j        dg            |t          j        dg                    }t          j                            |j        dg           d S )Nc                       e Zd Zd ZdS )0TestJitClass.test_parameterized.<locals>.MyClassc                     || _         d S r!   ro   rr   s     r&   r'   z9TestJitClass.test_parameterized.<locals>.MyClass.__init__      "


r(   Nr*   r.   r(   r&   MyClassrd    s#        # # # # #r(   rh  c                 Z    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3u::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 	# 	# 	#
	 	 	 	 	 OC  #&&&OD!!$'''OBHcUOO,,

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

$00000r(   c                    t           t          t           t           d}t          |           G d dt                                }d} ||          }|                     |j        |           |                     |j        |dz             |                     |j        |dz             |                     |j        |j                   |j        }|xj        dz  c_        |                     |j        |dz
             |                     |	                    d          |dz             |                     |	                    |dz            d           |                     |
                    d          |j        dz             |                     |                    d          |j        dz             |                     |j        |dz
             |xj        d	z  c_        |                     |j        |d
z
             t          d             }|                     t          j                  5 } ||           d d d            n# 1 swxY w Y   |                     dt%          |j                             |                     t(                    5 }|                    |           d d d            n# 1 swxY w Y   |                     dt%          |j                             d S )N)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dS )2TestJitClass.test_protected_attrs.<locals>.MyClassc                 P    || _         |dz  | _        |dz  | _        |dz
  | _        d S )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                     || _         d S 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                     || _         d S 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                 ,    |                      |          S r!   )_MyClass__private_methodr  s     r&   check_private_methodzGTestJitClass.test_protected_attrs.<locals>.MyClass.check_private_methodU  s    ,,V444r(   N)r+   r,   r-   r'   r6  r{  r  r7  r  r  r  r  r  r.   r(   r&   rh  rv  -  s        + + + $ $ X$ # # X#      !   $ $ X$ #! ! $#!  
, , ,- - -5 5 5 5 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%  sX   	
 
 
$(	5 (	5 (	5 (	5 (	5f (	5 (	5 
(	5T wu~~U+++eai000+UQY777*DK888 KQ*,=,ABBB0055uqyAAA00;;SAAA//22DK!ODDD22155t7IA7MNNN333#555 
	  	  
	  v122 	 fM$	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	,c&2B.C.CDDD~.. 	(&!!$'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(,c&2B.C.CDDDDDs$   2I

IIJ99J= J=c                     ddl m} dt          i}t          ||          } |d          }|                     |j        d           |                     |                    d          d           dS )zM
        Methods with annotations should compile fine (issue #1911).
        r   )AnnotatedClassr"   r   r   r   N)annotation_usecasesr  r	   r   rK   r"   r   )r%   r  rN   rj  r   s        r&   test_annotationszTestJitClass.test_annotations}  sy    
 	877777U|~t,,c!ff"""Q'''''r(   c                 <   t            G d dt                                }|                     |j        d           |                     |j        j        d           |                     |j        j        d           |                     |j        j        d           d S )Nc                   4    e Zd ZdZd Zd Zed             ZdS )*TestJitClass.test_docstring.<locals>.AppleClass docstringc                     dS )init docstringNr.   r@   s    r&   r'   z3TestJitClass.test_docstring.<locals>.Apple.__init__        r(   c                     dS )foo method docstringNr.   r@   s    r&   r   z.TestJitClass.test_docstring.<locals>.Apple.foo  r  r(   c                     dS )aval property docstringNr.   r@   s    r&   avalz/TestJitClass.test_docstring.<locals>.Apple.aval  r  r(   N)r+   r,   r-   __doc__r'   r   r6  r  r.   r(   r&   Appler    sS        ! ! !' ' ' * * X* * *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B*,BCCC+-FGGGGGr(   c                    dt           fdt          fg}t          |           G d dt                                }d}d}d}||d} |d	ddi|}|                     |j        ||z             |                     |j        |           d S )
Nr   r   c                       e Zd Zd ZdS )+TestJitClass.test_kwargs.<locals>.TestClassc                 (    ||z  | _         || _        d S r!   r
  r%   r"   r#   r$   s       r&   r'   z4TestJitClass.test_kwargs.<locals>.TestClass.__init__  s    Qr(   Nr*   r.   r(   r&   	TestClassr    s#            r(   r  r   g?)r#   r$   r"   r.   )r	   r   r   rB   rK   r   r   )r%   rN   r  r"   r#   r$   kwargstcs           r&   test_kwargszTestJitClass.test_kwargs  s    eg  
$	 	 	 	 	 	 	 
	
 q!!Y%%%f%%q1u%%%q!!!!!r(   c                    dt           fdt           fdt           fg}t          |           G d dt                                } |ddd          }|                     |j        d           |                     |j        d           |                     |j        d            |dd          }|                     |j        d           |                     |j        d           |                     |j        d            |dd	d
          }|                     |j        d           |                     |j        d           |                     |j        d	           d S )Nr"   r#   r$   c                       e Zd ZddZdS )1TestJitClass.test_default_args.<locals>.TestClassr   c                 0    || _         || _        || _        d S r!   )r"   r#   r$   r  s       r&   r'   z:TestJitClass.test_default_args.<locals>.TestClass.__init__  r   r(   Nr)   r*   r.   r(   r&   r  r    s(             r(   r  r   r   r   r   )r#   r$   r"   )r	   r   rB   rK   r"   r#   r$   r%   rN   r  r  s       r&   test_default_argszTestJitClass.test_default_args  sr   eee 
$	 	 	 	 	 	 	 
	 Yq!Qq!!!q!!!q!!!Yq!__q!!!q!!!q!!!Ya1%%%q!!!q!!!q!!!!!r(   c                 @   dt           fdt           fdt           fdt           fg}t          t          |          } |dd          }|                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d            |d	dd
d          }|                     |j        d           |                     |j        d	           |                     |j        d           |                     |j        d
            |d	dd
          }|                     |j        d           |                     |j        d	           |                     |j        d           |                     |j        d
            |d	d          }|                     |j        d           |                     |j        d	           |                     |j        d           |                     |j        d           d S )Nr"   r#   r$   r   r   r   r   r   r   *   r  )r#   r"   r   r$   )r#   r"   r   )r#   r"   )r	   r   r   rK   r"   r#   r$   r   r  s       r&   test_default_args_keyonlyz&TestJitClass.test_default_args_keyonly  s   eeee
 Z..	Yq!__q!!!q!!!q!!!q!!!Ya2---q!!!q!!!s###r"""Ya2&&&q!!!q!!!q!!!r"""Ya   q!!!q!!!q!!!q!!!!!r(   c                 l   dt           fdt           fdt           fdt          j        t           d          fdt           fg}|                     t          j                  5 }t          t          |           d d d            n# 1 swxY w Y   d}|                     |t          |j
                             d S )Nr"   r#   r$   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12e	 v677 	'6Z&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 9c3v/0011111s   A??BBc                 $   g }t          |           G d dt                                }d }t          d          D ]R}t           ||           |                                |                    D ]\  }}|                     ||           Sd S )Nc                       e Zd Zd Zd ZdS )5TestJitClass.test_generator_method.<locals>.TestClassc                     d S r!   r.   r@   s    r&   r'   z>TestJitClass.test_generator_method.<locals>.TestClass.__init__  r`   r(   c              3   Z   K   t          |          D ]}t          j        |          V  d S r!   ranger   r   )r%   niteris      r&   genz9TestJitClass.test_generator_method.<locals>.TestClass.gen  s<      u ' 'A)A,,&&&&' 'r(   N)r+   r,   r-   r'   r  r.   r(   r&   r  r    s2          ' ' ' ' 'r(   r  c              3   Z   K   t          |           D ]}t          j        |          V  d S r!   r  )r  r  s     r&   expected_genz8TestJitClass.test_generator_method.<locals>.expected_gen  s<      5\\ # #ill""""# #r(   r   )r   rB   r  rM   r  r   )r%   rN   r  r  r  expectrS   s          r&   test_generator_methodz"TestJitClass.test_generator_method  s    	$	' 	' 	' 	' 	' 	' 	' 
	'	# 	# 	# 2YY 	5 	5E"<<#6#6		8N8NOO 5 5''44445	5 	5r(   c                    dt           d d          fg}t          |           G d dt                                t          fd            }t          d             } |            }|                      ||d          d           |                      ||d          d           |                      ||d          d           d S )	Nr   c                        e Zd Zd Zd Zd ZdS ),TestJitClass.test_getitem.<locals>.TestClassc                 P    t          j        dt           j                  | _        d S Nr   r   r   zerosr	   r   r@   s    r&   r'   z5TestJitClass.test_getitem.<locals>.TestClass.__init__      HRrx888			r(   c                     || j         |<   d S r!   r   r%   keyr   s      r&   __setitem__z8TestJitClass.test_getitem.<locals>.TestClass.__setitem__      !%	#r(   c                     | j         |         S r!   r   r%   r  s     r&   __getitem__z8TestJitClass.test_getitem.<locals>.TestClass.__getitem__      y~%r(   Nr+   r,   r-   r'   r  r  r.   r(   r&   r  r    A        9 9 9& & && & & & &r(   r  c                  :                 } d| d<   d| d<   d| d<   | S )Nr   r   r   r.   )tr  s    r&   create_and_set_indicesz9TestJitClass.test_getitem.<locals>.create_and_set_indices  s.    	AAaDAaDAaDHr(   c                     | |         S r!   r.   )r  ns     r&   	get_indexz,TestJitClass.test_getitem.<locals>.get_index$  s    Q4Kr(   r   r   r   r	   r   rB   r
   rK   )r%   rN   r  r  r  r  s        @r&   test_getitemzTestJitClass.test_getitem  s   qqq"#	$	& 	& 	& 	& 	& 	& 	& 
	& 
	 	 	 	 
	 
	 	 
	 #"$$1a!,,,1a!,,,1a!,,,,,r(   c                 2   dt           d d          fg}t          |           G d dt                                } |            }d|d<   t          d             } ||          }|                     |d           |                     |d         d           d S )	Nr   c                        e Zd Zd Zd Zd ZdS )2TestJitClass.test_getitem_unbox.<locals>.TestClassc                 P    t          j        dt           j                  | _        d S r  r  r@   s    r&   r'   z;TestJitClass.test_getitem_unbox.<locals>.TestClass.__init__2  r  r(   c                     || j         |<   d S 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    qqq"#	$	& 	& 	& 	& 	& 	& 	& 
	& IKK!		 	 
	 k!nnb!!!1r"""""r(   c                    dt           d d d d f         fg}t          |           G d dt                                } |            }d|t          dd          <   t          d             }t          d             }|                      ||dd          d            ||ddd	           |                     |t          dd                   d	           d S )
Nr   c                        e Zd Zd Zd Zd ZdS )8TestJitClass.test_getitem_complex_key.<locals>.TestClassc                 P    t          j        dt           j                  | _        d S N)r   r   r   r  r@   s    r&   r'   zATestJitClass.test_getitem_complex_key.<locals>.TestClass.__init__L      HXRX>>>			r(   c                 f    || j         t          |j                  t          |j                  f<   d S r!   r   ra   realimagr  s      r&   r  zDTestJitClass.test_getitem_complex_key.<locals>.TestClass.__setitem__O  s)    :>	#ch--SX6777r(   c                 h    | j         t          |j                  t          |j                  f         S r!   r  r  s     r&   r  zDTestJitClass.test_getitem_complex_key.<locals>.TestClass.__getitem__R  s$    ySXCH!=>>r(   Nr  r.   r(   r&   r  r  J  sA        ? ? ?? ? ?? ? ? ? ?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          ||          <   d S r!   r	  )r  r  r  r   s       r&   set_keyz6TestJitClass.test_getitem_complex_key.<locals>.set_key]  s    %)AgdD!!"""r(   r   r   )r	   r   rB   r
  r
   rK   )r%   rN   r  r  r  r  s         r&   test_getitem_complex_keyz%TestJitClass.test_getitem_complex_keyG  s   qqq!!!t%&	$	? 	? 	? 	? 	? 	? 	? 
	? IKK'!Q--		* 	* 
	* 
	* 	* 
	* 	Aq))1---1a71a==)1-----r(   c                 n   dt           d d d d f         fg}t          |           G d dt                                } |            }d|d<   t          d             }t          d             }|                      ||          d            ||d           |                     |d	         d           d S )
Nr   c                        e Zd Zd Zd Zd ZdS )6TestJitClass.test_getitem_tuple_key.<locals>.TestClassc                 P    t          j        dt           j                  | _        d S r  r  r@   s    r&   r'   z?TestJitClass.test_getitem_tuple_key.<locals>.TestClass.__init__j  r  r(   c                 6    || j         |d         |d         f<   d S Nr   r   r   r  s      r&   r  zBTestJitClass.test_getitem_tuple_key.<locals>.TestClass.__setitem__m  s     ,0	#a&#a&.)))r(   c                 8    | j         |d         |d         f         S r  r   r  s     r&   r  zBTestJitClass.test_getitem_tuple_key.<locals>.TestClass.__getitem__p  s    yQQ00r(   Nr  r.   r(   r&   r  r  h  sA        ? ? ?1 1 11 1 1 1 1r(   r     r   r   c                     | d         S )Nr  r.   r  s    r&   get11z2TestJitClass.test_getitem_tuple_key.<locals>.get11v  s    T7Nr(   c                     || d<   d S )Nr   r   r.   r  r   s     r&   set22z2TestJitClass.test_getitem_tuple_key.<locals>.set22z  s    AdGGGr(      r  r  )r%   rN   r  r  r  r  s         r&   test_getitem_tuple_keyz#TestJitClass.test_getitem_tuple_keye  s    qqq!!!t%&	$	1 	1 	1 	1 	1 	1 	1 
	1 IKK$		 	 
	 
	 	 
	 	q2&&&a4"%%%%%r(   c                 ,   dt           d d          fg}t          |           G d dt                                } |            }d|ddd<   |                     |ddd         d           |                     |ddd         d           t          d             }|                      ||          d           t          d             } ||d           |                     |ddd         d           |                     |d	d	d         d
           d S )Nr   c                        e Zd Zd Zd Zd ZdS )6TestJitClass.test_getitem_slice_key.<locals>.TestClassc                 P    t          j        dt           j                  | _        d S r  r  r@   s    r&   r'   z?TestJitClass.test_getitem_slice_key.<locals>.TestClass.__init__  r  r(   c                 R    || j         |j        <   ||j        z   | j         |j        <   d S r!   )r   startstepstop)r%   slcr   s      r&   r  zBTestJitClass.test_getitem_slice_key.<locals>.TestClass.__setitem__  s*    '+	#)$&*SXo	#(###r(   c                 &    | j         |j                 S r!   )r   r%  )r%   r(  s     r&   r  zBTestJitClass.test_getitem_slice_key.<locals>.TestClass.__getitem__  s    y++r(   Nr  r.   r(   r&   r  r"    sA        9 9 96 6 6, , , , ,r(   r  r   r   r   c                     | ddd         S )Nr      r   r.   r  s    r&   get5z1TestJitClass.test_getitem_slice_key.<locals>.get5  s    QqU8Or(   c                     || ddd<   d S )Nr   r+  r   r.   r  s     r&   set26z2TestJitClass.test_getitem_slice_key.<locals>.set26  s    Aa!eHHHr(   r+  r   )r	   r   rB   rK   r
   )r%   rN   r  r  r,  r.  s         r&   test_getitem_slice_keyz#TestJitClass.test_getitem_slice_key  sX   qqq"#	$		, 		, 		, 		, 		, 		, 		, 
		, IKK!Aa%1Qq51%%%1Qq51%%%		 	 
	 	a!$$$ 
	 	 
	 	a1Qq51%%%1Qq51%%%%%r(   c                    d t          d          D             }d |D             }|                    d |D                        t          |           G d dt                                } |                                             d S )Nc                 L    g | ]!}t          t          d           |z             "S r   )chrord).0r"   s     r&   
<listcomp>zFTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.<listcomp>  s*    999!CC1%%999r(      c                 &    g | ]}|d z  t           fS r   )r   r4  letters     r&   r5  zFTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.<listcomp>  s!    >>>6"g&>>>r(   c                 J    g | ] }|                                 d z  t          f!S r8  )upperr   r9  s     r&   r5  zFTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.<listcomp>  s*    KKKfllnnr)73KKKr(   c                        e Zd Zd Zd Zd ZdS )JTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.TruncatedLabelc                     d| _         d S )Ng      $@)
aaaaaaaaaar@   s    r&   r'   zSTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.TruncatedLabel.__init__  s    "%r(   c                 N    t          j        | j        | j                  | _        d S r!   )randomgaussr@  
bbbbbbbbbbr@   s    r&   meth1zPTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.TruncatedLabel.meth1  s    "(,t"P"Pr(   c                 .    |                                   d S r!   )rE  r@   s    r&   meth2zPTestJitClass.test_jitclass_longlabel_not_truncated.<locals>.TruncatedLabel.meth2  s    

r(   N)r+   r,   r-   r'   rE  rG  r.   r(   r&   TruncatedLabelr>    sD        & & &Q Q Q    r(   rH  )r  extendr   rB   rG  )r%   alphabetrN   rH  s       r&   %test_jitclass_longlabel_not_truncatedz2TestJitClass.test_jitclass_longlabel_not_truncated  s     :9uRyy999>>X>>>KK(KKKLLL	$	 	 	 	 	V 	 	 
	 	     r(   c                 0   t            G d dt                                } |            }t          |          }|                     |t          j                   t          j        |          }|                     t          j	        |          |           d S )Nc                       e Zd Zd ZdS )5TestJitClass.test_pickling.<locals>.PickleTestSubjectc                     d S r!   r.   r@   s    r&   r'   z>TestJitClass.test_pickling.<locals>.PickleTestSubject.__init__  r`   r(   Nr*   r.   r(   r&   PickleTestSubjectrN    r{   r(   rP  )
r   rB   r   r  r   ClassInstanceTypepickledumpsr   loads)r%   rP  r  typickleds        r&   test_picklingzTestJitClass.test_pickling  s    		 	 	 	 	 	 	 
	 ! ""D\\b%"9:::,r""fl7++R00000r(   c                 t   t          dt          fg           G d d                      }t          dt          fg           G d d                      }|                     |j        t                     |                     |j        t                     |                     |j        t                     |                     |j        |j                   |                     d|                    dd                     |                     d	|                    dd                     |                     d
|                    dd                      |d          } |d          }|                     d|                    d                     |                     d	|                    d                     |                     d|                    dd                     |                     d|                    dd                     |                     d|                    dd                     |                     d|                    dd                     |                     d|                    dd                     |                     d|                    dd                     | 	                    t                    5 }|                    dd           d d d            n# 1 swxY w Y   |                     dt          |j                             | 	                    t                    5 }|                    d           d d d            n# 1 swxY w Y   |                     dt          |j                             t          g            G fdd                                   }| 	                    t          j                  5 }|                                 d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nr"   c                   F    e Zd Zd Zd Zed             Zed             ZdS )/TestJitClass.test_static_methods.<locals>.Test1c                     || _         d S r!   rS  rT  s     r&   r'   z8TestJitClass.test_static_methods.<locals>.Test1.__init__      r(   c                 P    |                      | j        |          | _        | j        S r!   r   r"   r%   r#   s     r&   increasez8TestJitClass.test_static_methods.<locals>.Test1.increase       $&!,,vr(   c                     | |z   S r!   r.   r
  s     r&   r   z3TestJitClass.test_static_methods.<locals>.Test1.add      1ur(   c                     | |z
  S r!   r.   r
  s     r&   subz3TestJitClass.test_static_methods.<locals>.Test1.sub  rc  r(   N)r+   r,   r-   r'   r`  staticmethodr   re  r.   r(   r&   rf   rZ    sh               \   \  r(   rf   c                   0    e Zd Zd Zd Zed             ZdS )/TestJitClass.test_static_methods.<locals>.Test2c                     || _         d S r!   rS  rT  s     r&   r'   z8TestJitClass.test_static_methods.<locals>.Test2.__init__  r\  r(   c                 P    |                      | j        |          | _        | j        S r!   r^  r_  s     r&   r`  z8TestJitClass.test_static_methods.<locals>.Test2.increase  ra  r(   c                     | |z
  S r!   r.   r
  s     r&   r   z3TestJitClass.test_static_methods.<locals>.Test2.add  rc  r(   N)r+   r,   r-   r'   r`  rf  r   r.   r(   r&   Test2rh    sM               \  r(   rl  r   r   r   r   r+  r   y               @y              ?foobarr   r   zhas no attribute 'sub'z'not enough arguments: expected 2, got 1c                   6    e Zd Zd Zed             Z fdZdS )/TestJitClass.test_static_methods.<locals>.Test3c                     d S r!   r.   r@   s    r&   r'   z8TestJitClass.test_static_methods.<locals>.Test3.__init__  r`   r(   c                     d S r!   r.   r
  s     r&   a_static_methodz?TestJitClass.test_static_methods.<locals>.Test3.a_static_method  r@  r(   c                 0                         dd          S r  )rs  )r%   Test3s    r&   call_staticz;TestJitClass.test_static_methods.<locals>.Test3.call_static  s    ,,Q222r(   N)r+   r,   r-   r'   rf  rs  rv  )ru  s   r&   ru  rp  
  sX             \3 3 3 3 3 3 3r(   ru  z#Unknown attribute 'a_static_method')r   r	   r  r   r   re  assertNotEqualrK   r`  r|   r  r~   r   r   r}   r   r   rv  )r%   rf   rl  t1t2r   invalidru  s          @r&   test_static_methodsz TestJitClass.test_static_methods  s   	C<.	!	!	 	 	 	 	 	 	 
"	!	  
C<.	!	!
	 
	 
	 
	 
	 
	 
	 
"	!
	 	ei444ei444ei444EIuy111EIIaOO,,,UYYq!__---EIIaOO,,,U1XXU1XXBKKNN+++R[[^^,,,BFF1aLL)))BFF1aLL)))BFF1aLL)))RVVB^^,,,RVVB^^,,,266%#7#7888~.. 	&IIaOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	.&*++	- 	- 	- y)) 	VIIaLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	?&*++	- 	- 	- 
"		3 		3 		3 		3 		3 		3 		3 		3 		3 
		3 %''v122 	"f!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	;&*++	- 	- 	- 	- 	-s6   K55K9<K9M$$M(+M($PP	P	c                    t          t                    }t                       G d d                      }|                     |t                     |                     |j        j        |           t          |           G d d                      }|                     |t                     |                     |j        j        |           t           G d d                      }|                     |t                     |                     |j        j        |           t          |           G d	 d
                      }|                     |t                     |                     |j        j        |           d S )NrS  c                        e Zd ZU eed<   d ZdS )<TestJitClass.test_jitclass_decorator_usecases.<locals>.Test1r"   c                     d| _         d S Nr   rS  r@   s    r&   r'   zETestJitClass.test_jitclass_decorator_usecases.<locals>.Test1.__init__$  r\  r(   Nrs   r.   r(   r&   rf   r~     .         HHH    r(   rf   rN   c                       e Zd Zd ZdS )<TestJitClass.test_jitclass_decorator_usecases.<locals>.Test2c                     d| _         d S r  rS  r@   s    r&   r'   zETestJitClass.test_jitclass_decorator_usecases.<locals>.Test2.__init__-  r\  r(   Nr*   r.   r(   r&   rl  r  *  #            r(   rl  c                        e Zd ZU eed<   d ZdS )<TestJitClass.test_jitclass_decorator_usecases.<locals>.Test3r"   c                     d| _         d S r  rS  r@   s    r&   r'   zETestJitClass.test_jitclass_decorator_usecases.<locals>.Test3.__init__7  r\  r(   Nrs   r.   r(   r&   ru  r  3  r  r(   ru  c                       e Zd Zd ZdS )<TestJitClass.test_jitclass_decorator_usecases.<locals>.Test4c                     d| _         d S r  rS  r@   s    r&   r'   zETestJitClass.test_jitclass_decorator_usecases.<locals>.Test4.__init__@  r\  r(   Nr*   r.   r(   r&   Test4r  =  r  r(   r  r   r   r   r  r   assertDictEqualrC   rF   )r%   rN   rf   rl  ru  r  s         r&    test_jitclass_decorator_usecasesz-TestJitClass.test_jitclass_decorator_usecases  s   W%%%		 	 	 	 	 	 	 
	 	e\222U-4d;;;	t				 	 	 	 	 	 	 
		
 	e\222U-4d;;;		 	 	 	 	 	 	 
	 	e\222U-4d;;;	$	 	 	 	 	 	 	 
	
 	e\222U-4d;;;;;r(   c                    t          t                    } G d d          }t          |          }|                     |t                     |                     |j        j        |            G d d          }t          ||          }|                     |t                     |                     |j        j        |           d S )NrS  c                        e Zd ZU eed<   d ZdS )CTestJitClass.test_jitclass_function_usecases.<locals>.AnnotatedTestr"   c                     d| _         d S r  rS  r@   s    r&   r'   zLTestJitClass.test_jitclass_function_usecases.<locals>.AnnotatedTest.__init__L  r\  r(   Nrs   r.   r(   r&   AnnotatedTestr  I  s.         HHH    r(   r  c                       e Zd Zd ZdS )ETestJitClass.test_jitclass_function_usecases.<locals>.UnannotatedTestc                     d| _         d S r  rS  r@   s    r&   r'   zNTestJitClass.test_jitclass_function_usecases.<locals>.UnannotatedTest.__init__U  r\  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55X07>>>	 	 	 	 	 	 	 	
 OT22h555X07>>>>>r(   c                 p   t          t                    }t          |           G d dt                                t          |           G d dt                                fd}|}t	          |          }|                     t                     |                      | d                     | d                               |                      | d                     | d                               |                      |d	           |d	                     d S )
Nrf  c                        e Zd Zd Zd Zd ZdS )2TestJitClass.test_jitclass_isinstance.<locals>.Fooc                     || _         d S 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  
    z!r(   c                     | j         dz   S r4  rf  r@   s    r&   getValueIncrz?TestJitClass.test_jitclass_isinstance.<locals>.Foo.getValueIncrg  s    zA~%r(   N)r+   r,   r-   r'   r  r  r.   r(   r&   rl   r  _  sA        # # #" " "& & & & &r(   rl   c                       e Zd Zd Zd ZdS )2TestJitClass.test_jitclass_isinstance.<locals>.Barc                     || _         d S 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  s2        # # #" " " " "r(   rt   c                     t          | f          rV|                                 }t          |           r|                                 |z   dfS |                                 |z   dfS dS )Nrl   rt   zno match)rI   r  r  )r   r"   rt   rl   s     r&   test_jitclass_isinstancezGTestJitClass.test_jitclass_isinstance.<locals>.test_jitclass_isinstancer  sq    #Sz** "LLNNc3'' 5++--1588<<>>A-u44!zr(   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\  sm   '''	$	& 	& 	& 	& 	&& 	& 	& 
	& 
$	" 	" 	" 	" 	"& 	" 	" 
	"		" 		" 		" 		" 		" 		" *-..c<000Ass1vv777C))55S??;;;EE!HH-----r(   c                    |                      t                    5 }t           G d dt                                } |             d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                       e Zd Zd Zd ZdS ):TestJitClass.test_jitclass_unsupported_dunder.<locals>.Fooc                     d S r!   r.   r@   s    r&   r'   zCTestJitClass.test_jitclass_unsupported_dunder.<locals>.Foo.__init__  s    Fr(   c                     d S r!   r.   r@   s    r&   	__enter__zDTestJitClass.test_jitclass_unsupported_dunder.<locals>.Foo.__enter__  s    4r(   N)r+   r,   r-   r'   r  r.   r(   r&   rl   r    s2                   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  s    y)) 	Q         f     X  CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	<c!+>N>NOOOOOs   +AAAc                     t            G d dt                                }t          }|j        }|                     ||           d S )Nc                       e Zd Zd ZdS )1TestJitClass.test_modulename.<locals>.TestModnamec                     d| _         d S )N   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  sa    		 	 	 	 	& 	 	 
	 
!,[1111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  r/  rK  rW  r{  r  r  r  r  r  r.   r(   r&   r;   r;   0   s       2 2 2 24    
O O O
 
 
"? ? ?$- - -  *  ( ( (,4' 4' 4'l) ) )<4 <4 <4|* * *:O O O, , ,
< < <* * *J J J$% $% $%L< < <&M M M*' ' '<1 1 1,VE VE VEp ( ( (H H H*" " "$" " "6" " "@2 2 25 5 5(- - -># # #4. . .<& & &:#& #& #&J! ! !.
1 
1 
1Q- Q- Q-f'< '< '<R? ? ?,'. '. '.R
P 
P 
P2 2 2 2 2r(   r;   c                       e Zd Z G d d          Zed             Zed             ZddZd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zed             Zd Zd ZdS )TestJitClassOverloadsc                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TestJitClassOverloads.PyListc                     dg| _         d S r  rS  r@   s    r&   r'   z%TestJitClassOverloads.PyList.__init__  s    SDFFFr(   c                 :    | j                             |           d S r!   r"   appendr_  s     r&   r  z#TestJitClassOverloads.PyList.append  s    FMM!r(   c                 8    | j                                          d S r!   )r"   clearr@   s    r&   r  z"TestJitClassOverloads.PyList.clear  s    FLLNNNNNr(   c                 0    t          | j                  dz  S r   rL   r"   r@   s    r&   __abs__z$TestJitClassOverloads.PyList.__abs__      tv;;?"r(   c                 8    t          | j                  dz  dk    S )Nr   r   r  r@   s    r&   __bool__z%TestJitClassOverloads.PyList.__bool__  s    tv;;?a''r(   c                 R    t          d          }| j        r|| j        d         z  }|S )Nr   r   )r
  r"   )r%   r   s     r&   __complex__z(TestJitClassOverloads.PyList.__complex__  s+    

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

1r(   N)r+   r,   r-   r'   r  r  rT  r.   r(   r&   LenClassrO  ^  sP          ' ' '! ! !    r(   rU  )r   r   r   r   r#   c                       e Zd Zd ZdS )=TestJitClassOverloads.test_bool_fallback.<locals>.NormalClassc                     || _         d S r!   )r#   r_  s     r&   r'   zFTestJitClassOverloads.test_bool_fallback.<locals>.NormalClass.__init__z  r\  r(   Nr*   r.   r(   r&   NormalClassrW  x  r  r(   rY  r   )
r
   r   r   rd   r  r   r  r   rT  r   )r%   rL  jit_brU  r   rY  s         r&   test_bool_fallbackz(TestJitClassOverloads.test_bool_fallbackW  s   	 	 	 T

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

###

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

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

#####r(   c                    d }d }d }t          |          }t          |          }t          |          }t          g            G d d                      } |            }|                      ||          t          d                     |                      ||          t          d                     |                      ||          d           |                      ||          d           |                     t
                    5 }	 ||           d d d            n# 1 swxY w Y   |                     dt          |	j                             |                     t                    5 }	 ||           d d d            n# 1 swxY w Y   |                     dt          |	j                             t          g            G d d	                      }
 |
            }|                      ||          d
           |                      ||          d
           |                     t
                    5 }	 ||           d d d            n# 1 swxY w Y   |                     dt          |	j                             |                     t                    5 }	 ||           d d d            n# 1 swxY w Y   |                     dt          |	j                             |                     t
                    5 }	 ||           d d d            n# 1 swxY w Y   |                     dt          |	j                             |                     t                    5 }	 ||           d d d            n# 1 swxY w Y   |                     dt          |	j                             t          g            G d d                      } |            }|                      ||          t          d                     |                      ||          t          d                     |                      ||          d           |                      ||          d           |                      ||          d           |                      ||          d           t          g            G d d                      } |            }|                      ||          t          d                     |                      ||          t          d                     |                      ||          d           |                      ||          d           |                      ||          d
           |                      ||          d
           d S )Nc                      t          |           S r!   r	  rS  s    r&   py_cz9TestJitClassOverloads.test_numeric_fallback.<locals>.py_c  s    1::r(   c                      t          |           S r!   r6  rS  s    r&   rG  z9TestJitClassOverloads.test_numeric_fallback.<locals>.py_f  s    88Or(   c                      t          |           S r!   r9  rS  s    r&   py_iz9TestJitClassOverloads.test_numeric_fallback.<locals>.py_i  s    q66Mr(   c                       e Zd Zd Zd ZdS )?TestJitClassOverloads.test_numeric_fallback.<locals>.FloatClassc                     d S r!   r.   r@   s    r&   r'   zHTestJitClassOverloads.test_numeric_fallback.<locals>.FloatClass.__init__  r`   r(   c                     dS Nr   r.   r@   s    r&   r  zITestJitClassOverloads.test_numeric_fallback.<locals>.FloatClass.__float__      vr(   N)r+   r,   r-   r'   r  r.   r(   r&   
FloatClassrc    s2              r(   rh  r   ra   c                       e Zd Zd Zd ZdS )=TestJitClassOverloads.test_numeric_fallback.<locals>.IntClassc                     d S r!   r.   r@   s    r&   r'   zFTestJitClassOverloads.test_numeric_fallback.<locals>.IntClass.__init__  r`   r(   c                     dS r   r.   r@   s    r&   r  zETestJitClassOverloads.test_numeric_fallback.<locals>.IntClass.__int__  r   r(   N)r+   r,   r-   r'   r  r.   r(   r&   IntClassrj    2              r(   rm  r   r
  re   c                       e Zd Zd Zd ZdS )?TestJitClassOverloads.test_numeric_fallback.<locals>.IndexClassc                     d S r!   r.   r@   s    r&   r'   zHTestJitClassOverloads.test_numeric_fallback.<locals>.IndexClass.__init__  r`   r(   c                     dS r4  r.   r@   s    r&   	__index__zITestJitClassOverloads.test_numeric_fallback.<locals>.IndexClass.__index__  r   r(   N)r+   r,   r-   r'   rs  r.   r(   r&   
IndexClassrp    rn  r(   rt  r         ?c                   &    e Zd Zd Zd Zd Zd ZdS )GTestJitClassOverloads.test_numeric_fallback.<locals>.FloatIntIndexClassc                     d S r!   r.   r@   s    r&   r'   zPTestJitClassOverloads.test_numeric_fallback.<locals>.FloatIntIndexClass.__init__  r`   r(   c                     dS rf  r.   r@   s    r&   r  zQTestJitClassOverloads.test_numeric_fallback.<locals>.FloatIntIndexClass.__float__  rg  r(   c                     dS r   r.   r@   s    r&   r  zOTestJitClassOverloads.test_numeric_fallback.<locals>.FloatIntIndexClass.__int__  r   r(   c                     dS r4  r.   r@   s    r&   rs  zQTestJitClassOverloads.test_numeric_fallback.<locals>.FloatIntIndexClass.__index__  r   r(   N)r+   r,   r-   r'   r  r  rs  r.   r(   r&   FloatIntIndexClassrw    sP                  r(   r|  )
r
   r   r%  r
  r|   r}   r~   r   r   r   )r%   r^  rG  ra  jit_crH  jit_irh  r   r  rm  rt  r|  s                r&   test_numeric_fallbackz+TestJitClassOverloads.test_numeric_fallback  s   	 	 		 	 		 	 	 T

T

T

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

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

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

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

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

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

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

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

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

A&&&&&sl   D++D/2D/8FFFII#&I#,KKKL))L-0L-6NNNc                 4   |                                  }|                                 }d d d d d d d d d	 d
 d d d g}d d d d d d d g}g d}d }t          j        t	          t
          |          |          D ]\  }\  }}	|j        }
 |
||	          } ||          } ||	          }t          |          t          ur| j	        n| j
        } || |||	                      || | |
||                                || | |||                               t          j        t	          t
          |          |          D ]\  }\  }}	|j        }
t          |          t          |	          }	} |
||	          } ||          } ||	          }| 	                    | |||	                     | 	                    | | |
||                               | 	                    | | |||                               d S )Nc                     | |k    S r!   r.   r   s     r&   r)  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  
    a r(   c                     | |k    S r!   r.   r   s     r&   r)  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r(   c                     | |k    S r!   r.   r   s     r&   r)  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r(   c                     | |k    S r!   r.   r   s     r&   r)  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  
    Q r(   c                     | |k    S r!   r.   r   s     r&   r)  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r(   c                     | |k     S r!   r.   r   s     r&   r)  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r(   c                     | |z   S r!   r.   r   s     r&   r)  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  
    Q r(   c                     | |z  S r!   r.   r   s     r&   r)  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  
    a r(   c                     | |z  S r!   r.   r   s     r&   r)  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r(   c                     | |z  S r!   r.   r   s     r&   r)  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r(   c                     | |z  S r!   r.   r   s     r&   r)  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r(   c                     | |z
  S r!   r.   r   s     r&   r)  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r(   c                     | |z  S r!   r.   r   s     r&   r)  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r(   c                     | |k    S r!   r.   r   s     r&   r)  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r(   c                     | |k    S r!   r.   r   s     r&   r)  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r(   c                     | |z  S r!   r.   r   s     r&   r)  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r(   c                     | |z	  S r!   r.   r   s     r&   r)  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r(   c                     | |z  S r!   r.   r   s     r&   r)  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r(   c                     | |z  S r!   r.   r   s     r&   r)  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r(   c                     | |z  S r!   r.   r   s     r&   r)  z?TestJitClassOverloads.test_arithmetic_logical.<locals>.<lambda>  r  r(   )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  rH  r"   r#   rG  rT   jit_xjit_ychecks                  r&   test_arithmetic_logicalz-TestJitClassOverloads.test_arithmetic_logical  s   ))++
--//  
   

 
 
	. 	. 	. '.D.));8 8 	9 	9ME6Aq =DtAqzzH LOOE LOOE >>..   + 
 E(EE!QKK(((E(FF44u#5#566777E(FF55#6#6778888&.D,''6 6 	D 	DME6Aq =Dq663q66qAtAqzzHJqMMEJqMMEXuuQ{{333Xvvdd5%.@.@'A'ABBBXvveeE5.A.A'B'BCCCC	D 	Dr(   c           
         |                                  }|                                 }|                                d         }|                                d         }t          dt          j        fg           G fdd|                      t          dt          j        i           G fdd|                                                      d         }                                d         }d fdd	D             }fd
dD             }g d}	t          j        t          t          |          ||f|fg|	          D ]\  }
\  }}\  }}|
j        } | ||           ||                    j        }|                     | | ||           ||                    j                   |                     | |
 ||           ||                    j                   t          j        t          t          |          ||f|fg|	          D ]\  }
\  }}\  }}t          |          t          |          }}|
j        } | ||           ||                    j        }|                     | | ||           ||                    j                   |                     | |
 ||           ||                    j                   d S )Nr   r"   c                   H    e Zd Zd Z fdZ fdZ fdZ fdZ fdZdS )RTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapperc                     || _         d S r!   rS  rr   s     r&   r'   z[TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__init__5  r  r(   c                 4     | j         |j         z            S r!   rS  r%   r   JitIntUpdateWrappers     r&   __ilshift__z^TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__ilshift__8      **46UW+<===r(   c                 4     | j         |j         z	            S r!   rS  r  s     r&   __irshift__z^TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__irshift__;  r  r(   c                 4     | j         |j         z            S r!   rS  r  s     r&   __iand__z[TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__iand__>      **46EG+;<<<r(   c                 4     | j         |j         z            S r!   rS  r  s     r&   __ior__zZTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitIntUpdateWrapper.__ior__A  r  r(   c                 4     | 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                   \    e Zd Zd Z fdZ fdZ fdZ fdZ fdZ fdZ	 fdZ
d	S )
TTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapperc                     || _         d S r!   rS  rr   s     r&   r'   z]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__init__J  r  r(   c                 :     | j         d|j         z  z             S NgX9v@rS  r%   r   JitFloatUpdateWrappers     r&   __iadd__z]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__iadd__M  s!    ,,TVeego-EFFFr(   c                 :     | j         dz  |j         z            S r  rS  r  s     r&   __ifloordiv__zbTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__ifloordiv__P  s!    ,,TVe^uw-FGGGr(   c                 :     | j         |j         dz   z            S r4  rS  r  s     r&   __imod__z]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__imod__S  s!    ,,TVuw{-CDDDr(   c                 :     | j         |j         z  dz             S r4  rS  r  s     r&   __imul__z]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__imul__V  s"    ,,TVeg-=-ABBBr(   c                 :     | j         |j         z  dz             S r4  rS  r  s     r&   __ipow__z]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__ipow__Y  s"    ,,TVuw->-BCCCr(   c                 :     | j         d|j         z  z
            S rf  rS  r  s     r&   __isub__z]TestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__isub__\  s"    ,,TVfuw6F-FGGGr(   c                 :     | j         dz   |j         z            S r4  rS  r  s     r&   __itruediv__zaTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.JitFloatUpdateWrapper.__itruediv___  s!    ,,dfqjEG-CDDDr(   N)r+   r,   r-   r'   r  r  r  r  r  r  r  )r  s   r&   r  r  G  s          G G G G GH H H H HE E E E EC C C C CD D D D DH H H H HE E E E E E Er(   r  c                 B    d|  d}i }t          ||           |d         S )Nz
def f(x, y):
    x z= y
    return x
r  )exec)optemplate	namespaces      r&   get_update_funczNTestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.get_update_funce  s<    	  H
 I9%%%S>!r(   c                 &    g | ]} |          S r.   r.   r4  r  r  s     r&   r5  zITestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.<listcomp>o  s/       "//"--   r(   )+//%***-/c                 &    g | ]} |          S r.   r.   r  s     r&   r5  zITestJitClassOverloads.test_arithmetic_logical_inplace.<locals>.<listcomp>r  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  rH  py_clsjit_clsr"   r#   rG  rT   r  r  r  s                    @@@r&   test_arithmetic_logical_inplacez5TestJitClassOverloads.test_arithmetic_logical_inplace*  s    ,,..0022$((**1-(,,..q1	C$%	&	&	= 	= 	= 	= 	= 	= 	=, 	= 	= 
'	&	=& 
3&	'	'	E 	E 	E 	E 	E 	E 	EN 	E 	E 
(	'	E4 14466q9488::1=	" 	" 	"    9
       7
   
 
 
 1:0AD.))#_5)+@A 1 1 	N 	N,E$FGfq! =DtFF1IIvvayy113H""8TT''!**ggajj-I-I-KLLL""8UU771::wwqzz-J-J-LMMMM090AD,''!=1')<= 1 1 	H 	H,E$FGfq! q663q66qA=DtFF1IIvvayy113HXttGGAJJ

'C'C'EFFFXuuWWQZZ'D'D'FGGGG	H 	Hr(   c           
          G d d          } G d d|          }d }d }d }d }g d	}t          j        ||gd
dg          D ]	\  }}	|	rt          n|}
 |
|          } |
|          } |
|          }t          |          }dD ]-}|                      | ||                    |dz             .|D ]\  }}|                      | ||           ||                     ||           ||          k               |                      | ||           ||                     ||           ||          k               d S )Nc                   ,    e Zd ZU eed<   d Zd Zd ZdS )9TestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqTestr"   c                     || _         d S r!   rS  rT  s     r&   r'   zBTestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqTest.__init__  r\  r(   c                     | j         dz  S )Nr   rS  r@   s    r&   r  zBTestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqTest.__hash__  s    v{"r(   c                 .    | j         |j         z
  dz  dk    S )Nr  r   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    sL         FFF  # # #0 0 0 0 0r(   r  c                       e Zd Zd ZdS );TestJitClassOverloads.test_hash_eq_ne.<locals>.HashEqNeTestc                 .    | j         |j         z
  dz  dk    S )Nr  r   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  rM  r(   c                     | |k    S r!   r.   r   s     r&   py_eqz4TestJitClassOverloads.test_hash_eq_ne.<locals>.py_eq      6Mr(   c                     | |k    S r!   r.   r   s     r&   py_nez4TestJitClassOverloads.test_hash_eq_ne.<locals>.py_ne  r  r(   c                     | S r!   r.   )r  s    r&   identity_decoratorzATestJitClassOverloads.test_hash_eq_ne.<locals>.identity_decorator  s    Hr(   ))r   r   )r   r  )r   r   )r   r   FT)r   r   r      ir   )r  r  r
   r   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 
	0 
	0 
	0 
	0 
	0 
	0	/ 	/ 	/ 	/ 	/: 	/ 	/ 	/	 	 		 	 		 	 		 	 	
 
 
 "+!2&"
 "
 	 	Hg !(?-?I!	'**Ii&&Gi&&Gx((G' @ @  771::!6!6B????#  1  GGGAJJ

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

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

++--(LNN3355 	(9::: 	m,,d3D.E.EFFFFFr(   c                 <    G d d          } G d d          }dt           j        fg} t          |          |          } t          |          |          } |d          } |d          } |d          } |d          }	|                     ||k    |	|k               |                     ||k    |	|k               |                     ||k     |	|k                |                     ||k    |	|k               |                     ||k    |	|k               d S )Nc                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )HTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefinedc                     || _         d S r!   rS  rT  s     r&   r'   zQTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__init__  r\  r(   c                 "    | j         |j         k    S r!   rS  r  s     r&   r  zOTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__eq__  r  r(   c                 "    | j         |j         k    S r!   rS  r  s     r&   r  zOTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__le__  r  r(   c                 "    | j         |j         k     S r!   rS  r  s     r&   r	  zOTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__lt__   r  r(   c                 "    | j         |j         k    S r!   rS  r  s     r&   r  zOTestJitClassOverloads.test_operator_reflection.<locals>.OperatorsDefined.__ge__#  r  r(   c                 "    | j         |j         k    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+    sn          ) ) )) ) )( ( () ) )( ( ( ( (r(   r2  c                       e Zd Zd ZdS )JTestJitClassOverloads.test_operator_reflection.<locals>.NoOperatorsDefinedc                     || _         d S r!   rS  rT  s     r&   r'   zSTestJitClassOverloads.test_operator_reflection.<locals>.NoOperatorsDefined.__init__*  r\  r(   Nr*   r.   r(   r&   NoOperatorsDefinedr4  )  #            r(   r6  r"   r   r   )r   r	   r   rK   )
r%   r2  r6  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   	( 	( 	( 	( 	( 	( 	( 	(&	 	 	 	 	 	 	 	 ek"#,htnn-=>> ./A B B))!,,//22--a0033A66+~=,?	A 	A 	A 	+~=,?	A 	A 	A 	+n<,>	@ 	@ 	@ 	+~=,?	A 	A 	A 	+n<,>	@ 	@ 	@ 	@ 	@r(   c           
          G d d          } G d d          }d}t           j                            d           t           j                            |f          }t           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                            ||z  |	|z             t           j                            ||
z  |	|z             t           j                            ||z  ||z             t           j                            ||
z  ||z             t           j                            ||z  ||	z             t           j                            ||z  ||z             t           j                            |
|z  ||	z             t           j                            |
|z  ||z             ||
z  }||
z  }|	|z  }	||z  }t           j                            |j        |	j                   t           j                            |j        |j                   d S )
Nc                   &    e Zd Zd Zd Zd Zd ZdS );TestJitClassOverloads.test_matmul_operator.<locals>.ArrayAtc                     || _         d S r!   r   r%   rl  s     r&   r'   zDTestJitClassOverloads.test_matmul_operator.<locals>.ArrayAt.__init__I       r(   c                      | j         |j         z  S r!   rC  r  s     r&   
__matmul__zFTestJitClassOverloads.test_matmul_operator.<locals>.ArrayAt.__matmul__L  s    x%)++r(   c                      |j         | j         z  S r!   rC  r  s     r&   __rmatmul__zGTestJitClassOverloads.test_matmul_operator.<locals>.ArrayAt.__rmatmul__O  s    y48++r(   c                 .    | j         |j         z  | _         | S r!   rC  r  s     r&   __imatmul__zGTestJitClassOverloads.test_matmul_operator.<locals>.ArrayAt.__imatmul__R  s    8ei/r(   N)r+   r,   r-   r'   rG  rI  rK  r.   r(   r&   ArrayAtrA  H  sP        ! ! !, , ,, , ,    r(   rL  c                       e Zd Zd ZdS )=TestJitClassOverloads.test_matmul_operator.<locals>.ArrayNoAtc                     || _         d S r!   rC  rD  s     r&   r'   zFTestJitClassOverloads.test_matmul_operator.<locals>.ArrayNoAt.__init__W  rE  r(   Nr*   r.   r(   r&   	ArrayNoAtrN  V  s#        ! ! ! ! !r(   rP  r   r   )sizer   r  )r   rB  seedr   r   rm  assert_allcloser   )r%   rL  rP  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  sa   	 	 	 	 	 	 	 		! 	! 	! 	! 	! 	! 	! 	! 
	qiQD))iQF++innGCLL	I(9E733Q3<3HIII#NNEwsss|/DEEEcJJinnGCLL	K(9E7111SSqS5>3JKKKCPPGwqqq1u~/FGGGLL 	
""9{#:#0?#B	D 	D 	D

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

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

""9{#:#0?#B	D 	D 	D 	
"";#:#2]#B	D 	D 	D

"";#:#2]#B	D 	D 	D

"";#:#2]#B	D 	D 	D

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

""9=-2CDDD

""9=-2CDDDD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 ]}dt          |          vr9|                     t          d| d          t          d| d                     L|                     t          t          d| d                    t          t          d| d                               d S )Nc                   \    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dS )RTestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefinedc                     || _         d S r!   rS  rT  s     r&   r'   z[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__init__  r\  r(   c                      |j         | j         z   S r!   rS  r  s     r&   __radd__z[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__radd__      w''r(   c                      |j         | j         z
  S r!   rS  r  s     r&   __rsub__z[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rsub__  rd  r(   c                      |j         | j         z  S r!   rS  r  s     r&   __rmul__z[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rmul__  rd  r(   c                      |j         | j         z  S r!   rS  r  s     r&   __rtruediv__z_TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rtruediv__  rd  r(   c                      |j         | j         z  S r!   rS  r  s     r&   __rfloordiv__z`TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rfloordiv__      w$&((r(   c                      |j         | j         z  S r!   rS  r  s     r&   __rmod__z[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rmod__  rd  r(   c                      |j         | j         z  S r!   rS  r  s     r&   __rpow__z[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rpow__  rm  r(   c                      |j         | j         z  S r!   rS  r  s     r&   __rlshift__z^TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rlshift__  rm  r(   c                      |j         | j         z	  S r!   rS  r  s     r&   __rrshift__z^TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rrshift__  rm  r(   c                      |j         | j         z  S r!   rS  r  s     r&   __rand__z[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rand__  rd  r(   c                      |j         | j         z  S r!   rS  r  s     r&   __rxor__z[TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__rxor__  rd  r(   c                      |j         | j         z  S r!   rS  r  s     r&   __ror__zZTestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.OperatorsDefined.__ror__  rd  r(   N)r+   r,   r-   r'   rc  rf  rh  rj  rl  ro  rq  rs  ru  rw  ry  r{  r.   r(   r&   r2  r`    s          ( ( (( ( (( ( (( ( () ) )( ( () ) )) ) )) ) )( ( (( ( (( ( ( ( (r(   r2  c                       e Zd Zd ZdS )TTestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.NoOperatorsDefinedc                     || _         d S r!   rS  rT  s     r&   r'   z]TestJitClassOverloads.test_arithmetic_logical_reflection.<locals>.NoOperatorsDefined.__init__  r\  r(   Nr*   r.   r(   r&   r6  r}    r7  r(   r6  )r  r  r  r  r  r  r  r  r  r  r  r  )r   r   )r        @r   )ru  r  r  )g      4@g      8ru  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%   r2  r6  float_opint_op	test_typetest_op
test_valuerN   r8  r9  r:  r;  r<  r=  r  s                   r&   "test_arithmetic_logical_reflectionz8TestJitClassOverloads.test_arithmetic_logical_reflection  sA   &	( &	( &	( &	( &	( &	( &	( &	(P	 	 	 	 	 	 	 	 988888T848#8s8C8 FF#h)SSqS\8,,,''///)B)BCE/
 	 	*Iw
 #D"*+;T"B"B$,-?$F$F!--jm<<N!3!3JqM!B!B11*Q-@@O"7"7
1"F"F 
 
3y>>11$$F2FFFGGHBHHHII   
 ))d#L#L#L#LMMNNd#N"#N#N#NOOPP   
!	 	r(   c                      G d d          } t          g           |          } |            }|                     ||k               d S )Nc                       e Zd Zd Zd ZdS )GTestJitClassOverloads.test_implicit_hash_compiles.<locals>.ImplicitHashc                     d S r!   r.   r@   s    r&   r'   zPTestJitClassOverloads.test_implicit_hash_compiles.<locals>.ImplicitHash.__init__  r`   r(   c                     dS )NFr.   r  s     r&   r  zNTestJitClassOverloads.test_implicit_hash_compiles.<locals>.ImplicitHash.__eq__  s    ur(   N)r+   r,   r-   r'   r  r.   r(   r&   ImplicitHashr    s2              r(   r  )r   r   )r%   r  jittedinstances       r&   test_implicit_hash_compilesz1TestJitClassOverloads.test_implicit_hash_compiles  sk    	 	 	 	 	 	 	 	 "l++688X-.....r(   r!   )r+   r,   r-   r  rf  r  r"  r%  rI  r[  r  r  r  r  r  r(  r>  r   r]  r  r  r.   r(   r&   r  r    sq       ,* ,* ,* ,* ,* ,* ,* ,*\   \: 4 4 \4l1 1 1 10< 0< 0<d($ ($ ($Ta' a' a'FDD DD DDLkH kH kHZ: : :x)K )K )KVG G G./@ /@ /@b =E =E =E~J J JX/ / / / /r(   r  __main__)2r   r  rR  rB  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     sz               # # # # # #    + + + + + + + + + + + + + + + + + + + + + + $ $ $ $ $ $ $ $ , , , , , , 8 8 8 8 8 8 8 8 * * * * * * ' ' ' ' ' ' , , , , , , 9 9 9 9 9 9 L L L L L L L L L L 1 1 1 1 1 1                i2 i2 i2 i2 i28_ i2 i2 i2X#D/ D/ D/ D/ D/OX D/ D/ D/N zHMOOOOO r(   