
    ܙd~                         d dl Z d dlZ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 dlmZ d Zd Zd	 Zd
 Z G d de          Zedk    r ej                     dS dS )    N)compile_isolatedFlags)jit)types)TestCase)numpy_supportc                     | S N xs    ;lib/python3.11/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                   l    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dS )TestConversionz-
    Testing Python to Native conversion
    c                 x   t           }t          |t          j        gt          j                  }g d}|D ]+}|                     |                    |          |           ,t          j        |          D ]+}|                     |                    |          |           ,t          |t          j        gt          j                  }g d}|D ]+}|                     |                    |          |           ,t          j        |          D ]+}|                     |                    |          |           ,d S Nreturn_type)y              ?y      ?      ?y            y      ?        )r   r   r   	complex64assertEqualentry_pointnp
complex128)selfpyfunccresxsr   s        r   test_complex_identityz$TestConversion.test_complex_identity"   s]   (9,1O= = = -,, 	5 	5AT--a00!4444b!! 	5 	5AT--a00!4444)9(:,1,<> > > -,, 	5 	5AT--a00!4444r"" 	5 	5AT--a00!4444	5 	5r   c                    t           }t          |t          j        t          j        gt          j                  }g d}|D ]1}|}|                     |                    ||          ||z              2t          j        |          D ]1}|}|                     |                    ||          ||z              2t          |t          j        t          j        gt          j                  }g d}|D ]1}|}|                     |                    ||          ||z              2t          j        |          D ]1}|}|                     |                    ||          ||z              2d S r   )r   r   r   r!   r"   r#   r$   r%   )r&   r'   r(   r)   r   r   s         r   test_complex_additionz$TestConversion.test_complex_addition6   s   %/(J,1O= = = -,, 	< 	<AAT--a33QU;;;;b!! 	< 	<AAT--a33QU;;;;  )95;K(L,1,<> > > -,, 	< 	<AAT--a33QU;;;;r"" 	< 	<AAT--a33QU;;;;	< 	<r   c                     t           }t          |t          j        t          j        g          }|j        }d}d}t          j        ||          D ]/\  }}|                      |||           |||                     0d S NTFr      )	r   r   r   booleanintpr#   	itertoolsproductr"   r&   r'   r(   cfuncr)   yss         r   test_boolean_as_intz"TestConversion.test_boolean_as_intO   s    
(CDD 'B// 	< 	<FBVVB^^UU2r]];;;;	< 	<r   c                     t           }t          |t          j        t          j        g          }|j        }d}d}t          j        ||          D ]/\  }}|                      |||           |||                     0d S r.   )	r   r   r   r3   float64r#   r5   r6   r"   r7   s         r   test_boolean_as_floatz$TestConversion.test_boolean_as_floatZ   s    (FGG 'B// 	< 	<FBVVB^^UU2r]];;;;	< 	<r   c                     t           }t          |t          j        t          j        g          }|j        }d}d}t          j        ||          D ]/\  }}|                      |||           |||                     0d S )Nr/   )r   r   r   r3   r#   r5   r6   r"   r7   s         r   test_boolean_eq_booleanz&TestConversion.test_boolean_eq_booleane   s    (FGG 'B// 	< 	<FBVVB^^UU2r]];;;;	< 	<r   c                     d }|                      t                    5    t          dd          |          d           d d d            d S # 1 swxY w Y   d S )Nc                     | S r
   r   r   s    r   fz3TestConversion.test_negative_to_unsigned.<locals>.fv   s    Hr   zuintp(uintp)Tnopython)assertRaisesOverflowErrorr   r&   rB   s     r   test_negative_to_unsignedz(TestConversion.test_negative_to_unsignedu   s    	 	 	}-- 	6 	61.C...q11"555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   $AAAc                 4   t           }t          |t          j        t          j        t          j        gt          j                  }|j        }d}|                     t                    5  |D ]\  }}} ||||           	 d d d            d S # 1 swxY w Y   d S )Nr   )r0   )r   r1   r2   )r   r2   r1   )r   r   r   uint64r#   rF   rG   )r&   r'   r(   r8   test_fail_argsabcs           r   'test_multiple_args_negative_to_unsignedz6TestConversion.test_multiple_args_negative_to_unsigned}   s    u|U\(R,1L: : : =}-- 	 	)  1aaA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   (BBBc                 R   t           }t          j        dt          j        fdt          j        fdt          j        fg          }t	          j        |          }t          ||d d          t          j        t          j        g|d d                    }|j	        }t          j
        d|          }t          j        |j                  dz   |_        t          j        |j                  dz   |_        t          j        |j                  dz   |_        |                     |          5  |ddf|ddff}|D ]E\  }}	}
|                     t$                    5   |||	|
           d d d            n# 1 swxY w Y   F~~~	~
t'          j                     d d d            d S # 1 swxY w Y   d S )	Nprowcolr      dtyper2   r1   )r   r$   rW   r<   r   
from_dtyper   r   rK   r#   recarrayarangesizerR   rS   rT   assertRefCountrF   rG   gccollect)r&   r'   mystruct_dtmystructr(   r8   st1rL   rM   rN   rO   s              r   test_multiple_args_recordsz)TestConversion.test_multiple_args_records   s   hbj 1!2:.!2:. 0 1 1 !+K88!!!elEL(Q,4QQQK9 9 9 k!;///	#(##a')CH%%))CH%%)  %% 	 	"BlS!RL9N) # #1a&&}55 # #E!QNNN# # # # # # # # # # # # # # # 1aJLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   %-FE, F,E00F3E04FF #F c           	          d }|                       |              t          dd          |                                 d S )Nc                      d S r
   r   r   r   r   rB   z1TestConversion.test_with_no_parameters.<locals>.f       Dr   z()TrC   )r"   r   rH   s     r   test_with_no_parametersz&TestConversion.test_with_no_parameters   sT    	 	 	96c$666q99;;<<<<<r   c                 (   d }fd |          }t          ||t          j        f          } | j        | 5  |                    |d           ddd           n# 1 swxY w Y    | j        | 5  |                     t                    5  |                    |d           ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   t          |t          j        |f          } | j        | 5  |                    d|           ddd           n# 1 swxY w Y    | j        | 5  |                     t                    5  |                    d|           ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )zF
        Check that argument cleanup doesn't leak references.
        c                     d S r
   r   r   s     r   rB   z0TestConversion.check_argument_cleanup.<locals>.f   re   r   c                 ^    | g}t          | t                    r| D ]}| |          z  }|S r
   )
isinstancetuple)objobjsv_objectss      r   ro   z7TestConversion.check_argument_cleanup.<locals>._objects   sD    5D#u%% ( ( (AHHQKK'DDKr   r2   Nr1   )r   r   uint32r\   r#   rF   rG   )r&   typrl   rB   objectsr(   ro   s         @r   check_argument_cleanupz%TestConversion.check_argument_cleanup   s5   	 	 		 	 	 	 	 (3--C#677 T '* 	% 	%S!$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% T '* 	* 	*""=11 * *  b)))* * * * * * * * * * * * * * *	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*  EL##677 T '* 	% 	%Q$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% T '* 	* 	*""=11 * *  S)))* * * * * * * * * * * * * * *	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   AA"%A"3CB1%C1B5	5C8B5	9CCC9DD #D 1FE/#F/E3	3F6E3	7FFFc                     t          t          d                    }|                     t          j        t          j        dd          |           d S N   xyzr2   C)
memoryview	bytearrayrs   r   Bufferintc)r&   mems     r   test_cleanup_bufferz"TestConversion.test_cleanup_buffer   sC    6**++##ELQ$D$DcJJJJJr   c                     t          j        dt           j        fdt           j        fg          }t          j        d|          }|                     t          j        |          |d                    d S )Nr   r   r2   rV   r   )r$   rW   r<   zerosrs   r   rX   )r&   rW   recarrs      r   test_cleanup_recordz"TestConversion.test_cleanup_record   sc    3
+c2:->?@@!5)))##M$<U$C$CVAYOOOOOr   c                     t          t          d                    }t          j        t          j        t          j        dd          d          }|                     |||f           d S )Nrv   r2   rw      )rx   ry   r   UniTuplerz   r{   rs   r&   r|   tps      r   test_cleanup_tuplez!TestConversion.test_cleanup_tuple   sX    6**++^ELQ<<a@@##Bc
33333r   c                     t          t          d                    }t          j        t          j        t          j        dd                    }|                     ||           d S ru   )rx   ry   r   Optionalrz   r{   rs   r   s      r   test_cleanup_optionalz$TestConversion.test_cleanup_optional   sR    6**++^ELQ<<==##B,,,,,r   c                     t          t          j        t          j                  d          d             t          t          j                    d          fd            }d S )NTrC   c                     d S r
   r   )strings    r   barz9TestConversion.test_stringliteral_to_unicode.<locals>.bar   s    Dr   c                        d           d S )Nzliteral stringr   )r   s   r   foo2z:TestConversion.test_stringliteral_to_unicode.<locals>.foo2   s    C !!!!!r   )r   r   voidunicode_type)r&   r   r   s     @r   test_stringliteral_to_unicodez,TestConversion.test_stringliteral_to_unicode   s|     
UZ*++d	;	;	;	 	 
<	;	 
UZ\\D	)	)	)	" 	" 	" 	" 
*	)	" 	" 	"r   N)__name__
__module____qualname____doc__r*   r,   r:   r=   r?   rI   rP   rb   rf   rs   r}   r   r   r   r   r   r   r   r   r      s        5 5 5(< < <2	< 	< 	<	< 	< 	<	< 	< 	< 6 6 6    := = =
* * *<K K KP P P
4 4 4
- - -

" 
" 
" 
" 
"r   r   __main__)arrayr]   r5   sysnumpyr$   unittestnumba.core.compilerr   r   numbar   
numba.corer   numba.tests.supportr   numba.npr   r   r   r   r   r   r   mainr   r   r   <module>r      s6    				     



      7 7 7 7 7 7 7 7             ( ( ( ( ( ( " " " " " "        H" H" H" H" H"X H" H" H"V zHMOOOOO r   