
    pi0                     j   d Z ddlZddlZddlmZmZmZmZ ddl	m
Z
 ddlmZ ddlmZmZ ddlmZmZmZmZ ej*                   G d d	e
j,                               Z ed
e
j0                  dd fde
j0                  fg      Z ej4                  eej6                          G d dej6                        Zej*                   G d de
j,                               Z ej<                  eed
dg       ed        Zed        Z ed        Z!ed        Z"ed        Z#ed        Z$ed        Z%ed        Z&ed        Z' G d de      Z( G d dee      Z) eed      d        Z* eed       d!        Z+ G d" d#ee      Z,d$ Z-d% Z. G d& d'ee      Z/ej*                   G d( d)e
j,                               Z0 e0d*e
jb                  fd+e
jb                  ff      Z2 G d, d-ej6                        Z3ed.        Z4ed/        Z5 ej<                  e3e0d*d+g        ee0d0      d1        Z6 ee0d       d2        Z7 G d3 d4ee      Z8y)5z%
Test mutable struct, aka, structref
    N)typednjiterrorstypeof)types)	structref)overload_methodoverload_attribute)MemoryLeakMixinTestCasetemp_directoryoverride_configc                       e Zd ZdZy)MySimplerStructTypezV
    Test associated with this type represent the lowest level uses of structref.
    N__name__
__module____qualname____doc__     ]/opt/services/ai/voice_agent/venv/lib/python3.12/site-packages/numba/tests/test_struct_ref.pyr   r           	r   r   valuescounter)fieldsc                   r    e Zd Zd Zed        Zej                  d        Zed        Zd Zed        Z	d Z
y)	MyStructc                 D    t         j                  j                  | ||      S Nr   StructRefProxy__new__)clsr   r   s      r   r#   zMyStruct.__new__"   s     ''//VWEEr   c                     t        |       S r    )
get_valuesselfs    r   r   zMyStruct.values*   s    $r   c                     t        | |      S r    )
set_values)r(   vals     r   r   zMyStruct.values.   s    $$$r   c                     t        |       S r    )get_counterr'   s    r   r   zMyStruct.counter2   s    4  r   c                 :    | j                   |z  | j                  z   S r    r   r   r(   args     r   testmezMyStruct.testme6       {{S 4<<//r   c                 2    | j                   | j                  fS r    r/   r'   s    r   propzMyStruct.prop9   s    {{DLL((r   c                     t        |       S r    )compute_fieldsr'   s    r   __hash__zMyStruct.__hash__=   s    d##r   N)r   r   r   r#   propertyr   setterr   r2   r5   r8   r   r   r   r   r       sf    F     ]]% % ! !0 ) )$r   r   c                       e Zd ZdZy)MyStructTypezTTest associated with this type represent the higher-level uses of
    structef.
    Nr   r   r   r   r<   r<   A   r   r   r<   c                 R    t        j                  t              }t        || |       |S r    )r   newmy_struct_tymy_struct_init)r   r   sts      r   	my_structrB   S   s!    	|	$B2vw'Ir   c                      || _         || _        y r    r/   )r(   r   r   s      r   r@   r@   Z   s    DKDLr   c                     t        | |      }|xj                  |j                  z  c_        |xj                  |z  c_        |S )Nr   )rB   r   r   )vsctrrA   s      r   ctor_by_intrinsicrH   `   s3    	2s	#BIIIJJ#JIr   c                     t        | |      S Nr/   r   )rF   rG   s     r   ctor_by_classrL   h   s    2s++r   c                     | j                   S r    r   rA   s    r   r&   r&   m   s    99r   c                     || _         y r    rN   )rA   r+   s     r   r*   r*   r   s	    BIr   c                     | j                   S r    rE   rO   s    r   r-   r-   w   s    ::r   c                 4    | j                   | j                  z   S r    r/   rO   s    r   r7   r7   |   s    99rzz!!r   c                  B    t        dd      } t        dd      }| | u | |u fS )N      rK   )cds     r   test_structref_isrX      s+    AAAAFAFr   c                       e Zd Zd Zy)TestStructRefIsc                 h    t               }| j                  |d          | j                  |d          y Nr      )rX   
assertTrueassertFalse)r(   ress     r   test_is_identityz TestStructRefIs.test_is_identity   s,    !AQ r   N)r   r   r   ra   r   r   r   rZ   rZ      s    !r   rZ   c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestStructRefBasicc                    t        j                  dt         j                  fg      }| j                  |j                  d   t         j                         t        j                  dt         j                  fdt         j
                  fg      }| j                  |j                  d   t         j                         | j                  |j                  d   t         j
                         | j                  t        d      5  t        j                  dt         j                  fg       d d d        | j                  t        d      5  t        j                  dg       d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY w)Nabzexpecting a str for field namer]   z%expecting a Numba Type for field type)re   {   )r   	StructRefint64assertEqual
field_dictfloat64assertRaisesRegex
ValueError)r(   srs     r   test_structref_typez&TestStructRefBasic.test_structref_type   s   __sEKK012s+U[[9__sEKK032FGHs+U[[9s+U]];##J$DF 	0OOa-./	0 ##J$KM 	*OOZL)	* 	*	0 	0	* 	*s   ;'E  E, E),E5c                 F   | j                  t        d      5  t        j                  t        j
                         d d d        | j                  t        d      5  t        j                  t        j
                  t               d d d        y # 1 sw Y   QxY w# 1 sw Y   y xY w)Nzcannot register)rm   rn   r   registerr   rh   define_boxingr   r'   s    r   test_invalid_usesz$TestStructRefBasic.test_invalid_uses   sy    ##J0AB 	0u/	0##J0AB 	?##EOOX>	? 	?	0 	0	? 	?s   $B)BBB c                     t        j                  dt         j                        }d}||z   }t        ||      }| j	                  |t
               | j                  |t        |             |||z  z   }t        |      }| j                  ||       y )N
   dtype   )	nparangeintprH   assertNotIsInstancer   assertPreciseEqualr&   r7   )r(   rF   rG   first_expected	first_gotsecond_expected
second_gots          r   test_MySimplerStructTypez+TestStructRefBasic.test_MySimplerStructType   s    YYr)b%b#.	 	  H5
90EF(C#I6#I.
<r   c                    t        j                  dt         j                        }d}t        ||      }| j	                  |t
        j                         | j                  t        d      5  |j                   d d d        | j                  t        d      5  |j                   d d d        y # 1 sw Y   5xY w# 1 sw Y   y xY w)Nrv   rw   ry   r   r   )rz   r{   r|   rH   assertIsInstancer   r"   rm   AttributeErrorr   r   )r(   rF   rG   wrappers       r   -test_MySimplerStructType_wrapper_has_no_attrsz@TestStructRefBasic.test_MySimplerStructType_wrapper_has_no_attrs   s    YYr)#B,gy'?'?@##NH= 	NN	##NI> 	OO	 		 		 	s   *B+B7+B47C c                 j   t        j                  dt         j                        }d}|j                         }t	        ||      }| j                  |t               | j                  ||j                         ||z   }t        |      }| j                  ||       | j                  |j                  |       y Nrv   rw      )rz   r{   rl   copyrL   r   r   r~   r   r7   rj   r   )r(   rF   rG   first_expected_arrr   r   r   s          r   test_MyStructTypez$TestStructRefBasic.test_MyStructType   s    YYr,WWY!"c*	i2 2I4D4DE,s2#I.
<**C0r   c                    t         d        } |dddd      \  }}| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       y )Nc                 2    t        | |      t        ||      fS r    rK   )xymns       r   
mixed_typezDTestStructRefBasic.test_MyStructType_mixed_types.<locals>.mixed_type   s    Aq>8Aq>11r   r]   ffffff@y        333333@)rU   )r   rj   r   r   )r(   r   re   rf   s       r   test_MyStructType_mixed_typesz0TestStructRefBasic.test_MyStructType_mixed_types   sz    		2 
	2 !S$-11%C(4(D)r   c                 *   t        j                         }t        dd      |d<   | j                  |d   j                  d       | j                  |d   j
                  d       t        dd      |d<   | j                  |d   j                  d       | j                  |d   j
                  d       |d   xj                  dz  c_        | j                  |d   j                  d       | j                  |d   j
                  d       t        dd	      |d
<   y )Nr]   r   re      gffffff
@rv      rU   gffffff@rf   )r   Dictr   rj   r   r   r(   tds     r   test_MyStructType_in_dictz,TestStructRefBasic.test_MyStructType_in_dict   s    ZZ\1c"3C+C#.1c"3C+C#.
3"C,C#.1c"3r   c                 n   | j                          t        j                         }t        dd      |d<   | j	                  |d   j
                  d       | j	                  |d   j                  d       | j                  t        j                  d      5  t        dd      |d<   d d d        y # 1 sw Y   y xY w)Nr]   r   re   zCannot cast numba.MyStructTyperf   )
disable_leak_checkr   r   r   rj   r   r   rm   r   TypingErrorr   s     r   *test_MyStructType_in_dict_mixed_type_errorz=TestStructRefBasic.test_MyStructType_in_dict_mixed_type_error   s    !ZZ\1c"3C+C#. ##F$6$6$EG 	' sA&BsG		' 	' 	's   B++B4c                 h    t        dd      }t        |       | j                  t        |      d       y )Nr]   r   rT   )r   r   rj   hash)r(   rA   s     r   *test_MyStructType_hash_no_typeof_recursionz=TestStructRefBasic.test_MyStructType_hash_no_typeof_recursion   s*     a^r
b1%r   N)r   r   r   rp   rt   r   r   r   r   r   r   r   r   r   r   rc   rc      s/    *?=1
*# '&r   rc   r2   c                     d }|S )Nc                 :    | j                   |z  | j                  z   S r    r/   r0   s     r   implz%_ol_mystructtype_testme.<locals>.impl  r3   r   r   )r(   r1   r   s      r   _ol_mystructtype_testmer      s    0Kr   r5   c                     d }|S )Nc                 2    | j                   | j                  fS r    r/   r'   s    r   getz"_ol_mystructtype_prop.<locals>.get  s    {{DLL((r   r   r(   r   s     r   _ol_mystructtype_propr     s    )Jr   c                       e Zd Zd Zd Zy)TestStructRefExtendingc                 v    t         d        }d} ||      }|j                  |      }| j                  ||       y )Nc                     t        j                  dt         j                        }d}t        ||      }|j	                  |       S r   )rz   r{   rl   r   r2   )r   rF   rG   objs       r   checkz:TestStructRefExtending.test_overload_method.<locals>.check  s5    2RZZ0BC2s#C::a= r   rT   r   py_funcr~   r(   r   r   gotexpects        r   test_overload_methodz+TestStructRefExtending.test_overload_method  sB    		! 
	! Ahq!V,r   c                 n    t         d        } |       }|j                         }| j                  ||       y )Nc                      t        j                  dt         j                        } d}t        | |      }|j                  S r   )rz   r{   rl   r   r5   )rF   rG   r   s      r   r   z=TestStructRefExtending.test_overload_attribute.<locals>.check  s0    2RZZ0BC2s#C88Or   r   r(   r   r   r   s       r   test_overload_attributez.TestStructRefExtending.test_overload_attribute  s8    		 
	 gV,r   N)r   r   r   r   r   r   r   r   r   r     s    -
-r   r   c                      t        | |      }|S rJ   rK   )r   r   structs      r   caching_test_maker   (  s    Q*FMr   c                 $    | j                  |      S r    )r2   )r   zs     r   caching_test_user   -  s    ==r   c                       e Zd Zd Zd Zd Zy)TestStructRefCachingc                    t        t        j                        | _        t	        d| j                        | _        | j
                  j                          t        j                  d       t        j                  dd       y )N	CACHE_DIRerrorignore	typeguard)actionmodule)
r   r   r   
_cache_dirr   _cache_override	__enter__warningssimplefilterfilterwarningsr'   s    r   setUpzTestStructRefCaching.setUp2  sX    ()=)F)FG.{DOOL&&(g&xDr   c                 f    | j                   j                  d d d        t        j                          y r    )r   __exit__r   resetwarningsr'   s    r   tearDownzTestStructRefCaching.tearDown9  s&    %%dD$7 r   c                 P      fd fd fd} |d        |d       y )Nc                     j                  t        | j                        d       j                  t        | j                        d       y )Nr]   r   rj   len
cache_hitscache_missesstatsr(   s    r   assert_cachedzBTestStructRefCaching.test_structref_caching.<locals>.assert_cached>  9    S!1!12A6S!3!34a8r   c                     j                  t        | j                        d       j                  t        | j                        d       y r\   r   r   s    r   assert_not_cachedzFTestStructRefCaching.test_structref_caching.<locals>.assert_not_cachedB  r   r   c                     t        d      t              } t        d      t              }t        j                  j	                  d      }d}d} |||      } |||      }||z  |z   }j                  ||       | r% 	|j                          	|j                         y  
|j                          
|j                         y )NT)cacherT      )r   r   r   rz   randomr~   r   )cached
check_make	check_userF   rG   factorrA   r   r   r   r   r(   s            r   r   z:TestStructRefCaching.test_structref_caching.<locals>.checkF  s    )D)*;<J(4()9:I!!!$BCFB$BB'C&[3&F##C0j../ioo.!*"2"23!)//2r   F)r   Tr   )r(   r   r   r   s   ` @@r   test_structref_cachingz+TestStructRefCaching.test_structref_caching=  s$    	9	9	3$ 	UTr   N)r   r   r   r   r   r   r   r   r   r   r   1  s    E!r   r   c                       e Zd Zd Zy)PolygonStructTypec                     dt        |        | _        t        dt        j                  t        j
                        fdt        j                  |       fg      }|S )Nznumba.PolygonStructType#valueparent)idnametupler   Optionalri   )r(   r   s     r   preprocess_fieldsz#PolygonStructType.preprocess_fields_  sP    .r$xj9	ennU[[12u~~d+,
 
 r   N)r   r   r   r   r   r   r   r   r   \  s    r   r   r   r   c                   2    e Zd Zd Zed        Zed        Zy)PolygonStructc                 D    t         j                  j                  | ||      S r    r!   )r$   r   r   s      r   r#   zPolygonStruct.__new__q  s    ''//UFCCr   c                     t        |       S r    )PolygonStruct_get_valuer'   s    r   r   zPolygonStruct.valuet  s    &t,,r   c                     t        |       S r    )PolygonStruct_get_parentr'   s    r   r   zPolygonStruct.parentx  s    '--r   N)r   r   r   r#   r9   r   r   r   r   r   r   r   p  s0    D - - . .r   r   c                     | j                   S r    r   r'   s    r   r   r   }  s    ::r   c                     | j                   S r    )r   r'   s    r   r   r     s    ;;r   flipc                     d }|S )Nc                 B    | j                   | j                    | _         y y r    r   r'   s    r   r   z%_ol_polygon_struct_flip.<locals>.impl  s    ::!**DJ "r   r   )r(   r   s     r   _ol_polygon_struct_flipr    s    % Kr   c                     d }|S )Nc                 2    | j                   | j                  fS r    )r   r   r'   s    r   r   z$_ol_polygon_struct_prop.<locals>.get  s    zz4;;&&r   r   r   s     r   _ol_polygon_struct_propr    s    'Jr   c                       e Zd Zd Zd Zd Zy)TestStructRefForwardTypingc                 X    t         d        }d} ||      }|}| j                  ||       y )Nc                     t        d d       }t        d d       }| |_        ||_        | |_        |j                  j                  S r    )r   r   r   r   polyp_polys      r   r   zCTestStructRefForwardTyping.test_same_type_assignment.<locals>.check  s?     t,D"4.FDJ DKFL;;$$$r   r   r   r~   r   s        r   test_same_type_assignmentz4TestStructRefForwardTyping.test_same_type_assignment  s9    		% 
	% AhV,r   c                 Z    t         d        }d} ||      }| }| j                  ||       y )Nc                     t        d d       }t        d d       }| |_        ||_        | |_        |j                          |j                  j                          |j                  j                  S r    )r   r   r   r  r  s      r   r   z>TestStructRefForwardTyping.test_overload_method.<locals>.check  sX     t,D"4.FDJ DKFLIIKKK;;$$$r   rT   r  r   s        r   r   z/TestStructRefForwardTyping.test_overload_method  s;    		% 
	% AhV,r   c                 R    t         d        } |       }d}| j                  ||       y )Nc                  8    t        dd       } | j                  d   S )N   r   )r   r5   )r   s    r   r   zATestStructRefForwardTyping.test_overload_attribute.<locals>.check  s    4(C88A;r   r  r  r   s       r   r   z2TestStructRefForwardTyping.test_overload_attribute  s2    		 
	 gV,r   N)r   r   r   r  r   r   r   r   r   r
  r
    s    --"-r   r
  )9r   r   numpyrz   numbar   r   r   r   
numba.corer   numba.experimentalr   numba.extendingr	   r
   numba.tests.supportr   r   r   r   rr   rh   r   r|   r?   rs   r"   r   r<   define_proxyrB   r@   rH   rL   r&   r*   r-   r7   rX   rZ   rc   r   r   r   r   r   r   r   Anypolygon_struct_typer   r   r   r  r  r
  r   r   r   <module>r      s
     - -  ( ? 
 	%// 	 	 #uzz!}%	5::'>? 	  +Y-E-E F$y'' $B 	5?? 	 	 	  y    
   , ,       " "  !h !m&( m&` x( ) L&) *-_h -6
(?H (V 
 
 
 (eiiuyy0  
.I,, 
.     	  h "F+ , %v. /)-( )-r   