@@ -1066,6 +1066,28 @@ def test_eval_item(array_fixture):
1066
1066
np .testing .assert_allclose (res [()], nres [0 :10 :2 ])
1067
1067
1068
1068
1069
+ # Test lazyexpr's slice method
1070
+ def test_eval_slice (array_fixture ):
1071
+ a1 , a2 , a3 , a4 , na1 , na2 , na3 , na4 = array_fixture
1072
+ expr = blosc2 .lazyexpr ("a1 + a2 - (a3 * a4)" , operands = {"a1" : a1 , "a2" : a2 , "a3" : a3 , "a4" : a4 })
1073
+ nres = ne_evaluate ("na1 + na2 - (na3 * na4)" )[:2 ]
1074
+ res = expr .slice (slice (0 , 2 ))
1075
+ assert isinstance (res , blosc2 .ndarray .NDArray )
1076
+ np .testing .assert_allclose (res [:], nres )
1077
+ res = expr [:2 ]
1078
+ assert isinstance (res , np .ndarray )
1079
+ np .testing .assert_allclose (res , nres )
1080
+
1081
+ # string lazy expressions automatically use .slice internally
1082
+ expr1 = blosc2 .lazyexpr ("a1 * a2" , operands = {"a1" : a1 , "a2" : a2 })
1083
+ expr2 = blosc2 .lazyexpr ("expr1[:2] + a3[:2]" )
1084
+ nres = ne_evaluate ("(na1 * na2) + na3" )[:2 ]
1085
+ assert isinstance (expr2 , blosc2 .LazyExpr )
1086
+ res = expr2 .compute ()
1087
+ assert isinstance (res , blosc2 .ndarray .NDArray )
1088
+ np .testing .assert_allclose (res [()], nres )
1089
+
1090
+
1069
1091
# Test get_chunk method
1070
1092
@pytest .mark .heavy
1071
1093
def test_get_chunk (array_fixture ):
0 commit comments