
    xKg                         d dl Z d dlZd dlZd dlZd dlmZmZ d dlm	Z	 d dl
mZ d dlmZ d Zd Zd Zd	 Z G d
 de      Zedk(  r ej(                          yy)    N)jitnjit)types)TestCase)numpy_supportc                     | S N xs    _/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_conversion.pyidentityr          H    c                     | |z   S r	   r
   r   ys     r   additionr      s    q5Lr   c                     | |k(  S r	   r
   r   s     r   equalityr      s    6Mr   c                     | S r	   r
   )r   r   zs      r   foobarr      r   r   c                   j    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zy)TestConversionz-
    Testing Python to Native conversion
    c                 ,   t         } t        t        j                  t        j                              |      }g d}|D ]  }| j	                   ||      |        t        j                  |      D ]  }| j	                   ||      |         t        t        j                  t        j                              |      }g d}|D ]  }| j	                   ||      |        t        j                  |      D ]  }| j	                   ||      |        y N)y              ?y      ?      ?y            y      ?        )r   r   r   	complex64assertEqualnp
complex128)selfpyfunccfuncxsr   s        r   test_complex_identityz$TestConversion.test_complex_identity   s    6U__U__56v>,AU1Xq) b!AU1Xq) " 9U%%e&6&678@,AU1Xq) r"AU1Xq) #r   c                    t         } t        t        j                  t        j                  t        j                              |      }g d}|D ]   }|}| j	                   |||      ||z          " t        j                  |      D ]   }|}| j	                   |||      ||z          "  t        t        j                  t        j                  t        j                              |      }g d}|D ]   }|}| j	                   |||      ||z          " t        j                  |      D ]   }|}| j	                   |||      ||z          " y r   )r   r   r   r   r   r    r!   )r"   r#   r$   r%   r   r   s         r   test_complex_additionz$TestConversion.test_complex_addition1   s&   GU__U__eooFGO,AAU1a[!a%0  b!AAU1a[!a%0 "
9U%%e&6&6&+&6&68 99?A -AAU1a[!a%0  r"AAU1a[!a%0 #r   c                     t         } t        t        j                  t        j                  f      |      }d}d}t        j                  ||      D ]%  \  }}| j                   |||       |||             ' y NTFr      )r   r   r   booleanintp	itertoolsproductr   r"   r#   r$   r%   yss        r   test_boolean_as_intz"TestConversion.test_boolean_as_intI   sf    1emmUZZ01&9''B/FBVB^U2r]; 0r   c                     t         } t        t        j                  t        j                  f      |      }d}d}t        j                  ||      D ]%  \  }}| j                   |||       |||             ' y r*   )r   r   r   r/   float64r1   r2   r   r3   s        r   test_boolean_as_floatz$TestConversion.test_boolean_as_floatS   sf    4emmU]]34V<''B/FBVB^U2r]; 0r   c                     t         } t        t        j                  t        j                  f      |      }d}d}t	        j
                  ||      D ]%  \  }}| j                   |||       |||             ' y )Nr+   )r   r   r   r/   r1   r2   r   r3   s        r   test_boolean_eq_booleanz&TestConversion.test_boolean_eq_boolean]   sf    4emmU]]34V<''B/FBVB^U2r]; 0r   c                     d }| j                  t              5    t        dd      |      d       d d d        y # 1 sw Y   y xY w)Nc                     | S r	   r
   r   s    r   fz3TestConversion.test_negative_to_unsigned.<locals>.fm   s    Hr   zuintp(uintp)Tnopython)assertRaisesOverflowErrorr   r"   r=   s     r   test_negative_to_unsignedz(TestConversion.test_negative_to_unsignedl   s:    	}-1.C.q1"5 .--s	   <Ac                 4   t         } t        t        j                  t        j                  t        j                  t        j                              |      }d}| j	                  t
              5  |D ]  \  }}} ||||        	 d d d        y # 1 sw Y   y xY w)N)r,   )r   r-   r.   )r   r.   r-   )r   r   r   uint64rA   rB   )r"   r#   r$   test_fail_argsabcs          r   'test_multiple_args_negative_to_unsignedz6TestConversion.test_multiple_args_negative_to_unsignedt   sw    2U\\%,,"',,0 228: >}-)1aaA * .--s   .BBc                 f   t         }t        j                  dt        j                  fdt        j                  fdt        j                  fg      }t	        j
                  |      } t         |d d  |d d  t        j                  t        j                              |      }t        j                  d|      }t        j                  |j                        dz   |_        t        j                  |j                        dz   |_        t        j                  |j                        dz   |_        | j                  |      5  |ddf|ddff}|D ].  \  }}}	| j!                  t"              5   ||||	       d d d        0 ~~~~	t%        j&                          d d d        y # 1 sw Y   [xY w# 1 sw Y   y xY w)Nprowcol   dtyper.   r-   )r   r    rR   r7   r   
from_dtyper   r   rF   recarrayarangesizerM   rN   rO   assertRefCountrA   rB   gccollect)
r"   r#   mystruct_dtmystructr$   st1rG   rH   rI   rJ   s
             r   test_multiple_args_recordsz)TestConversion.test_multiple_args_records   se   hhbjj 1!2::.!2::. 0 1 !++K81[Xa[!ell!&/ 1179 kk!;/		#((#a'))CHH%)))CHH%)  %"BlS!RL9N)1a&&}5!QN 65 * 1aJJL &% 65	 &%s$   <)F'%F0"F'F$ F''F0c           	      d    d }| j                   |         t        dd      |                    y )Nc                       y r	   r
   r
   r   r   r=   z1TestConversion.test_with_no_parameters.<locals>.f       r   z()Tr>   )r   r   rC   s     r   test_with_no_parametersz&TestConversion.test_with_no_parameters   s.    	96c$6q9;<r   c                    d }fd |      } t        |t        j                  f      |      } | j                  | 5   ||d       ddd        | j                  | 5  | j	                  t
              5   ||d       ddd       ddd        t        t        j                  |f      |      } | j                  | 5   |d|       ddd        | j                  | 5  | j	                  t
              5   |d|       ddd       ddd       y# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   mxY w# 1 sw Y   BxY w# 1 sw Y   yxY w)zF
        Check that argument cleanup doesn't leak references.
        c                      y r	   r
   r   s     r   r=   z0TestConversion.check_argument_cleanup.<locals>.f   r`   r   c                 R    | g}t        | t              r| D ]  }| |      z  } |S r	   )
isinstancetuple)objobjsv_objectss      r   rj   z7TestConversion.check_argument_cleanup.<locals>._objects   s1    5D#u%AHQK'D Kr   r.   Nr-   )r   r   uint32rW   rA   rB   )r"   typrg   r=   objectsr$   rj   s         @r   check_argument_cleanupz%TestConversion.check_argument_cleanup   s%   		 3-)c5<<()!, T  '*#qM + T  '*""=1c2 2 + *ellC()!, T  '*!SM + T  '*""=1b# 2 +* +* 21 +*
 +* 21 +*s`   
D#D-9
D!D-
D9$E:
EED!D*	&D--D69EE	
EEc                     t        t        d            }| j                  t        j                  t        j
                  dd      |       y N   xyzr.   C)
memoryview	bytearrayrn   r   
MemoryViewbyte)r"   mems     r   test_cleanup_bufferz"TestConversion.test_cleanup_buffer   s4    6*+##E$4$4UZZC$H#Nr   c                     t        j                  dt         j                  fdt         j                  fg      }t        j                  d|      }| j	                  t        j                  |      |d          y )Nr   r   r.   rQ   r   )r    rR   r7   zerosrn   r   rS   )r"   rR   recarrs      r   test_cleanup_recordz"TestConversion.test_cleanup_record   sV    3

+c2::->?@!5)##M$<$<U$CVAYOr   c                     t        t        d            }t        j                  t        j                  t        j
                  dd      d      }| j                  |||f       y )Nrq   r.   rr      )rs   rt   r   UniTupleru   rv   rn   r"   rw   tps      r   test_cleanup_tuplez!TestConversion.test_cleanup_tuple   sH    6*+^^E,,UZZC@!D##Bc
3r   c                     t        t        d            }t        j                  t        j                  t        j
                  dd            }| j                  ||       y rp   )rs   rt   r   Optionalru   rv   rn   r   s      r   test_cleanup_optionalz$TestConversion.test_cleanup_optional   sB    6*+^^E,,UZZC@A##B,r   c                     t        t        j                  t        j                        d      d        t        t        j                         d      fd       }y )NTr>   c                      y r	   r
   )strings    r   barz9TestConversion.test_stringliteral_to_unicode.<locals>.bar   s    r   c                        d       y )Nzliteral stringr
   )r   s   r   foo2z:TestConversion.test_stringliteral_to_unicode.<locals>.foo2   s     !r   )r   r   voidunicode_type)r"   r   r   s     @r   test_stringliteral_to_unicodez,TestConversion.test_stringliteral_to_unicode   sN     
UZZ**+d	;	 
<	 
UZZ\D	)	" 
*	"r   N)__name__
__module____qualname____doc__r&   r(   r5   r8   r:   rD   rK   r]   ra   rn   rx   r|   r   r   r   r
   r   r   r   r      sT    *$10<<<68=
<OP
4
-

"r   r   __main__)rX   r1   numpyr    unittestnumbar   r   
numba.corer   numba.tests.supportr   numba.npr   r   r   r   r   r   r   mainr
   r   r   <module>r      sZ    	      ( "A"X A"H zHMMO r   