
    sh                     6   S SK r S SKrS SKJr  S SKJr  S SKJr  S SK	J
r
  \R                   " S S\R                  5      5       r " S S	\R                  5      r\S
 5       r\S 5       r\R$                  " \\SS/5        \
 " S S\ R&                  5      5       rg)    N)njit)types)	structref)skip_unless_scipyc                       \ rS rSrS rSrg)MyStructType   c                 &    [        S U 5       5      $ )Nc              3   V   #    U  H  u  pU[         R                  " U5      4v   M!     g 7fN)r   	unliteral).0nametyps      ځ/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/doc_examples/test_structref_usage.py	<genexpr>1MyStructType.preprocess_fields.<locals>.<genexpr>   s      J6iddEOOC016s   '))tuple)selffieldss     r   preprocess_fieldsMyStructType.preprocess_fields   s     J6JJJ     N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r   r      s    Kr   r   c                   :    \ rS rSrS r\S 5       r\S 5       rSrg)MyStruct   c                 B    [         R                  R                  XU5      $ r   )r   StructRefProxy__new__)clsr   vectors      r   r%   MyStruct.__new__    s     ''//6BBr   c                     [        U 5      $ r   )MyStruct_get_namer   s    r   r   MyStruct.name,   s    
 !&&r   c                     [        U 5      $ r   )MyStruct_get_vectorr+   s    r   r'   MyStruct.vector3   s     #4((r   r   N)	r   r   r   r   r%   propertyr   r'   r   r   r   r   r!   r!      s0    C ' ' ) )r   r!   c                     U R                   $ r   )r   r+   s    r   r*   r*   9   s     99r   c                     U R                   $ r   r'   r+   s    r   r.   r.   @   s    ;;r   r   r'   c                        \ rS rSrS rS rSrg)TestStructRefUsageL   c                   ^ [         R                  R                  S5        / mU4S jn[        S[         R                  R                  S5      S9n[        S 5       nU" 5       nU" UR
                   SUR                   35        U" UR
                   SUR                   35        [        S 5       nU" U" X$5      5        U R                  [        T5      S5        g )	Nr   c                  (   > TR                  U 5        g r   )append)argsbufs    r   print6TestStructRefUsage.test_type_definition.<locals>.printS   s    JJtr   Alice   r3   c                      [        S[        R                  " S5      S9n SU l        [        R                  R	                  S5      U l        U $ )Nunnamedr?   r3   Bob)r!   npzerosr   randomr'   )bobs    r   make_bob9TestStructRefUsage.test_type_definition.<locals>.make_bob]   s8    9RXXa[9CCH))!,CJJr   z: c                 n    [         R                  R                  U R                  UR                  -
  5      $ r   rC   linalgnormr'   )abs     r   distance9TestStructRefUsage.test_type_definition.<locals>.distancem   s"    99>>!((QXX"566r   )	rC   rE   seedr!   r   r   r'   assertEquallen)r   r<   alicerG   rF   rO   r;   s         @r   test_type_definition'TestStructRefUsage.test_type_definitionN   s    
		q	 )9)9!)<= 
	 
	 j 	Bu||n-.
"SZZL)* 
	7 
	7 	hu"# 	S1%r   c                    ^ SSK Jn  SSKJm  U" [        S5      U4S j5       n[
        S 5       nU R                  U" 5       [        5        g )Nr   )overload_method)TypingErrorrO   c                 \   > [        U[        5      (       d  T" S[         SU 35      eS nU$ )Nz*other* must be a z; got c                 n    [         R                  R                  U R                  UR                  -
  5      $ r   rJ   )r   others     r   implJTestStructRefUsage.test_overload_method.<locals>.ol_distance.<locals>.impl   s"    yy~~dkkELL&@AAr   )
isinstancer   )r   r\   r]   rY   s      r   ol_distance<TestStructRefUsage.test_overload_method.<locals>.ol_distance   s<     e\22!(fUGD B Kr   c                      [        S[        R                  R                  S5      S9n [        S[        R                  R                  S5      S9nU R                  U5      $ )Nr>   r?   r3   rB   )r!   rC   rE   rO   )rT   rF   s     r   test5TestStructRefUsage.test_overload_method.<locals>.test   sG    WRYY-=-=a-@AE5)9)9!)<=C>>#&&r   )numba.core.extendingrX   numba.core.errorsrY   r   r   assertIsInstancefloat)r   rX   r`   rc   rY   s       @r   test_overload_method'TestStructRefUsage.test_overload_methodw   sL    81
 
z	2
	 
3
	 
	' 
	' 	dfe,r   r   N)r   r   r   r   rU   ri   r   r   r   r   r5   r5   L   s    '&R-r   r5   )unittestnumpyrC   numbar   
numba.corer   numba.experimentalr   numba.tests.supportr   register	StructRefr   r$   r!   r*   r.   define_proxyTestCaser5   r   r   r   <module>ru      s        ( 1 K5?? K K)y'' )4     
  x/A B H-** H- H-r   