
    i/                     8   S r SSKrSSKrSSKJrJrJrJr  SSK	J
r
  SSKJr  SSKJrJr  SSKJrJrJrJr  \R*                   " S S	\
R,                  5      5       r\" S
\
R0                  SS 4S\
R0                  4/S9r\R4                  " \\R6                  5         " S S\R6                  5      r\R*                   " S S\
R,                  5      5       r\R<                  " \\S
S/5        \S 5       r\S 5       r \S 5       r!\S 5       r"\S 5       r#\S 5       r$\S 5       r%\S 5       r& " S S\\5      r'\" \S5      S 5       r(\" \S5      S 5       r) " S S \\5      r*S! r+S" r, " S# S$\\5      r-\R*                   " S% S&\
R,                  5      5       r.\." S'\
R^                  4S(\
R^                  44S9r0 " S) S*\R6                  5      r1\S+ 5       r2\S, 5       r3\R<                  " \1\.S'S(/5        \" \.S-5      S. 5       r4\" \.S5      S/ 5       r5 " S0 S1\\5      r6g)2z%
Test mutable struct, aka, structref
    N)typednjiterrorstypeof)types)	structref)overload_methodoverload_attribute)MemoryLeakMixinTestCasetemp_directoryoverride_configc                       \ rS rSrSrSrg)MySimplerStructType   zN
Test associated with this type represent the lowest level uses of structref.
 N__name__
__module____qualname____firstlineno____doc____static_attributes__r       V/var/www/html/trading/venv/lib/python3.13/site-packages/numba/tests/test_struct_ref.pyr   r           	r   r   valuescounter)fieldsc                   z    \ rS rSrS r\S 5       r\R                  S 5       r\S 5       rS r	\S 5       r
S rS	rg
)MyStruct    c                 B    [         R                  R                  XU5      $ Nr   StructRefProxy__new__)clsr   r   s      r   r'   MyStruct.__new__"   s     ''//WEEr   c                     [        U 5      $ r$   )
get_valuesselfs    r   r   MyStruct.values*   s    $r   c                     [        X5      $ r$   )
set_values)r-   vals     r   r   r.   .   s    $$$r   c                     [        U 5      $ r$   )get_counterr,   s    r   r   MyStruct.counter2   s    4  r   c                 :    U R                   U-  U R                  -   $ r$   r   r   r-   args     r   testmeMyStruct.testme6       {{S 4<<//r   c                 2    U R                   U R                  4$ r$   r6   r,   s    r   propMyStruct.prop9   s    {{DLL((r   c                     [        U 5      $ r$   )compute_fieldsr,   s    r   __hash__MyStruct.__hash__=   s    d##r   r   N)r   r   r   r   r'   propertyr   setterr   r9   r=   rA   r   r   r   r   r!   r!       sf    F     ]]% % ! !0 ) )$r   r!   c                       \ rS rSrSrSrg)MyStructTypeA   zLTest associated with this type represent the higher-level uses of
structef.
r   Nr   r   r   r   rF   rF   A   r   r   rF   c                 R    [         R                  " [        5      n[        X U5        U$ r$   )r   newmy_struct_tymy_struct_init)r   r   sts      r   	my_structrM   S   s    	|	$B2w'Ir   c                     Xl         X l        g r$   r6   )r-   r   r   s      r   rK   rK   Z   s    KLr   c                     [        XS9nU=R                  UR                  -  sl        U=R                  U-  sl        U$ )Nr   )rM   r   r   )vsctrrL   s      r   ctor_by_intrinsicrS   `   s1    	2	#BIIIJJ#JIr   c                     [        XS9$ Nr6   r!   )rQ   rR   s     r   ctor_by_classrW   h   s    2++r   c                     U R                   $ r$   r   rL   s    r   r+   r+   m   s    99r   c                     Xl         g r$   rY   )rL   r1   s     r   r0   r0   r   s    Ir   c                     U R                   $ r$   rP   rZ   s    r   r3   r3   w   s    ::r   c                 4    U R                   U R                  -   $ r$   r6   rZ   s    r   r@   r@   |   s    99rzz!!r   c                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)TestStructRefBasic   c                    [         R                  " S[         R                  4/5      nU R                  UR                  S   [         R                  5        [         R                  " S[         R                  4S[         R
                  4/5      nU R                  UR                  S   [         R                  5        U R                  UR                  S   [         R
                  5        U R                  [        S5         [         R                  " S[         R                  4/5        S S S 5        U R                  [        S5         [         R                  " S/5        S S S 5        g ! , (       d  f       NE= f! , (       d  f       g = f)Nabzexpecting a str for field name   z%expecting a Numba Type for field type)rb   {   )r   	StructRefint64assertEqual
field_dictfloat64assertRaisesRegex
ValueError)r-   srs     r   test_structref_type&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OOa-./F ##J$KMOOZL)M MF FM Ms   =(E$E5$
E25
Fc                 ^   U R                  [        S5         [        R                  " [        R
                  5        S S S 5        U R                  [        S5         [        R                  " [        R
                  [        5        S S S 5        g ! , (       d  f       NW= f! , (       d  f       g = f)Nzcannot register)rk   rl   r   registerr   rf   define_boxingr!   r,   s    r   test_invalid_uses$TestStructRefBasic.test_invalid_uses   sj    ##J0ABu/ C##J0AB##EOOX> CB CBBBs   %B*B
B
B,c                    [         R                  " S[         R                  S9nSnX-   n[        X5      nU R	                  U[
        5        U R                  U[        U5      5        X2U-  -   n[        U5      nU R                  XV5        g )N
   dtype   )	nparangeintprS   assertNotIsInstancer!   assertPreciseEqualr+   r@   )r-   rQ   rR   first_expected	first_gotsecond_expected
second_gots          r   test_MySimplerStructType+TestStructRefBasic.test_MySimplerStructType   sw    YYr)%b.	 	  H5
90EF(#I6#I.
<r   c                    [         R                  " S[         R                  S9nSn[        X5      nU R	                  U[
        R                  5        U R                  [        S5         UR                    S S S 5        U R                  [        S5         UR                    S S S 5        g ! , (       d  f       N:= f! , (       d  f       g = f)Nrv   rw   ry   r   r   )rz   r{   r|   rS   assertIsInstancer   r&   rk   AttributeErrorr   r   )r-   rQ   rR   wrappers       r   -test_MySimplerStructType_wrapper_has_no_attrs@TestStructRefBasic.test_MySimplerStructType_wrapper_has_no_attrs   s    YYr)#B,gy'?'?@##NH=NN >##NI>OO ?> >=>>s   'B(B9(
B69
Cc                 ^   [         R                  " S[         R                  S9nSnUR                  5       n[	        X5      nU R                  U[        5        U R                  X4R                  5        X2-   n[        U5      nU R                  XV5        U R                  UR                  U5        g Nrv   rw      )rz   r{   rj   copyrW   r   r!   r~   r   r@   rh   r   )r-   rQ   rR   first_expected_arrr   r   r   s          r   test_MyStructType$TestStructRefBasic.test_MyStructType   s    YYr,WWY!"*	i2 24D4DE,2#I.
<**C0r   c                    [         S 5       nU" SSSS5      u  p#U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        g )Nc                 .    [        X5      [        X#5      4$ r$   rV   )xymns       r   
mixed_typeDTestStructRefBasic.test_MyStructType_mixed_types.<locals>.mixed_type   s    A>8A>11r   rd   ffffff@y        333333@)   )r   rh   r   r   )r-   r   rb   rc   s       r   test_MyStructType_mixed_types0TestStructRefBasic.test_MyStructType_mixed_types   sx    		2 
	2 !S$-1%C(4(D)r   c                 ,   [         R                  " 5       n[        SS5      US'   U R                  US   R                  S5        U R                  US   R
                  S5        [        SS5      US'   U R                  US   R                  S5        U R                  US   R
                  S5        US   =R                  S-  sl        U R                  US   R                  S5        U R                  US   R
                  S5        [        SS	5      US
'   g )Nrd   r   rb      gffffff
@rv      r   gffffff@rc   )r   Dictr!   rh   r   r   r-   tds     r   test_MyStructType_in_dict,TestStructRefBasic.test_MyStructType_in_dict   s    ZZ\1c"3C+C#.1c"3C+C#.
3"C,C#.1c"3r   c                 z   U R                  5         [        R                  " 5       n[        SS5      US'   U R	                  US   R
                  S5        U R	                  US   R                  S5        U R                  [        R                  S5         [        SS5      US'   S S S 5        g ! , (       d  f       g = f)Nrd   r   rb   zCannot cast numba.MyStructTyperc   )
disable_leak_checkr   r   r!   rh   r   r   rk   r   TypingErrorr   s     r   *test_MyStructType_in_dict_mixed_type_error=TestStructRefBasic.test_MyStructType_in_dict_mixed_type_error   s    !ZZ\1c"3C+C#. ##F$6$6$EG sA&BsG	G G Gs   B,,
B:c                 h    [        SS5      n[        U5        U R                  [        U5      S5        g )Nrd   r      )r!   r   rh   hash)r-   rL   s     r   *test_MyStructType_hash_no_typeof_recursion=TestStructRefBasic.test_MyStructType_hash_no_typeof_recursion   s*     a^r
b1%r   r   N)r   r   r   r   rn   rs   r   r   r   r   r   r   r   r   r   r   r   r_   r_      s/    *?=1
*# '&r   r_   r9   c                     S nU$ )Nc                 :    U R                   U-  U R                  -   $ r$   r6   r7   s     r   impl%_ol_mystructtype_testme.<locals>.impl   r;   r   r   )r-   r8   r   s      r   _ol_mystructtype_testmer      s    0Kr   r=   c                     S nU$ )Nc                 2    U R                   U R                  4$ r$   r6   r,   s    r   get"_ol_mystructtype_prop.<locals>.get   s    {{DLL((r   r   r-   r   s     r   _ol_mystructtype_propr      s    )Jr   c                        \ rS rSrS rS rSrg)TestStructRefExtending   c                 t    [         S 5       nSnU" U5      nUR                  U5      nU R                  X45        g )Nc                     [         R                  " S[         R                  S9nSn[        X5      nUR	                  U 5      $ r   )rz   r{   rj   r!   r9   )r   rQ   rR   objs       r   check:TestStructRefExtending.test_overload_method.<locals>.check  s3    2RZZ0BC2#C::a= r   r   r   py_funcr~   r-   r   r   gotexpects        r   test_overload_method+TestStructRefExtending.test_overload_method   s@    		! 
	! Ahq!,r   c                 l    [         S 5       nU" 5       nUR                  5       nU R                  X#5        g )Nc                  z    [         R                  " S[         R                  S9n Sn[        X5      nUR                  $ r   )rz   r{   rj   r!   r=   )rQ   rR   r   s      r   r   =TestStructRefExtending.test_overload_attribute.<locals>.check  s.    2RZZ0BC2#C88Or   r   r-   r   r   r   s       r   test_overload_attribute.TestStructRefExtending.test_overload_attribute  s6    		 
	 g,r   r   N)r   r   r   r   r   r   r   r   r   r   r   r      s    -
-r   r   c                     [        XS9nU$ rU   rV   )r   r   structs      r   caching_test_maker     s    Q*FMr   c                 $    U R                  U5      $ r$   )r9   )r   zs     r   caching_test_user     s    ==r   c                   &    \ rS rSrS rS rS rSrg)TestStructRefCachingi#  c                     [        [        R                  5      U l        [	        SU R                  5      U l        U R
                  R                  5         [        R                  " S5        [        R                  " SSS9  g )N	CACHE_DIRerrorignore	typeguard)actionmodule)
r   r   r   
_cache_dirr   _cache_override	__enter__warningssimplefilterfilterwarningsr,   s    r   setUpTestStructRefCaching.setUp$  sX    ()=)F)FG.{DOOL&&(g&xDr   c                 h    U R                   R                  S S S 5        [        R                  " 5         g r$   )r   __exit__r   resetwarningsr,   s    r   tearDownTestStructRefCaching.tearDown+  s&    %%dD$7 r   c                 J   ^ ^^ U 4S jmU 4S jmUUU 4S jnU" SS9  U" SS9  g )Nc                    > TR                  [        U R                  5      S5        TR                  [        U R                  5      S5        g )Nrd   r   rh   len
cache_hitscache_missesstatsr-   s    r   assert_cachedBTestStructRefCaching.test_structref_caching.<locals>.assert_cached0  9    S!1!12A6S!3!34a8r   c                    > TR                  [        U R                  5      S5        TR                  [        U R                  5      S5        g )Nr   rd   r   r   s    r   assert_not_cachedFTestStructRefCaching.test_structref_caching.<locals>.assert_not_cached4  r   r   c                   > [        SS9" [        5      n[        SS9" [        5      n[        R                  R	                  S5      nSnSnU" X45      nU" Xe5      nX5-  U-   nTR                  Xx5        U (       a%  T	" UR                  5        T	" UR                  5        g T
" UR                  5        T
" UR                  5        g )NT)cacher   r   )r   r   r   rz   randomr~   r   )cached
check_make	check_userQ   rR   factorrL   r   r   r   r   r-   s            r   r   :TestStructRefCaching.test_structref_caching.<locals>.check8  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_caching+TestStructRefCaching.test_structref_caching/  s$    	9	9	3$ 	UTr   )r   r   N)r   r   r   r   r   r   r  r   r   r   r   r   r   #  s    E!r   r   c                       \ rS rSrS rSrg)PolygonStructTypeiN  c                     S[        U 5       3U l        [        S[        R                  " [        R
                  5      4S[        R                  " U 5      4/5      nU$ )Nznumba.PolygonStructType#valueparent)idnametupler   Optionalrg   )r-   r   s     r   preprocess_fields#PolygonStructType.preprocess_fieldsQ  sP    .r$xj9	ennU[[12u~~d+,
 
 r   )r
  N)r   r   r   r   r  r   r   r   r   r  r  N  s    r   r  r  r  c                   :    \ rS rSrS r\S 5       r\S 5       rSrg)PolygonStructib  c                 B    [         R                  R                  XU5      $ r$   r%   )r(   r  r  s      r   r'   PolygonStruct.__new__c  s    ''//FCCr   c                     [        U 5      $ r$   )PolygonStruct_get_valuer,   s    r   r  PolygonStruct.valuef  s    &t,,r   c                     [        U 5      $ r$   )PolygonStruct_get_parentr,   s    r   r  PolygonStruct.parentj  s    '--r   r   N)	r   r   r   r   r'   rC   r  r  r   r   r   r   r  r  b  s0    D - - . .r   r  c                     U R                   $ r$   r  r,   s    r   r  r  o  s    ::r   c                     U R                   $ r$   )r  r,   s    r   r  r  t  s    ;;r   flipc                     S nU$ )Nc                 D    U R                   b  U R                   * U l         g g r$   r  r,   s    r   r   %_ol_polygon_struct_flip.<locals>.impl  s    ::!**DJ "r   r   )r-   r   s     r   _ol_polygon_struct_flipr     s    % Kr   c                     S nU$ )Nc                 2    U R                   U R                  4$ r$   )r  r  r,   s    r   r   $_ol_polygon_struct_prop.<locals>.get  s    zz4;;&&r   r   r   s     r   _ol_polygon_struct_propr$    s    'Jr   c                   &    \ rS rSrS rS rS rSrg)TestStructRefForwardTypingi  c                 V    [         S 5       nSnU" U5      nUnU R                  X45        g )Nc                     [        S S 5      n[        S S 5      nXl        X!l        Xl        UR                  R                  $ r$   )r  r  r  r   polyp_polys      r   r   CTestStructRefForwardTyping.test_same_type_assignment.<locals>.check  s9     t,D"4.FJ KL;;$$$r   r   r   r~   r   s        r   test_same_type_assignment4TestStructRefForwardTyping.test_same_type_assignment  s7    		% 
	% Ah,r   c                 X    [         S 5       nSnU" U5      nU* nU R                  X45        g )Nc                     [        S S 5      n[        S S 5      nXl        X!l        Xl        UR                  5         UR                  R                  5         UR                  R                  $ r$   )r  r  r  r  r)  s      r   r   >TestStructRefForwardTyping.test_overload_method.<locals>.check  sR     t,D"4.FJ KLIIKKK;;$$$r   r   r-  r   s        r   r   /TestStructRefForwardTyping.test_overload_method  s9    		% 
	% Ah,r   c                 P    [         S 5       nU" 5       nSnU R                  X#5        g )Nc                  8    [        SS 5      n U R                  S   $ )N   r   )r  r=   )r   s    r   r   ATestStructRefForwardTyping.test_overload_attribute.<locals>.check  s    4(C88A;r   r6  r-  r   s       r   r   2TestStructRefForwardTyping.test_overload_attribute  s0    		 
	 g,r   r   N)r   r   r   r   r.  r   r   r   r   r   r   r&  r&    s    --"-r   r&  )7r   r   numpyrz   numbar   r   r   r   
numba.corer   numba.experimentalr   numba.extendingr	   r
   numba.tests.supportr   r   r   r   rq   rf   r   r|   rJ   rr   r&   r!   rF   define_proxyrM   rK   rS   rW   r+   r0   r3   r@   r_   r   r   r   r   r   r   r  Anypolygon_struct_typer  r  r  r   r$  r&  r   r   r   <module>rB     s     - -  ( ? 
 	%// 	 	 #uzz!}%	5::'>? 
  +Y-E-E F$y'' $B 	5?? 	 	 
  y    
   , ,       " "m&( m&` x( ) L&) *-_h -6
(?H (V 
 
 
 (eiiuyy0  
.I,, 
.     
  h "F+ , %v. /)-( )-r   