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
|
# BSD 3-Clause License; see https://github.com/scikit-hep/awkward/blob/main/LICENSE
from __future__ import annotations
import awkward as ak
class ArrayBehavior(ak.Array):
def impl(self):
return True
class RecordBehavior(ak.Record):
def impl(self):
return True
BEHAVIOR = {("*", "impl"): ArrayBehavior, "impl": RecordBehavior}
def test_array_layout():
array = ak.Array([{"x": 1}, {"y": 3}], behavior=BEHAVIOR)
assert not isinstance(array, ArrayBehavior)
array.layout = ak.with_name([{"x": 1}, {"y": 3}], "impl", highlevel=False)
assert isinstance(array, ArrayBehavior)
assert array.impl()
def test_array_behavior():
array = ak.Array([{"x": 1}, {"y": 3}], with_name="impl")
assert not isinstance(array, ArrayBehavior)
array.behavior = BEHAVIOR
assert isinstance(array, ArrayBehavior)
assert array.impl()
def test_record_layout():
record = ak.Record({"x": 1}, behavior=BEHAVIOR)
assert not isinstance(record, RecordBehavior)
record.layout = ak.with_name({"x": 1}, "impl", highlevel=False)
assert isinstance(record, RecordBehavior)
assert record.impl()
def test_record_behavior():
record = ak.Record({"x": 1}, with_name="impl")
assert not isinstance(record, RecordBehavior)
record.behavior = BEHAVIOR
assert isinstance(record, RecordBehavior)
assert record.impl()
|