
    shC                     ,   S r SSKrSSKJr  SSKrSSKrSSKJr  SSK	J
r
  SSKJr  SSKJrJr  SSKJr   " S	 S
\5      r " S S\5      r " S S\\5      r " S S\5      r/ SQr/ SQr/ SQr/ SQr " S S\5      r\S:X  a  \R:                  " 5         gg)z1
Test helper functions from numba.numpy_support.
    N)product)types)NumbaNotImplementedError)TestCase)ShakeRequestError)numpy_supportc                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestFromDtype   c           	        ^ ^ [         R                  mUU 4S jnU" S[        R                  5        U" S[        R                  5        U" S[        R                  5        U" S[        R
                  5        U" S[        R
                  5        U" S[        R                  5        U" S[        R                  5        U" S	[        R                  5        U" S
[        R                  5        U" S[        R                  5        U" S[        R                  5        U" S[        R                  5        U" S[        R                  5        U" S[        R                  5        U" S[        R                  5        U" S[        R                  5        U" S[        R                  5        U" S[        R                  5        U" S[        R                  5        U" S[        R                  5        U" S[        R                  5        U" S[        R                  5        U" S[        R                  5        U" S[        R                   5        S H=  nT R#                  T" [$        R&                  " U5      5      [)        [        U5      5        M?     [*        R,                  S:X  a  SOSnS H0  nT R/                  [0        T[$        R&                  " X4-   5      5        M2     g) zH
Test from_dtype() and as_dtype() with the various scalar number types.
c                   > [         R                  " U 5      nTR                  T" U5      U5        TR                  T" [         R                  " SU -   5      5      U5        TR                  U[        R
                  " U5      5        g )N=)npdtypeassertIsassertEqualr	   as_dtype)typechar
numba_typer   fselfs      r/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_numpy_support.pycheck.TestFromDtype.test_number_types.<locals>.check   s^    HHX&EMM!E(J/MM!BHHS8^45zBUM$:$::$FG    ?r   f4df8Fc8Dc16Obi1Bu1hi2Hu2ii4Iu4qQ)
int8uint8int16uint16int32uint32int64uint64intpuintplittle><hHiIlLqQfdFDN)r	   
from_dtyper   bool_float32float64	complex64
complex128pyobjectr4   r5   r6   r7   r8   r9   r:   r;   r   r   r   getattrsys	byteorderassertRaisesr   )r   r   nameforeign_alignletterr   s   `    @r   test_number_typesTestFromDtype.test_number_types   s    $$	H 	c5;;c5==!dEMM"c5==!dEMM"c5??#dEOO$c5##$eU%%&c5>>"c5::dEJJc5;;dEKK c5;;dEKK c5<< dELL!c5;;dEKK c5<< dELL!c5;;c5<< 9DMM!BHHTN+WUD-AB9
  #}}8c$F6 hh}'=>@ %r   c                    ^  U 4S jnU" S[         R                  " S5      5        U" S[         R                  " S5      5        U" S[         R                  " S5      5        g)	zC
Test from_dtype() and as_dtype() with the character string types.
c                    > [         R                  " U 5      nTR                  [        R                  " U5      U5        TR                  U[        R
                  " U5      5        g N)r   r   r   r	   rB   r   )
typestringr   r   r   s      r   r   .TestFromDtype.test_string_types.<locals>.checkN   sG    HHZ(E]55e<jIUM$:$::$FGr   S10
   a11   U12   N)r   CharSeqUnicodeCharSeq)r   r   s   ` r   test_string_typesTestFromDtype.test_string_typesJ   sF    	H 	eU]]2&'eU]]2&'eU))"-.r   c                 Z   ^  U 4S jnU" [         R                  " U5      U" S5      S5        g )Nc                 $  > [         R                  " U 5      nTR                  X15        TR                  UR                  U5        TR                  [         R                  " U5      U 5        TR                  [         R                  " U5      U 5        g rT   )r	   rB   r   	unit_coder   )r   r   codetpr   s       r   r   1TestFromDtype.check_datetime_types.<locals>.checkY   sk    ))%0BR,R\\40]33J?G]33B7?r       )r   r   )r   rO   nb_classr   s   `   r   check_datetime_types"TestFromDtype.check_datetime_typesX   s$    	@ 	bhhvb1r   c                 D    U R                  S[        R                  5        g)z;
Test from_dtype() and as_dtype() with the datetime types.
MN)rj   r   
NPDatetimer   s    r   test_datetime_types!TestFromDtype.test_datetime_typesc   s     	!!#u'7'78r   c                 D    U R                  S[        R                  5        g)z<
Test from_dtype() and as_dtype() with the timedelta types.
mN)rj   r   NPTimedeltaro   s    r   test_timedelta_types"TestFromDtype.test_timedelta_typesi   s     	!!#u'8'89r   c                 l  ^  U 4S jn[         R                  " S[         R                  4S[         R                  4/5      nU" U[        R                  SS S 4[        R                  SS S 4S.SSS	9  [         R                  " S[         R                  4S[         R                  4/S
S9nU" U[        R                  SS S 4[        R                  SS S 4S.SS
S	9  [         R                  " S[         R                  4S/5      nU" U[        R                  SS S 4[        R
                  " S5      SS S 4S.SSS	9  g )Nc                 R  > [         R                  " U 5      nTR                  U[        R                  5        TR                  UR                  U 5        TR                  UR                  U5        TR                  UR                  U5        TR                  UR                  U5        g rT   )
r	   rB   assertIsInstancer   Recordr   r   fieldssizealigned)r   r{   r|   r}   re   r   s        r   r   .TestFromDtype.test_struct_types.<locals>.checkp   sw    ))%0B!!"ell3RXXu-RYY/RWWd+RZZ1r   ar&   r      )r   r&      F)r{   r|   r}   T)align      rs   )nS5   )rs   r   	   )r   r   r6   r8   r   r]   )r   r   r   s   `  r   test_struct_typesTestFromDtype.test_struct_typeso   s   	2 3/C?;<e!KKD$7!KKD$79e	%
 3/C?;4He!KKD$7!KKD$79d	$
 3/;78e!KKD$7!MM!,at<>e	%r   c                 R  ^  U 4S jn[         R                  [         R                  [         R                  [         R                  /n[
        [        /n[        X#5       H  u  pEU" XE[        R                  5        M     [        X#5       H  u  pEU" XE[        R                  5        M     g )Nc                    > [         R                  " U 5      n[        R                  " U5      nU" X5      n[        R                  " U5      nTR                  X65        g rT   )r   r   r	   rB   r   r   )	base_instenum_def
type_classnp_dtnb_tyinst	recoveredr   s          r   r   +TestFromDtype.test_enum_type.<locals>.check   sI    HHY'E!,,U3Eh.D%..t4IU.r   )r   rE   r8   rG   rC   r   r   r   r   
EnumMemberIntEnumMember)r   r   dtsenumsdtenums   `     r   test_enum_typeTestFromDtype.test_enum_type   sv    	/ zz288R]]BHH=%+HB"E,,- ,  +HB"E//0 ,r    N)__name__
__module____qualname____firstlineno__rP   r_   rj   rp   ru   r   r   __static_attributes__r   r   r   r   r      s'    3@j/	29:%81r   r   c                   0    \ rS rSrSrS rS rS rS rSr	g)	ValueTypingTestBase   zD
Common tests for the typing of values.  Also used by test_special.
c                    UnU R                  U" S5      [        R                  [        R                  45        U R                  U" S5      [        R                  [        R                  45        U R                  U" S5      [        R                  [        R                  45        U R	                  U" S5      [        R
                  5        U R	                  U" S5      [        R                  5        U R	                  U" S5      [        R                  5        U R	                  U" S5      [        R                  5        S H>  n[        [        U5      " 5       nU R	                  U" U5      [        [        U5      5        M@     g	)
z+
Test *func*() with scalar numeric values.
   ii   g      ?y              ?TF)r4   r5   r6   r7   r8   r9   r:   r;   intcuintcr<   r=   rD   rE   rF   rG   rC   N)
assertInr   r8   r:   r   rE   rG   rC   rI   r   )r   funcr   rM   vals        r   check_number_values'ValueTypingTestBase.check_number_values   s     adU[[%++67a	lU[[%++$>?ai%++u{{!;<afemm,agu//0agu{{+ah,D "d#%CMM!C&'%"67r   c                     UnS H;  nU(       a
  U" SU5      nOU" S5      nU" U5      nU R                  Xs" U5      5        M=     g )N)rg   Yrm   r#   r*   rs   smsusnspsfsas   Nat)r   )r   r   np_typenb_typer   unittre   s           r   _base_check_datetime_values/ValueTypingTestBase._base_check_datetime_values   sL    
D At$ EN1BR/
r   c                 b    U R                  U[        R                  [        R                  5        g)z*
Test *func*() with np.datetime64 values.
N)r   r   
datetime64r   rn   r   r   s     r   check_datetime_values)ValueTypingTestBase.check_datetime_values   s      	((r}}e>N>NOr   c                 b    U R                  U[        R                  [        R                  5        g)z+
Test *func*() with np.timedelta64 values.
N)r   r   timedelta64r   rt   r   s     r   check_timedelta_values*ValueTypingTestBase.check_timedelta_values   s#     	((r~~).):):	<r   r   N)
r   r   r   r   __doc__r   r   r   r   r   r   r   r   r   r      s    8*0P<r   r   c                   &    \ rS rSrS rS rS rSrg)TestArrayScalars   c                 B    U R                  [        R                  5        g)z8
Test map_arrayscalar_type() with scalar number values.
N)r   r	   map_arrayscalar_typero   s    r   test_number_values#TestArrayScalars.test_number_values   s     	  !C!CDr   c                     [         R                  nU R                  U5        [        R                  " SS5      nU R                  [        5         U" U5        SSS5        g! , (       d  f       g= f)z8
Test map_arrayscalar_type() with np.datetime64 values.
201410YN)r	   r   r   r   r   rL   r   r   r   r   s      r   test_datetime_values%TestArrayScalars.test_datetime_values   sO     ..""1%MM&%(78aD 988   	A  
A.c                     [         R                  nU R                  U5        [        R                  " SS5      nU R                  [        5         U" U5        SSS5        g! , (       d  f       g= f)z9
Test map_arrayscalar_type() with np.timedelta64 values.
rX   r   N)r	   r   r   r   r   rL   r   r   s      r   test_timedelta_values&TestArrayScalars.test_timedelta_values   sO     ..##A&NN2u%78aD 988r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r      s    E		r   r   c                   "    \ rS rSrSrSr S rSrg)	FakeUFunc   )ninnoutr   ntypesz
fake ufuncc                 n   Xl         U R                   S   R                  S5      u  p#[        U5      U l        [        U5      U l        [        U5      U l        U HY  nU R                   S   R                  S5      u  p#[        U5      U R                  :X  d   e[        U5      U R                  :X  a  MY   e   g )Nr   z->)r   splitlenr   r   r   )r   r   in_outre   s        r   __init__FakeUFunc.__init__   s    
::a=&&t,s8H	%jBzz!}**40HCs8txx'''s8tyy((( r   )r   r   r   r   N)r   r   r   r   	__slots__r   r   r   r   r   r   r      s    2IH	)r   r   )??->?bb->bBB->Bhh->hHH->Hii->iII->Ill->lLL->Lqq->qQQ->Qee->eff->fdd->dgg->gFF->FDD->DGG->GMm->Mmm->mmM->MOO->O)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   mq->mzqm->mmd->mdm->mr   )ze->?zf->?d->?zg->?zF->?zD->?zG->?)ze->ezf->fd->dzg->gzF->FzD->DzG->GzO->Oc                   $    \ rS rSrSrS rS rSrg)
TestUFuncsi  z
Test ufunc helpers.
c                   ^ ^	^
 [         R                  m
[        [        5      n[        [        5      n[        [
        5      n[        [        5      nSU
U 4S jjm	SU	U 4S jjnU
U 4S jnU" U[        R                  [        R                  4S5        U" U[        R                  [        R                  4S5        U" U[        R                  [        R                  4S5        U" U[        R                  [        R                  4S5        U" U[        R                  [        R                  4S5        U" U[        R                  [        R                  4S	5        U" U[        R                  [        R                  4S
5        U" U[        R                  [        R                  4S5        U" U[        R                   [        R                   4S5        U" U[        R"                  " S5      [        R"                  " S5      4S[        R"                  " S5      4S9  U" U[        R"                  " S5      [        R$                  " S5      4S[        R$                  " S5      4S9  U" U[        R$                  " S5      [        R"                  " S5      4S[        R$                  " S5      4S9  U" U[        R$                  " S5      [        R"                  " S5      4S[        R$                  " S5      4S9  U" U[        R$                  " S5      [        R"                  " S5      4S[        R$                  " S5      4S9  U" U[        R"                  " S5      [        R$                  " S5      4S[        R$                  " S5      4S9  U" U[        R"                  " S5      [        R$                  " S5      4S[        R$                  " S5      4S9  U" U[        R"                  " S5      [        R                  4S[        R"                  " S5      4S9  U" U[        R                  [        R"                  " S5      4S[        R"                  " S5      4S9  T	" U[        R                  [        R                  4S5        T	" U[        R                  [        R                  4S5        T	" U[        R&                  [        R(                  4S5        T	" U[        R                  [        R                  4S5        T	" U[        R                  [        R                  4S5        [        R*                  [        R,                  [        R                  [        R                  /nU Hk  nT	" U[        R                  U4S	5        T	" U[        R                  U4S
5        T	" U[        R                  U4S5        T	" U[        R                   U4S5        Mm     U H  nT	" XH4S5        T	" X84S5        M     T	" U[        R"                  " S5      [        R*                  4S[        R"                  " S5      4S9  T	" U[        R"                  " S5      [        R,                  4S[        R"                  " S5      4S9  T	" U[        R"                  " S5      [        R                  4S[        R"                  " S5      4S9  T	" U[        R                  [        R"                  " S5      4S[        R"                  " S5      4S9  U" U[        R$                  " S5      [        R$                  " S5      45        U" U[        R"                  " S5      [        R                  45        g )Nc                   > T" XU-   5      nTR                  U5        [        U[        5      (       a  U4nTR                  UR                  USU< SU< SU< SUR                  < 35        TR                  [        UR                  5      [        UR                  5      5        TR                  [        UR                  5      [        UR                  5      5        U(       d1  T" U [        U5      UR                  -   5      nTR                  XT5        O%TR                  UR                  [        U5      5        T" XR                  UR                  -   5      nTR                  Xd5        U$ )z}
Check that ufunc_find_matching_loop() finds one of the given
*sigs* for *ufunc*, *input_types* and optional *output_types*.
zinputs=z and outputs=z should have selected one of z, got )
assertTrue
isinstancestrr   	ufunc_sigr   r   numpy_inputsinputsnumpy_outputsoutputslist)	ufuncinput_typessigsoutput_typeslooploop_explicitloop_rtr   r   s	          r   r   7TestUFuncs.test_ufunc_find_matching_loop.<locals>.check   s   
 U,67DOOD!$$$wMM$..$ ),dnnNO S!2!23S5EFS!3!34c$,,6GH !%k):T\\)I J  5  tL/AB{{T\\9:GW+Kr   c                 b   > T" XX#5      nTR                  UR                  [        U5      5        g)z>
Like check(), but also ensure no casting of inputs occurred.
N)r   r  r  )r  r  r  r  r  r   r   s        r   check_exact=TestUFuncs.test_ufunc_find_matching_loop.<locals>.check_exact:  s*     T@DT[[${*;<r   c                 :   > T" X5      nTR                  US 5        g rT   )r   )r  r  r  r   r   s      r   check_no_match@TestUFuncs.test_ufunc_find_matching_loop.<locals>.check_no_matchA  s    U(DMM$%r   r   r   r   )r   r   )r   r   r   r   r   r   r   r   )r  r   r   r   rg   r   r   r  r   r  r  r   )r   )r	   ufunc_find_matching_loopr   
_add_types
_mul_types_isnan_types_sqrt_typesr   rC   r4   r5   r:   r;   rD   rE   rF   rG   rt   rn   r6   r7   r8   r9   )r   np_addnp_mulnp_isnannp_sqrtr  r  	int_typesinttyr   r   s   `        @@r   test_ufunc_find_matching_loop(TestUFuncs.test_ufunc_find_matching_loop  sw   22:&:&\*K(	 	4	= 	=	&
 	FU[[%++6@FUZZ4g>FU[[%++6@FU[[%++68JKFU\\5<<8:LMFU]]EMM:GDFU]]EMM:GDFU__eoo>HFU--u/?/?@'J 	FU..s3U5F5Fs5KL5+<+<S+A*C	EFU..t4e6F6Fs6KL5+;+;D+A*C	EFU--c2E4E4Ec4JK5+;+;C+@*B	DFU--c2E4E4Eb4IJ5+;+;C+@*B	DFU--d3U5F5Fr5JK5+;+;D+A*C	EFU..r2E4D4DS4IJ5+;+;C+@*B	DFU..r2E4D4DT4JK5+;+;D+A*C	EFU..s3U[[A5+<+<S+A*C	EFU]]E,=,=c,BC5+<+<S+A*C	E 	fu{{EJJ/9fu{{EKK0':fu{{ELL17;fu6@fu}}eoo6@ [[%,,U\\J	E&5==%0':&5==%0':&5??E2G<&5++U3W=	  E'8V,(Hf- 
 	fu((-u{{;U%6%6s%;$=	?fu((-u||<U%6%6s%;$=	?fu((-u}}=U%6%6s%;$=	?fu}}e&7&7&<=U%6%6s%;$=	? 	v 0 0 5u7G7G7LMN 	v 1 1# 6DEr   c           	      H  ^  U 4S jn[         R                  " S5      nU" U5        U" UR                  S5      5        U" UR                  S5      R                  5        U" UR                  S5      S S S2   5        U" UR                  S5      5        U" UR                  S5      R                  5        U" UR                  S5      S S 2S S S24   5        U" UR                  S5      R                  S S 2S S S24   5        U" UR                  S5      S S S2   5        U" UR                  S5      R                  S S 2S S 2S S S24   5        U" UR                  S5      S S S2S S S24   5        U" UR                  S5      R                  S S 2S S S2S S S24   5        U" UR                  S5      S S S2S S S2S S S24   5        U" UR                  S5      R                  S S S2S S S2S S S24   5        U" UR                  S5      S S S2S S S2S S S24   5        U" UR                  S5      R                  S S 2S S S2S S S2S S S24   5        U" UR                  S5      S S S	2S S S2S S S24   5        U" UR                  S5      R                  S S 2S S S2S S S2S S S	24   5        g )
Nc                 >  > U R                   nU R                  nU R                  R                  n[        R
                  " XU5      n[        R                  " XU5      nU R                  S   nU R                  S   nTR                  XF5        TR                  XW5        g )NC_CONTIGUOUSF_CONTIGUOUS)	shapestridesr   itemsizer	   is_contiguous
is_fortranflagsr   )	arrdimsr1  r2  is_cis_fexpect_cexpect_fr   s	           r   	check_arr1TestUFuncs.test_layout_checker.<locals>.check_arr  s    99DkkGyy))H ..thGD ++D8DDyy0Hyy0HT,T,r      )r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   arangereshapeT)r   r<  r6  s   `  r   test_layout_checkerTestUFuncs.test_layout_checker  s`   		- iim##++f%&#++f%''(#++f%cc*+#++i()#++i(**+#++i(CaC01#++i(**1cc623 	#++i(1-.#++i(**1a1956#++i(1cc23#++i(**1cc3Q3;78#++i(1cc3Q378#++i(**3Q3!SqS=9:#++l+CaC1ccM:;#++l+--a1cc3Q3.>?@#++l+CaC1ccM:;#++l+--a1cc3Q3.>?@r   r   N)r   r   r   r   r   r*  rB  r   r   r   r   r  r    s    nF`(Ar   r  __main__)r   rJ   	itertoolsr   numpyr   unittest
numba.corer   numba.core.errorsr   numba.tests.supportr   numba.tests.enum_usecasesr   r   numba.npr	   r   objectr   r   r   r   r!  r"  r#  r  r   mainr   r   r   <module>rO     s   
      6 ( 9 "H1H H1V4<& 4<n*H >) )"

 
 HN]A ]A@ zMMO r   