Skip to content

Commit ac23179

Browse files
agoose77jpivarski
andauthored
refactor: use public typetracer API (#894)
* refactor: use public typetracer API * refactor: use newer API * chore: bump dask-awkward version * refactor: use `ak.almost_equal` instead of dask-awkward's testutils --------- Co-authored-by: Jim Pivarski <[email protected]>
1 parent 39dff81 commit ac23179

6 files changed

+26
-27
lines changed

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ dynamic = [
5050
[project.optional-dependencies]
5151
dev = [
5252
"boost_histogram>=0.13",
53-
"dask-awkward>=2022.12a3;python_version >= \"3.8\"",
53+
"dask-awkward>=2023.9.0;python_version >= \"3.8\"",
5454
"dask[array];python_version >= \"3.8\"",
5555
"hist>=1.2",
5656
"pandas",

src/uproot/_dask.py

+6-10
Original file line numberDiff line numberDiff line change
@@ -806,11 +806,9 @@ def project_columns(self, common_keys=None, original_form=None):
806806
if self.form_mapping is not None:
807807
awkward = uproot.extras.awkward()
808808

809-
(
810-
new_meta_labelled,
811-
report,
812-
) = awkward._nplikes.typetracer.typetracer_with_report(self.rendered_form)
813-
tt = awkward.Array(new_meta_labelled)
809+
tt, report = awkward.typetracer.typetracer_with_report(
810+
self.rendered_form, highlevel=True
811+
)
814812

815813
if common_keys is not None:
816814
for key in common_keys:
@@ -950,11 +948,9 @@ def project_columns(self, columns=None, original_form=None):
950948
if self.form_mapping is not None:
951949
awkward = uproot.extras.awkward()
952950

953-
(
954-
new_meta_labelled,
955-
report,
956-
) = awkward._nplikes.typetracer.typetracer_with_report(self.rendered_form)
957-
tt = awkward.Array(new_meta_labelled)
951+
tt, report = awkward.typetracer.typetracer_with_report(
952+
self.rendered_form, highlevel=True
953+
)
958954

959955
if columns is not None:
960956
for key in columns:

src/uproot/extras.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -325,8 +325,14 @@ def dask_awkward():
325325
or
326326
conda install -c conda-forge dask dask-awkward"""
327327
) from err
328-
else:
328+
if parse_version("2023.9.0") <= parse_version(dask_awkward.__version__):
329329
return dask_awkward
330+
else:
331+
raise ModuleNotFoundError(
332+
"Uproot 5.x can only be used with dask-awkward 2023.9.0 or newer; you have dask-awkward {}".format(
333+
dask_awkward.__version__
334+
)
335+
)
330336

331337

332338
def awkward_pandas():

tests/test_0700-dask-empty-arrays.py

+3-6
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,12 @@
33
import numpy
44
import pytest
55
import skhep_testdata
6-
6+
import awkward as ak
77
import uproot
88

99
dask = pytest.importorskip("dask")
1010
dask_awkward = pytest.importorskip("dask_awkward")
1111

12-
pytest.importorskip("pyarrow") # dask_awkward.lib.testutils needs pyarrow
13-
from dask_awkward.lib.testutils import assert_eq
14-
1512

1613
def test_dask_numpy_empty_arrays():
1714
test_path = skhep_testdata.data_path("uproot-issue-697.root") + ":tree"
@@ -52,7 +49,7 @@ def test_dask_awkward_empty_arrays():
5249
ak_array = ttree.arrays()
5350
dak_array = uproot.dask(test_path, library="ak")
5451

55-
assert_eq(dak_array, ak_array)
52+
assert ak.almost_equal(dak_array.compute(scheduler="synchronous"), ak_array)
5653

5754

5855
def test_dask_delayed_open_awkward():
@@ -62,7 +59,7 @@ def test_dask_delayed_open_awkward():
6259
ak_array = ttree.arrays()
6360
dak_array = uproot.dask(test_path, library="ak", open_files=False)
6461

65-
assert_eq(dak_array, ak_array)
62+
ak.almost_equal(dak_array.compute(scheduler="synchronous"), ak_array)
6663

6764

6865
def test_no_common_tree_branches():
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# BSD 3-Clause License; see https://github.com/scikit-hep/uproot5/blob/main/LICENSE
22

33
import numpy
4+
import awkward as ak
45
import pytest
56
import skhep_testdata
67

@@ -9,9 +10,6 @@
910
dask = pytest.importorskip("dask")
1011
dask_awkward = pytest.importorskip("dask_awkward")
1112

12-
pytest.importorskip("pyarrow") # dask_awkward.lib.testutils needs pyarrow
13-
from dask_awkward.lib.testutils import assert_eq
14-
1513

1614
def test_column_projection_sanity_check():
1715
test_path = skhep_testdata.data_path("uproot-Zmumu.root") + ":events"
@@ -20,6 +18,7 @@ def test_column_projection_sanity_check():
2018
ak_array = ttree.arrays()
2119
dak_array = uproot.dask(test_path, library="ak")
2220

23-
assert_eq(
24-
dak_array[["px1", "px2", "py1", "py2"]], ak_array[["px1", "px2", "py1", "py2"]]
21+
assert ak.almost_equal(
22+
dak_array[["px1", "px2", "py1", "py2"]].compute(scheduler="synchronous"),
23+
ak_array[["px1", "px2", "py1", "py2"]],
2524
)

tests/test_0876-uproot-dask-blind-steps.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,11 @@
33
import numpy
44
import pytest
55
import skhep_testdata
6+
import awkward as ak
67

78
import uproot
89

910
dask_awkward = pytest.importorskip("dask_awkward")
10-
pytest.importorskip("pyarrow") # dask_awkward.lib.testutils needs pyarrow
11-
from dask_awkward.lib.testutils import assert_eq
1211

1312

1413
@pytest.mark.parametrize("library", ["np", "ak"])
@@ -60,7 +59,9 @@ def test_uproot_dask_steps(library, step_size, steps_per_file, open_files):
6059
assert all(comp), f"Incorrect array at key {key}"
6160

6261
else:
63-
assert_eq(
64-
dask_arrays[["px1", "px2", "py1", "py2"]],
62+
assert ak.almost_equal(
63+
dask_arrays[["px1", "px2", "py1", "py2"]].compute(
64+
scheduler="synchronous"
65+
),
6566
arrays[["px1", "px2", "py1", "py2"]],
6667
)

0 commit comments

Comments
 (0)