
    sh                         S SK r S SKrS SKrS SKrS SKJrJr  S SKJ	r	  S SK
Jr  S SKJr  S rS rS rS	 r " S
 S\5      r\S:X  a  \R(                  " 5         gg)    N)jitnjit)types)TestCase)numpy_supportc                     U $ N xs    o/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_conversion.pyidentityr          H    c                 
    X-   $ r	   r
   r   ys     r   additionr      s	    5Lr   c                 
    X:H  $ r	   r
   r   s     r   equalityr      s	    6Mr   c                     U $ r	   r
   )r   r   zs      r   foobarr      r   r   c                   r    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rSrg)TestConversion   z%
Testing Python to Native conversion
c                 D   [         n[        [        R                  " [        R                  5      5      " U5      n/ SQnU H  nU R	                  U" U5      U5        M     [
        R                  " U5       H  nU R	                  U" U5      U5        M     [        [        R                  " [        R                  5      5      " U5      n/ SQnU H  nU R	                  U" U5      U5        M     [
        R                  " U5       H  nU R	                  U" U5      U5        M     g N)y              ?y      ?      ?y            y      ?        )r   r   r   	complex64assertEqualnp
complex128)selfpyfunccfuncxsr   s        r   test_complex_identity$TestConversion.test_complex_identity   s    U__U__56v>,AU1Xq) b!AU1Xq) " U%%e&6&678@,AU1Xq) r"AU1Xq) #r   c                    [         n[        [        R                  " [        R                  [        R                  5      5      " U5      n/ SQnU H  nUnU R	                  U" XE5      XE-   5        M!     [
        R                  " U5       H  nUnU R	                  U" XE5      XE-   5        M!     [        [        R                  " [        R                  [        R                  5      5      " U5      n/ SQnU H  nUnU R	                  U" XE5      XE-   5        M!     [
        R                  " U5       H  nUnU R	                  U" XE5      XE-   5        M!     g r   )r   r   r   r   r    r!   r"   )r#   r$   r%   r&   r   r   s         r   test_complex_addition$TestConversion.test_complex_addition1   s   U__U__eooFGO,AAU1[!%0  b!AAU1[!%0 "
 U%%e&6&6&+&6&68 99?A -AAU1[!%0  r"AAU1[!%0 #r   c                     [         n[        [        R                  [        R                  45      " U5      nSnSn[
        R                  " X45       H#  u  p4U R                  U" X45      U" X45      5        M%     g NTFr      )r   r   r   booleanintp	itertoolsproductr    r#   r$   r%   r&   yss        r   test_boolean_as_int"TestConversion.test_boolean_as_intI   s\    emmUZZ01&9''/FBVB^U2]; 0r   c                     [         n[        [        R                  [        R                  45      " U5      nSnSn[
        R                  " X45       H#  u  p4U R                  U" X45      U" X45      5        M%     g r-   )r   r   r   r2   float64r4   r5   r    r6   s        r   test_boolean_as_float$TestConversion.test_boolean_as_floatS   s\    emmU]]34V<''/FBVB^U2]; 0r   c                     [         n[        [        R                  [        R                  45      " U5      nSnSn[        R
                  " X45       H#  u  p4U R                  U" X45      U" X45      5        M%     g )Nr.   )r   r   r   r2   r4   r5   r    r6   s        r   test_boolean_eq_boolean&TestConversion.test_boolean_eq_boolean]   s\    emmU]]34V<''/FBVB^U2]; 0r   c                     S nU R                  [        5         [        SSS9" U5      " S5        S S S 5        g ! , (       d  f       g = f)Nc                     U $ r	   r
   r   s    r   f3TestConversion.test_negative_to_unsigned.<locals>.fm   s    Hr   zuintp(uintp)Tnopython)assertRaisesOverflowErrorr   r#   rC   s     r   test_negative_to_unsigned(TestConversion.test_negative_to_unsignedl   s5    	}-.q1"5 .--s	   9
Ac                 >   [         n[        [        R                  " [        R                  [        R                  [        R                  5      5      " U5      nSnU R	                  [
        5         U H  u  pEnU" XEU5        M     S S S 5        g ! , (       d  f       g = f)N)r/   )r   r0   r1   )r   r1   r0   )r   r   r   uint64rH   rI   )r#   r$   r%   test_fail_argsabcs          r   'test_multiple_args_negative_to_unsigned6TestConversion.test_multiple_args_negative_to_unsignedt   so    U\\%,,"',,0 228: >}-)aaA * .--s   /B
Bc                    [         n[        R                  " S[        R                  4S[        R                  4S[        R                  4/5      n[        R
                  " U5      n[        US S  " US S  [        R                  [        R                  5      5      " U5      n[        R                  " SUS9n[        R                  " UR                  5      S-   Ul        [        R                  " UR                  5      S-   Ul        [        R                  " UR                  5      S-   Ul        U R                  U5         USS4USS44nU H-  u  pxn	U R!                  ["        5         U" XxU	5        S S S 5        M/     AAAA	[$        R&                  " 5         S S S 5        g ! , (       d  f       Mb  = f! , (       d  f       g = f)Nprowcol   dtyper1   r0   )r   r!   r[   r;   r   
from_dtyper   r   rN   recarrayarangesizerV   rW   rX   assertRefCountrH   rI   gccollect)
r#   r$   mystruct_dtmystructr%   st1rO   rP   rQ   rR   s
             r   test_multiple_args_records)TestConversion.test_multiple_args_records   s[   hhbjj 1!2::.!2::. 0 1 !++K8Xa[!ell!&/ 1179 kk!;/		#((#a'))CHH%)))CHH%)  %"BlS!RL9N)a&&}5!N 65 * 1aJJL &% 65	 &%s$   ?(F1'
F1%F1
F.)F11
F?c                 ^    S nU R                  U" 5       [        SSS9" U5      " 5       5        g )Nc                      g r	   r
   r
   r   r   rC   1TestConversion.test_with_no_parameters.<locals>.f       r   z()TrE   )r    r   rJ   s     r   test_with_no_parameters&TestConversion.test_with_no_parameters   s(    	c$6q9;<r   c                   ^ S nU4S jmT" U5      n[        U[        R                  45      " U5      nU R                  " U6    U" US5        SSS5        U R                  " U6    U R	                  [
        5         U" US5        SSS5        SSS5        [        [        R                  U45      " U5      nU R                  " U6    U" SU5        SSS5        U R                  " U6    U R	                  [
        5         U" SU5        SSS5        SSS5        g! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N[= f! , (       d  f       g= f)z6
Check that argument cleanup doesn't leak references.
c                     g r	   r
   r   s     r   rC   0TestConversion.check_argument_cleanup.<locals>.f   rk   r   c                 `   > U /n[        U [        5      (       a  U  H  nUT" U5      -  nM     U$ r	   )
isinstancetuple)objobjsv_objectss      r   rw   7TestConversion.check_argument_cleanup.<locals>._objects   s4    5D#u%%AHQK'D Kr   r1   Nr0   )r   r   uint32r`   rH   rI   )r#   typrt   rC   objectsr%   rw   s         @r   check_argument_cleanup%TestConversion.check_argument_cleanup   s   		 3-c5<<()!,  '*#qM +  '*""=1c2 2 + ellC()!,  '*!SM +  '*""=1b# 2 +* +* 21 +*
 +* 21 +*s`   
D$D8:
D'D8
E	%E+;
EE+
D$'
D5	1D88
E	
E
E(	$E++
E9c                     [        [        S5      5      nU R                  [        R                  " [        R
                  SS5      U5        g N   xyzr1   C)
memoryview	bytearrayr|   r   
MemoryViewbyte)r#   mems     r   test_cleanup_buffer"TestConversion.test_cleanup_buffer   s4    6*+##E$4$4UZZC$H#Nr   c                     [         R                  " S[         R                  4S[         R                  4/5      n[         R                  " SUS9nU R	                  [
        R                  " U5      US   5        g )Nr   r   r1   rZ   r   )r!   r[   r;   zerosr|   r   r\   )r#   r[   recarrs      r   test_cleanup_record"TestConversion.test_cleanup_record   sV    3

+c2::->?@!5)##M$<$<U$CVAYOr   c                     [        [        S5      5      n[        R                  " [        R                  " [        R
                  SS5      S5      nU R                  X!U45        g )Nr   r1   r      )r   r   r   UniTupler   r   r|   r#   r   tps      r   test_cleanup_tuple!TestConversion.test_cleanup_tuple   sF    6*+^^E,,UZZC@!D##Bc
3r   c                     [        [        S5      5      n[        R                  " [        R                  " [        R
                  SS5      5      nU R                  X!5        g r   )r   r   r   Optionalr   r   r|   r   s      r   test_cleanup_optional$TestConversion.test_cleanup_optional   s@    6*+^^E,,UZZC@A##B,r   c                    ^ [        [        R                  " [        R                  5      SS9S 5       m[        [        R                  " 5       SS9U4S j5       ng )NTrE   c                     g r	   r
   )strings    r   bar9TestConversion.test_stringliteral_to_unicode.<locals>.bar   s    r   c                     > T " S5        g )Nzliteral stringr
   )r   s   r   foo2:TestConversion.test_stringliteral_to_unicode.<locals>.foo2   s     !r   )r   r   voidunicode_type)r#   r   r   s     @r   test_stringliteral_to_unicode,TestConversion.test_stringliteral_to_unicode   sN     
UZZ**+d	;	 
<	 
UZZ\D	)	" 
*	"r   r
   N)__name__
__module____qualname____firstlineno____doc__r'   r*   r8   r<   r?   rK   rS   rf   rl   r|   r   r   r   r   r   __static_attributes__r
   r   r   r   r      sT    *$10<<<68=
<OP
4
-

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