
    wg                     6   d dl Z d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 ej                   G d dej                               Z G d d	ej                        Zed
        Zed        Z ej$                  eeddg       e
 G d de j&                               Zy)    N)njit)types)	structref)skip_unless_scipyc                       e Zd Zd Zy)MyStructTypec                 &    t        d |D              S )Nc              3   P   K   | ]  \  }}|t        j                  |      f   y wN)r   	unliteral).0nametyps      r/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/numba/tests/doc_examples/test_structref_usage.py	<genexpr>z1MyStructType.preprocess_fields.<locals>.<genexpr>   s"     JidCdEOOC01Js   $&)tuple)selffieldss     r   preprocess_fieldszMyStructType.preprocess_fields   s     J6JJJ    N)__name__
__module____qualname__r    r   r   r   r      s    Kr   r   c                   2    e Zd Zd Zed        Zed        Zy)MyStructc                 D    t         j                  j                  | ||      S r   )r   StructRefProxy__new__)clsr   vectors      r   r   zMyStruct.__new__    s     ''//T6BBr   c                     t        |       S r   )MyStruct_get_namer   s    r   r   zMyStruct.name,   s    
 !&&r   c                     t        |       S r   )MyStruct_get_vectorr$   s    r   r!   zMyStruct.vector3   s     #4((r   N)r   r   r   r   propertyr   r!   r   r   r   r   r      s0    C ' ' ) )r   r   c                     | j                   S r   )r   r$   s    r   r#   r#   9   s     99r   c                     | j                   S r   r!   r$   s    r   r&   r&   @   s    ;;r   r   r!   c                       e Zd Zd Zd Zy)TestStructRefUsagec                    t         j                  j                  d       g fd}t        dt         j                  j                  d            }t        d        } |       } ||j
                   d|j                           ||j
                   d|j                          t        d        } | |||             | j                  t              d       y )	Nr   c                  (    j                  |        y r   )append)argsbufs    r   printz6TestStructRefUsage.test_type_definition.<locals>.printS   s    JJtr   Alice   r*   c                      t        dt        j                  d            } d| _        t        j                  j	                  d      | _        | S )Nunnamedr4   r*   Bob)r   npzerosr   randomr!   )bobs    r   make_bobz9TestStructRefUsage.test_type_definition.<locals>.make_bob]   s8    9RXXa[9CCH))!,CJJr   z: c                 n    t         j                  j                  | j                  |j                  z
        S r   r8   linalgnormr!   )abs     r   distancez9TestStructRefUsage.test_type_definition.<locals>.distancem   s"    99>>!((QXX"566r   )	r8   r:   seedr   r   r   r!   assertEquallen)r   r2   alicer<   r;   rC   r1   s         @r   test_type_definitionz'TestStructRefUsage.test_type_definitionN   s    
		q	 )9)9!)<= 
	 
	 j 	Bu||n-.
"SZZL)* 
	7 
	7 	huc"# 	S1%r   c                     ddl m} ddlm  |t        d      fd       }t
        d        }| j                   |       t               y )Nr   )overload_method)TypingErrorrC   c                 R    t        |t              s dt         d|       d }|S )Nz*other* must be a z; got c                 n    t         j                  j                  | j                  |j                  z
        S r   r>   )r   others     r   implzJTestStructRefUsage.test_overload_method.<locals>.ol_distance.<locals>.impl   s"    yy~~dkkELL&@AAr   )
isinstancer   )r   rN   rO   rK   s      r   ol_distancez<TestStructRefUsage.test_overload_method.<locals>.ol_distance   s9     e\2!(fUGD B Kr   c                      t        dt        j                  j                  d            } t        dt        j                  j                  d            }| j                  |      S )Nr3   r4   r*   r7   )r   r8   r:   rC   )rG   r;   s     r   testz5TestStructRefUsage.test_overload_method.<locals>.test   sG    WRYY-=-=a-@AE5)9)9!)<=C>>#&&r   )numba.core.extendingrJ   numba.core.errorsrK   r   r   assertIsInstancefloat)r   rJ   rQ   rS   rK   s       @r   test_overload_methodz'TestStructRefUsage.test_overload_methodw   sL    81
 
z	2
	 
3
	 
	' 
	' 	dfe,r   N)r   r   r   rH   rX   r   r   r   r,   r,   L   s    '&R-r   r,   )unittestnumpyr8   numbar   
numba.corer   numba.experimentalr   numba.tests.supportr   register	StructRefr   r   r   r#   r&   define_proxyTestCaser,   r   r   r   <module>rc      s        ( 1 K5?? K K)y'' )4     	  x/A B H-** H- H-r   