1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
U
O±d?ã    @sHddlZddlmZddlZddlZddlmZmZm    Z    m
Z
m Z m Z ddl mZddlmZmZmZmZmZmZmZmZmZmZmZmZdd„Zd    d
„Zd d „Zd d„Z dd„Z!dd„Z"dd„Z#dd„Z$dd„Z%ej& 'ddddg¡ej& 'dddd g¡d!d"„ƒƒZ(d#d$„Z)ej& 'd%e*d&ƒe*d&dƒed ƒedd'gƒg¡d(d)„ƒZ+d*d+„Z,dS),éN)Ú assert_raisesé)ÚonesÚasarrayÚreshapeÚ result_typeÚallÚequal)ÚArray) Ú _all_dtypesÚ_boolean_dtypesÚ_floating_dtypesÚ_integer_dtypesÚ_integer_or_boolean_dtypesÚ_numeric_dtypesÚint8Úint16Úint32Úint64Úuint64ÚboolcsLtdƒ‰tt‡fdd„ƒtt‡fdd„ƒtt‡fdd„ƒtt‡fdd„ƒtt‡fdd„ƒtt‡fdd„ƒtt‡fd    d„ƒtt‡fd
d„ƒtt‡fd d„ƒtt‡fd d„ƒtt‡fd d„ƒtt‡fdd„ƒtt‡fdd„ƒtt‡fdd„ƒtt‡fdd„ƒtt‡fdd„ƒtt‡fdd„ƒtt‡fdd„ƒtt‡fdd„ƒtt‡fdd„ƒtt‡fdd„ƒtddggƒ‰tt‡‡fdd„ƒtt‡‡fdd„ƒtt‡fdd„ƒtt‡fdd„ƒtt‡fdd„ƒtt‡fdd„ƒtt‡fd d„ƒtt‡fd!d„ƒtt‡fd"d„ƒtt‡fd#d„ƒdS)$N©éécs ˆdd…S©Nr©r©Úarú^d:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\numpy/array_api/tests/test_array_object.pyÚ<lambda>)óz%test_validate_index.<locals>.<lambda>cs ˆdd…S©Néüÿÿÿrrrrrr*r csˆddd…S)Nréÿÿÿÿrrrrrr+r csˆddd…S)Néûÿÿÿr#rrrrrr,r cs ˆdd…Srrrrrrr-r cs ˆdd…Sr!rrrrrr.r csˆddd…S)Nrr#rrrrrr/r csˆddd…S)Nr"r#rrrrrr0r csˆddd…fS©N.érrrrrr2r csˆddd…fS©N.r$rrrrrr3r csˆdddd…fS©N.r&r#rrrrrr4r csˆdddd…fS)N.iúÿÿÿr#rrrrrr5r csˆddd…fSr%rrrrrr6r csˆddd…fSr'rrrrrr7r csˆdddd…fSr(rrrrrr8r csˆdddd…fS)N.r$r#rrrrrr9r csˆˆdd…dfdkdfS©Nrérrrrrr<r csˆˆdd…dfdkdfS)Nrr*.rrrrrr=r csˆdˆddkfS)N.rr*rrrrrr>r csˆdddgS)NTrrrrrr?r csˆdS)N))TTTrrrrrr@r rr*csˆˆS©Nrr©rÚidxrrrDr cs
ˆˆfSr+rrr,rrrEr cs ˆddgSr)rrrrrrFr csˆdS)N)©rr*r.rrrrrrGr cs ˆddgSr)rrrrrrHr csˆt ddgg¡Sr))ÚnpÚarrayrrrrrIr csˆdS)NrrrrrrrLr csˆdS)N©rrrrrrrMr csˆdS©NrrrrrrrNr cs ˆdd…Sr+rrrrrrOr )rrÚ
IndexErrorrrrr,rÚtest_validate_indexsB r4csBdddddddddddddddddddœ}dd„‰| ¡D]Ä\‰}ˆg}ˆd    kr~d
ˆd d…}d ˆd d…}|||g7}d D]z‰|D]n‰ˆƒD]ì‰|dks |dkrºˆjtks |dkrΈjtks |dkrâˆjtks |dkröˆjtks |dkrnˆjtkrnˆjtkr&tˆƒtks^ˆjtkr@tˆƒt    ks^ˆjtkrntˆƒt
t    fkrnt ˆˆƒˆƒq˜t t ‡‡‡fdd„ƒq˜|D]n‰ˆƒD]^‰ˆƒD]N‰ˆjtkrȈjttttfksxˆjtkrèˆjttttfksxˆjtkrˆjtksxˆjtkrˆjtksxˆjtkr0ˆjtksxˆjtkrHˆjtksxˆjtkr`ˆjtksxˆjtkr’ˆjtkr’t t ‡‡‡fdd„ƒq¢ˆ d ¡rÎtˆjˆjƒˆjkrÎt t ‡‡‡fdd„ƒq¢|dkrˆjtkrðˆjtksʈjtkrˆjtksÊ|dkr*ˆjtkr*ˆjtksÊ|dkrLˆjtkrLˆjtksÊ|dkr†ˆjtkrnˆjtksʈjtkr†ˆjtksÊ|dkr¨ˆjtkr¨ˆjtksÊ|dkrڈjtkrڈjtkrÚt ˆˆƒˆƒnt t ‡‡‡fdd„ƒq¢q–qŠqŒq‚q:dddddœ}| ¡D]f\‰}ˆƒD]T‰|dkr@ˆjtksV|dkrdˆjtkrdt ˆˆƒƒnt t ‡‡fdd„ƒq&q‡fdd„}dD]†‰d D]z‰|ƒD]l‰tˆƒt
t    fkrĈjtksÞtˆƒt    kröˆjtkröt t‡‡‡fdd„ƒnt t ‡‡‡fdd„ƒq¢q˜q|ƒD]‰|ƒD] ‰ˆjtkrPˆjttttfksèˆjtkrpˆjttttfksèˆjtkrˆˆjtksèˆjtkr ˆjtksèˆjtkr¸ˆjtksèˆjtkrЈjtksèˆjtksèˆjtkr(t t ‡‡fdd„ƒt t ‡‡fdd„ƒt t ‡‡fdd„ƒq*ˆjdksVˆjdksVˆjdˆjd krÀt t‡‡fd!d„ƒt t‡‡fd"d„ƒtˆjˆjƒˆjkrªt t ‡‡fd#d„ƒnt t‡‡fd$d„ƒnvˆ ˆ¡ˆ ˆ¡tˆjˆjƒˆjkrt t ‡‡fd%d„ƒn6ˆjd ˆjdkr,t t‡‡fd&d„ƒn
ˆ ˆ¡q*qdS)'NÚnumericZinteger_or_booleanrÚintegerZfloating)Ú__add__Ú__and__Ú__eq__Ú __floordiv__Ú__ge__Ú__gt__Ú__le__Ú
__lshift__Ú__lt__Ú__mod__Ú__mul__Ú__ne__Ú__or__Ú__pow__Ú
__rshift__Ú__sub__Ú __truediv__Ú__xor__cssLtD]}td|dVqtD]}td|dVqtD]}td|dVq4dS)Nr*©ÚdtypeFçð?)rrr r )ÚdrrrÚ _array_valsjs z#test_operators.<locals>._array_vals)r9rBr=r;r?r<Z__rrZ__i)r*rKFÚbooleancstˆˆƒˆƒSr+©Úgetattrr©Ú_oprÚsrrr•r z test_operators.<locals>.<lambda>cstˆˆƒˆƒSr+rOr©rRÚxÚyrrr§r cstˆˆƒˆƒSr+rOrrTrrr­r cstˆˆƒˆƒSr+rOrrTrrrºr )Ú__abs__Ú
__invert__Ú__neg__Ú__pos__cs tˆˆƒƒSr+rOr)rÚoprrrÍr c3sJˆƒD]
}|VqtD].}td|dVtd|dVtd|dVqdS)NrrI)rr)rr)r r)rrL)rMrrÚ_matmul_array_valsÑs 
z*test_operators.<locals>._matmul_array_vals)Ú
__matmul__Ú __rmatmul__Ú __imatmul__cstˆˆƒˆƒSr+rOrrQrrrár cstˆˆƒˆƒSr+rOrrQrrrãr cs
ˆ ˆ¡Sr+©r]r©rUrVrrrðr cs
ˆ ˆ¡Sr+©r^rrarrrñr cs
ˆ ˆ¡Sr+©r_rrarrròr rr*rcs
ˆ ˆ¡Sr+r`rrarrrôr cs
ˆ ˆ¡Sr+rbrrarrrõr cs
ˆ ˆ¡Sr+rcrrarrr÷r cs
ˆ ˆ¡Sr+rcrrarrrùr cs
ˆ ˆ¡Sr+rcrrarrrþr cs
ˆ ˆ¡Sr+rcrrarrrr )ÚitemsrJrrrr r ÚtyperÚintÚfloatrPrÚ    TypeErrorrrrrrÚ
startswithrÚ
ValueErrorÚshaper]r^r_)Zbinary_op_dtypesZdtypesÚopsZropZiopZunary_op_dtypesr\r)rMrRrr[rSrUrVrÚtest_operatorsQs¬î 
 
 
 
ÿÿþþýýüüûû    ÷    
÷
ö
 
ö õ õ
   ÿÿþþýýüüûûúúùù    ÿþ"ÿÿþþþýýýüüüûûúúúùùù    (ü
ÿþýü     
 
ÿÿ"   ÿÿþþýýüüûûúù    .
 
rmcs&tdƒ‰tdƒ‰tdƒ‰tˆƒdks(t‚tˆƒdks8t‚tˆƒdksHt‚t ˆ¡dksZt‚ttdd„ƒttdd„ƒttdd„ƒttdd„ƒtt    ‡fd    d„ƒtt    ‡fd
d„ƒtt    ‡fd d„ƒtt    ‡fd d„ƒtt    ‡fd d„ƒtt    ‡fdd„ƒtt‡fdd„ƒtt‡fdd„ƒdS)NFrçcSsttdgƒƒS)NF)rrrrrrrr z0test_python_scalar_construtors.<locals>.<lambda>cSsttdgƒƒSr2)rfrrrrrrr cSsttdgƒƒS)Nrn)rgrrrrrrr cSst tdgƒ¡Sr2)ÚoperatorÚindexrrrrrrr cstˆƒSr+©rr©Úirrrr cstˆƒSr+rqr©Úfrrrr cstˆƒSr+©rfr©Úbrrrr cstˆƒSr+rvrrtrrrr cstˆƒSr+©rgrrwrrrr cstˆƒSr+ryrrrrrrr cs
t ˆ¡Sr+©rorprrwrrr!r cs
t ˆ¡Sr+rzrrtrrr"r )
rrÚAssertionErrorrfrgrorprrhrjrr)rxrursrÚtest_python_scalar_construtorss&r|csptdƒ‰ˆjdkst‚ttˆ d¡ˆƒƒs.t‚tt‡fdd„ƒtttˆddˆƒƒsZt‚tt‡fdd„ƒdS)NrÚcpucs
ˆ d¡S)NÚgpu)Ú    to_devicerrrrr*r z&test_device_property.<locals>.<lambda>©Údevicecs tˆddS)Nr~r€)rrrrrr-r )    rrr{rr    rrrjrrrrrÚtest_device_property%s r‚cs†tdƒ‰tdƒ}tt‡fdd„ƒt|jtƒs2t‚|jjdksBt‚tˆjtƒsRt‚ˆjjdksbt‚t|jtƒsrt‚|jjdks‚t‚dS)N)r*rr©rrcsˆjSr+)ÚTrrrrr2r z'test_array_properties.<locals>.<lambda>)rr)r*rr)    rrrjÚ
isinstancer„r
r{rkZmTrwrrrÚtest_array_properties/sr†c    Csftdtd}t |¡|jks t‚tj|tjd}t t |tjdtjd¡¡sRt‚|j    tjksbt‚dS)NrƒrI)
rrr/rZ_arrayr{Úfloat64rr    rJ)rrxrrrÚtest___array__<s
 "rˆcCs*tdƒ}|ddd…f}|jdks&t‚dS)Nr&)r*r&)rrkr{)rZ    indexed_arrrÚtest_allow_newaxisCsr‰c    Cs*tdƒ}t t¡|dW5QRXdS)N©rrr)Nrr©rÚpytestÚraisesr3rrrrÚ(test_disallow_flat_indexing_with_newaxisHs rŽc    Cs2tdƒ}t t¡|dtdƒfW5QRXdS)NrŠT)rrŒrr3rrrrrÚtest_disallow_mask_with_newaxisMs rrkr)r&rŠrpÚstringFTc    Cs*t|ƒ}t t¡||W5QRXdSr+r‹)rkrprrrrÚtest_error_on_invalid_indexRs r‘cCstdƒ}|tdƒdS)NrT)rrrrrrÚ!test_mask_0d_array_without_errorsYsr’rsr&r*c    CsPtdƒ}t t¡|d|fW5QRXt t¡||dfW5QRXdS)NrŠ.r‹)rsrrrrÚ)test_error_on_invalid_index_with_ellipsis]s
  r“c    CsXtdtd}||jdkst‚tdtd}tdtd}t t¡||W5QRXdS)aq
    Indexing operations convert array keys before indexing the internal array
 
    Fails when array_api array keys are not converted into NumPy-proper arrays
    in __getitem__(). This is achieved by passing array_api arrays with 0-sized
    dimensions, which NumPy-proper treats erroneously - not sure why!
 
    TODO: Find and use appropriate __setitem__() case.
    )rrrIr1N)rÚbool_rkr{rŒrr3)rÚkeyrrrÚ!test_array_keys_use_private_arraygs
   r–)-roZ numpy.testingrÚnumpyr/rŒÚrrrrrr    Z _array_objectr
Z_dtypesr r r rrrrrrrrrr”r4rmr|r‚r†rˆr‰rŽrÚmarkZ parametrizer‘r’Úslicer“r–rrrrÚ<module>s4   886
   ÿ