
    sh                         S SK Jr  S SK Jr  S SKJr  S SKr " S S\R                  5      r " S S\	5      r
 " S	 S
\	5      r " S S\\
5      r " S S\\5      rSS jrg)    )ir)binding)	datamodelNc                   .    \ rS rSrSr\rS rS rS r	Sr
g)DataModelTester   z=
Test the implementation of a DataModel for a frontend type.
c                 |    [         R                  " 5       U l        [        R                  U R
                     U l        g N)r   Modulemoduler   default_managerfe_type)selfs    p/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/core/datamodel/testing.pysetUpDataModelTester.setUp   s%    iik"224<<@    c                 0  ^
 [         R                  " [         R                  " 5       / 5      n[         R                  " U R                  USS9n[         R
                  " 5       nUR                  UR                  5       5        [         R                  " U R                  R                  5       S5      nU R                  R                  X45      nU R                  U[        S5        [        U[        [         45      (       aT  SU
4S jjm
[        T
" US S95      n[        T
" U R                  R#                  5       5      5      nU R%                  Xv5        O4U R%                  UR&                  U R                  R#                  5       5        U R                  R)                  X55      nU R%                  UR&                  U R                  R                  5       5        UR+                  5         [,        R.                  " [1        U R                  5      5      n	[1        U	5        g)	zQ
- Is as_arg() and from_arg() implemented?
- Are they the inverse of each other?
test_as_argnameNz(as_argument returned NotImplementedErrorc              3      >#    U  HD  n[        U[        [        45      (       a  [        T" X!S95      v   M1  Uc  Uv   M:  U" U5      v   MF     g 7f)Nfunc)
isinstancetuplelist)argsr   argrecur_tuplizes      r   r    2DataModelTester.test_as_arg.<locals>.recur_tuplize"   sD     C!#t}55#M#$ABB<"%I"&s)O  s   AAc                     U R                   $ r
   )type)xs    r   <lambda>-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   DataModelTester.test_as_arg   s   
 r{{}b1;;t{{D}E,,. ; ; =>kk$.."?"?"A4H~~))'?~ 0E 	F dUDM**, ]46FGHH]0024 5HX0TYY!^^==?A NN00?	)F)F)HI ((T[[)9:Lr   c                 P   [         R                  " [         R                  " 5       / 5      n[         R                  " U R                  USS9n[         R
                  " 5       nUR                  UR                  5       5        [         R                  " U R                  R                  5       S5      nU R                  R                  X45      nU R                  U[        S5        U R                  UR                  U R                  R!                  5       5        U R                  R#                  X55      nU R                  UR                  U R                  R                  5       5        UR%                  5         [&        R(                  " [+        U R                  5      5      n[+        U5        g)zW
- 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_returnr0   r1   r3   r#   get_return_typefrom_returnr5   r6   r7   r8   )r   r9   r:   r;   r<   retr?   r@   s           r   rC   DataModelTester.test_as_return=   s$   
 r{{}b1;;t{{D7GH,,. ; ; =>kk$.."?"?"A4Hnn&&w<n /D 	E 	4>>#A#A#CDNN..w<	)F)F)HI ((T[[)9:Lr   )r   r   N)__name__
__module____qualname____firstlineno____doc__r1   r   r   r   rC   __static_attributes__ r   r   r   r      s     GA)Vr   r   c                       \ rS rSrSrS rSrg)SupportAsDataMixinX   z#Test as_data() and from_data()
    c                 P   [         R                  " [         R                  " 5       / 5      n[         R                  " U R                  USS9n[         R
                  " 5       nUR                  UR                  5       5        [         R                  " U R                  R                  5       S 5      nU R                  R                  X45      nU R                  U[        S5        U R                  UR                  U R                  R!                  5       5        U R                  R#                  X55      nU R                  UR                  U R                  R                  5       5        UR%                  5         [&        R(                  " [+        U R                  5      5      n[+        U5        g )Ntest_as_datar   zas_data returned NotImplemented)r   r'   r(   r)   r   r*   r+   r,   r-   r   r.   as_datar0   r1   r3   r#   get_data_type	from_datar5   r6   r7   r8   )r   r9   r:   r;   r<   datar?   r@   s           r   rT   SupportAsDataMixin.test_as_data]   s"   r{{}b1;;t{{D~F,,. ; ; =>kk$.."?"?"A4H~~%%g;~:	< 	DNN$@$@$BCNN,,W;	668	: 	 ((T[[)9:Lr   rO   N)rI   rJ   rK   rL   rM   rT   rN   rO   r   r   rQ   rQ   X   s    r   rQ   c                       \ rS rSrSrS rSrg)NotSupportAsDataMixinu   z@Ensure as_data() and from_data() raise NotImplementedError.
    c                    [         R                  " [         R                  " 5       / 5      n[         R                  " U R                  USS9n[         R
                  " 5       nUR                  UR                  5       5        [         R                  " U R                  R                  5       S 5      nU R                  [        5         U R                  R                  X45      nS S S 5        U R                  [        5         U R                  R                  X45      nS S S 5        g ! , (       d  f       NH= f! , (       d  f       g = f)NrT   r   )r   r'   r(   r)   r   r*   r+   r,   r-   r   r.   assertRaisesNotImplementedErrorrU   rW   )r   r9   r:   r;   r<   rX   rev_datas          r   test_as_data_not_supported0NotSupportAsDataMixin.test_as_data_not_supportedy   s    r{{}b1;;t{{D~F,,. ; ; =>kk$.."?"?"A4H23>>))'?D 423~~//EH 43 4333s   D!<D2!
D/2
E rO   N)rI   rJ   rK   rL   rM   ra   rN   rO   r   r   r[   r[   u   s    
Fr   r[   c                       \ rS rSrSrg)"DataModelTester_SupportAsDataMixin   rO   NrI   rJ   rK   rL   rN   rO   r   r   rd   rd          r   rd   c                       \ rS rSrSrg)%DataModelTester_NotSupportAsDataMixin   rO   Nrf   rO   r   r   ri   ri      rg   r   ri   c                 (    U (       a  [         $ [        $ )z;A helper for returning a unittest TestCase for testing
    )rd   ri   )support_as_datas    r   test_factoryrm      s     1144r   )T)llvmliter   r   r6   
numba.corer   unittestTestCaser   objectrQ   r[   rd   ri   rm   rO   r   r   <module>rs      sc     "   Mh'' M` :FF F"	);	
	O,A	
5r   