
    `i                     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dS )    N)njit)types)	structref)skip_unless_scipyc                       e Zd Zd ZdS )MyStructTypec                 4    t          d |D                       S )Nc              3   H   K   | ]\  }}|t          j        |          fV  d S N)r   	unliteral).0nametyps      /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/numba/tests/doc_examples/test_structref_usage.py	<genexpr>z1MyStructType.preprocess_fields.<locals>.<genexpr>   s5      JJidCdEOC001JJJJJJ    )tuple)selffieldss     r   preprocess_fieldszMyStructType.preprocess_fields   s!     JJ6JJJJJJr   N)__name__
__module____qualname__r    r   r   r   r      s(        K K K K Kr   r   c                   @    e Zd Zd Zed             Zed             ZdS )MyStructc                 D    t           j                            | ||          S r   )r   StructRefProxy__new__)clsr   vectors      r   r   zMyStruct.__new__    s     '//T6B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      s\        C C C ' ' X' ) ) X) ) )r   r   c                     | j         S r   )r   r$   s    r   r#   r#   9   s     9r   c                     | j         S r   r!   r$   s    r   r&   r&   @   s
    ;r   r   r!   c                       e Zd Zd Zd ZdS )TestStructRefUsagec                    t           j                            d           g fd}t          dt           j                            d                    }t          d             } |            } ||j         d|j                     ||j         d|j                    t          d             } | |||                     |                     t                    d           d S )	Nr   c                  2                         |            d S 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                            d          | _        | S )Nunnamedr4   r*   Bob)r   npzerosr   randomr!   )bobs    r   make_bobz9TestStructRefUsage.test_type_definition.<locals>.make_bob]   s?    9RXa[[999CCH))!,,CJJr   z: c                 Z    t           j                            | j        |j        z
            S r   r8   linalgnormr!   )abs     r   distancez9TestStructRefUsage.test_type_definition.<locals>.distancem   s    9>>!(QX"56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!)<)<=== 
	 	 
	 hjj 	--u|--...))SZ))*** 
	7 	7 
	7 	hhuc""### 	S1%%%%%r   c                     ddl m} ddlm  |t          d          fd            }t
          d             }|                      |            t                     d S )Nr   )overload_method)TypingErrorrC   c                 d    t          |t                    s dt           d|           d }|S )Nz*other* must be a z; got c                 Z    t           j                            | j        |j        z
            S r   r>   )r   others     r   implzJTestStructRefUsage.test_overload_method.<locals>.ol_distance.<locals>.impl   s    y~~dkEL&@AAAr   )
isinstancer   )r   rN   rO   rK   s      r   ol_distancez<TestStructRefUsage.test_overload_method.<locals>.ol_distance   sW     e\22 !kDDDUDD  B B B Kr   c                      t          dt          j                            d                    } t          dt          j                            d                    }|                     |          S )Nr3   r4   r*   r7   )r   r8   r:   rC   )rG   r;   s     r   testz5TestStructRefUsage.test_overload_method.<locals>.test   sX    WRY-=-=a-@-@A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   s    888888111111
 
z	2	2
	 
	 
	 
	 
3	2
	 
	' 	' 
	' 	ddffe,,,,,r   N)r   r   r   rH   rX   r   r   r   r,   r,   L   s3        '& '& '&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      sy                    ( ( ( ( ( ( 1 1 1 1 1 1 K K K K K5? K K K) ) ) ) )y' ) ) )4       	 x/A B B B H- H- H- H- H-* H- H- H- H- H-r   