
    `i                         d dl mZ d dl mZ d dlmZ d dlZ G d dej                  Z G d de	          Z
 G d	 d
e	          Z G d dee
          Z G d dee          ZddZdS )    )ir)binding)	datamodelNc                   (    e Zd ZdZeZd Zd Zd ZdS )DataModelTesterzE
    Test the implementation of a DataModel for a frontend type.
    c                 n    t          j                    | _        t          j        | j                 | _        d S N)r   Modulemoduler   default_managerfe_type)selfs    p/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/numba/core/datamodel/testing.pysetUpzDataModelTester.setUp   s$    ikk"24<@    c                 \  
 t          j        t          j                    g           }t          j        | j        |d          }t          j                    }|                    |                                           t          j        | j	        
                                d          }| j	                            ||          }|                     |t          d           t          |t          t           f          rgd
fd	
t           
|d                     }t           
| j	                                                            }|                     ||           n2|                     |j        | j	                                                   | j	                            ||          }|                     |j        | j	        
                                           |                                 t-          j        t1          | j                            }	t1          |	           dS )	zi
        - Is as_arg() and from_arg() implemented?
        - Are they the inverse of each other?
        test_as_argnameNz(as_argument returned NotImplementedErrorc              3      K   | D ]O}t          |t          t          f          rt           ||                    V  ;||V  B ||          V  Pd S )Nfunc)
isinstancetuplelist)argsr   argrecur_tuplizes      r   r   z2DataModelTester.test_as_arg.<locals>.recur_tuplize"   s       , ,C!#t}55 ,#MM#D$A$A$ABBBBBB<"%IIII"&$s))OOOO, ,r   c                     | j         S r	   )type)xs    r   <lambda>z-DataModelTester.test_as_arg.<locals>.<lambda>,   s     r   r   r	   )r   FunctionTypeVoidTypeFunctionr   	IRBuilderposition_at_endappend_basic_blockConstantr   get_value_typeas_argumentassertIsNotNotImplementedr   r   r   get_argument_typeassertEqualr    from_argumentret_voidllparse_assemblystr)r   fntyfunctionbuilderundef_valuer   argtypesexptypes	rev_valuematerializedr   s             @r   r   zDataModelTester.test_as_arg   s   
 r{}}b11;t{D}EEE,.. ; ; = =>>>k$."?"?"A"A4HH~))';??~ 0E 	F 	F 	F dUDM** 	A, , , , , , ]]46F6FGGGHHH]]00224 4 5 5HXx0000TY!^==??A A A N00$??	)F)F)H)HIII (T[)9)9::Lr   c                 T   t          j        t          j                    g           }t          j        | j        |d          }t          j                    }|                    |                                           t          j        | j	        
                                d          }| j	                            ||          }|                     |t          d           |                     |j        | j	                                                   | j	                            ||          }|                     |j        | j	        
                                           |                                 t'          j        t+          | j                            }t+          |           dS )zo
        - Is as_return() and from_return() implemented?
        - Are they the inverse of each other?
        test_as_returnr   Nz&as_return returned NotImplementedError)r   r#   r$   r%   r   r&   r'   r(   r)   r   r*   	as_returnr,   r-   r/   r    get_return_typefrom_returnr1   r2   r3   r4   )r   r5   r6   r7   r8   retr;   r<   s           r   r>   zDataModelTester.test_as_return=   sa   
 r{}}b11;t{D7GHHH,.. ; ; = =>>>k$."?"?"A"A4HHn&&w<<n /D 	E 	E 	E 	4>#A#A#C#CDDDN..w<<	)F)F)H)HIII (T[)9)9::Lr   N)	__name__
__module____qualname____doc__r-   r   r   r   r>    r   r   r   r      sV          GA A A) ) )V    r   r   c                       e Zd ZdZd ZdS )SupportAsDataMixinz#Test as_data() and from_data()
    c                 T   t          j        t          j                    g           }t          j        | j        |d          }t          j                    }|                    |                                           t          j        | j	        
                                d           }| j	                            ||          }|                     |t          d           |                     |j        | j	                                                   | j	                            ||          }|                     |j        | j	        
                                           |                                 t'          j        t+          | j                            }t+          |           d S )Ntest_as_datar   zas_data returned NotImplemented)r   r#   r$   r%   r   r&   r'   r(   r)   r   r*   as_datar,   r-   r/   r    get_data_type	from_datar1   r2   r3   r4   )r   r5   r6   r7   r8   datar;   r<   s           r   rK   zSupportAsDataMixin.test_as_data]   sa   r{}}b11;t{D~FFF,.. ; ; = =>>>k$."?"?"A"A4HH~%%g{;;~:	< 	< 	< 	DN$@$@$B$BCCCN,,Wd;;	6688	: 	: 	: 	 (T[)9)9::Lr   N)rC   rD   rE   rF   rK   rG   r   r   rI   rI   X   s-             r   rI   c                       e Zd ZdZd ZdS )NotSupportAsDataMixinz@Ensure as_data() and from_data() raise NotImplementedError.
    c                    t          j        t          j                    g           }t          j        | j        |d          }t          j                    }|                    |                                           t          j        | j	        
                                d           }|                     t                    5  | j	                            ||          }d d d            n# 1 swxY w Y   |                     t                    5  | j	                            ||          }d d d            d S # 1 swxY w Y   d S )NrK   r   )r   r#   r$   r%   r   r&   r'   r(   r)   r   r*   assertRaisesNotImplementedErrorrL   rN   )r   r5   r6   r7   r8   rO   rev_datas          r   test_as_data_not_supportedz0NotSupportAsDataMixin.test_as_data_not_supportedy   s   r{}}b11;t{D~FFF,.. ; ; = =>>>k$."?"?"A"A4HH233 	@ 	@>))';??D	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@233 	F 	F~//EEH	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs$   C++C/2C/D99D= D=N)rC   rD   rE   rF   rV   rG   r   r   rQ   rQ   u   s2         
F 
F 
F 
F 
Fr   rQ   c                       e Zd ZdS )"DataModelTester_SupportAsDataMixinNrC   rD   rE   rG   r   r   rX   rX              Dr   rX   c                       e Zd ZdS )%DataModelTester_NotSupportAsDataMixinNrY   rG   r   r   r\   r\      rZ   r   r\   Tc                 "    | rt           S t          S )z;A helper for returning a unittest TestCase for testing
    )rX   r\   )support_as_datas    r   test_factoryr_      s      51144r   )T)llvmliter   r   r2   
numba.corer   unittestTestCaser   objectrI   rQ   rX   r\   r_   rG   r   r   <module>re      sN         " " " " " "             M M M M Mh' M M M`       :F F F F FF F F F"	 	 	 	 	);	 	 	
	 	 	 	 	O,A	 	 	
5 5 5 5 5 5r   