def test_basic(): content1 = awkward1.layout.NumpyArray(numpy.array([1, 2, 3, 4, 5])) content2 = awkward1.layout.NumpyArray(numpy.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9])) offsets = awkward1.layout.Index64(numpy.array([0, 3, 3, 5, 6, 9])) listoffsetarray = awkward1.layout.ListOffsetArray64(offsets, content2) recordarray = awkward1.layout.RecordArray(0) recordarray.append(content1, "one") recordarray.append(listoffsetarray, "two") recordarray.append(content2) recordarray.append(content1, "wonky") assert awkward1.tolist(recordarray.field(0)) == [1, 2, 3, 4, 5] assert awkward1.tolist(recordarray.field("two")) == [[1.1, 2.2, 3.3], [], [4.4, 5.5], [6.6], [7.7, 8.8, 9.9]] assert awkward1.tolist(recordarray.field("wonky")) == [1, 2, 3, 4, 5] str(recordarray) assert awkward1.tojson(recordarray) == '[{"one":1,"two":[1.1,2.2,3.3],"2":1.1,"wonky":1},{"one":2,"two":[],"2":2.2,"wonky":2},{"one":3,"two":[4.4,5.5],"2":3.3,"wonky":3},{"one":4,"two":[6.6],"2":4.4,"wonky":4},{"one":5,"two":[7.7,8.8,9.9],"2":5.5,"wonky":5}]' assert len(recordarray) == 5 assert recordarray.key(0) == "one" assert recordarray.key(1) == "two" assert recordarray.key(2) == "2" assert recordarray.key(3) == "wonky" assert recordarray.fieldindex("wonky") == 3 assert recordarray.fieldindex("one") == 0 assert recordarray.fieldindex("0") == 0 assert recordarray.fieldindex("two") == 1 assert recordarray.fieldindex("1") == 1 assert recordarray.fieldindex("2") == 2 assert recordarray.haskey("wonky") assert recordarray.haskey("one") assert recordarray.haskey("0") assert recordarray.haskey("two") assert recordarray.haskey("1") assert recordarray.haskey("2") assert recordarray.keys() == ["one", "two", "2", "wonky"] assert [awkward1.tolist(x) for x in recordarray.fields()] == [[1, 2, 3, 4, 5], [[1.1, 2.2, 3.3], [], [4.4, 5.5], [6.6], [7.7, 8.8, 9.9]], [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9], [1, 2, 3, 4, 5]] pairs = recordarray.fielditems() assert pairs[0][0] == "one" assert pairs[1][0] == "two" assert pairs[2][0] == "2" assert pairs[3][0] == "wonky" assert awkward1.tolist(pairs[0][1]) == [1, 2, 3, 4, 5] assert awkward1.tolist(pairs[1][1]) == [[1.1, 2.2, 3.3], [], [4.4, 5.5], [6.6], [7.7, 8.8, 9.9]] assert awkward1.tolist(pairs[2][1]) == [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9] assert awkward1.tolist(pairs[3][1]) == [1, 2, 3, 4, 5] assert awkward1.tojson(recordarray.astuple) == '[{"0":1,"1":[1.1,2.2,3.3],"2":1.1,"3":1},{"0":2,"1":[],"2":2.2,"3":2},{"0":3,"1":[4.4,5.5],"2":3.3,"3":3},{"0":4,"1":[6.6],"2":4.4,"3":4},{"0":5,"1":[7.7,8.8,9.9],"2":5.5,"3":5}]'
def test_json(): dataset = [ '[{"one":1,"two":1.1},{"one":2,"two":2.2},{"one":3,"two":3.3}]', '[{"one":1,"two":[1.1,2.2,3.3]},{"one":2,"two":[]},{"one":3,"two":[4.4,5.5]}]', '[[{"one":1,"two":1.1},{"one":2,"two":2.2},{"one":3,"two":3.3}],[],[{"one":4,"two":4.4},{"one":5,"two":5.5}]]', '[{"one":{"x":1,"y":1},"two":1.1},{"one":{"x":2,"y":2},"two":2.2},{"one":{"x":3,"y":3},"two":3.3}]', ] for datum in dataset: assert awkward1.tojson(awkward1.fromjson(datum)) == datum
def test_fromiter(): builder = awkward1.layout.FillableArray() builder.integer(0) builder.integer(1) builder.integer(2) builder.beginlist() builder.endlist() builder.beginlist() builder.real(1.1) builder.endlist() builder.beginlist() builder.real(1.1) builder.real(2.2) builder.endlist() builder.beginlist() builder.real(1.1) builder.real(2.2) builder.real(3.3) builder.endlist() assert awkward1.tolist(builder.snapshot()) == [ 0, 1, 2, [], [1.1], [1.1, 2.2], [1.1, 2.2, 3.3] ] assert awkward1.tolist( awkward1.fromiter( [0, 1, 2, [], [1.1], [1.1, 2.2], [1.1, 2.2, 3.3]])) == [0, 1, 2, [], [1.1], [1.1, 2.2], [1.1, 2.2, 3.3]] assert awkward1.tolist( awkward1.fromiter([ 0, 1, 2, [], "zero", [1.1], "one", [1.1, 2.2], "two", [1.1, 2.2, 3.3], "three" ])) == [ 0, 1, 2, [], "zero", [1.1], "one", [1.1, 2.2], "two", [1.1, 2.2, 3.3], "three" ] assert awkward1.tolist( awkward1.fromjson( '[0, 1, 2, [], "zero", [1.1], "one", [1.1, 2.2], "two", [1.1, 2.2, 3.3], "three"]' )) == [ 0, 1, 2, [], "zero", [1.1], "one", [1.1, 2.2], "two", [1.1, 2.2, 3.3], "three" ] assert awkward1.tojson( awkward1.fromjson( '[0,1,2,[],"zero",[1.1],"one",[1.1,2.2],"two",[1.1,2.2,3.3],"three"]' ) ) == '[0,1,2,[],"zero",[1.1],"one",[1.1,2.2],"two",[1.1,2.2,3.3],"three"]'
def test_scalar_record(): content1 = awkward1.layout.NumpyArray(numpy.array([1, 2, 3, 4, 5])) content2 = awkward1.layout.NumpyArray(numpy.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9])) offsets = awkward1.layout.Index64(numpy.array([0, 3, 3, 5, 6, 9])) listoffsetarray = awkward1.layout.ListOffsetArray64(offsets, content2) recordarray = awkward1.layout.RecordArray(0) recordarray.append(content1, "one") recordarray.append(listoffsetarray, "two") str(recordarray) str(recordarray[2]) assert awkward1.tojson(recordarray[2]) == '{"one":3,"two":[4.4,5.5]}' assert recordarray[2].keys() == ["one", "two"] assert [awkward1.tolist(x) for x in recordarray[2].fields()] == [3, [4.4, 5.5]] pairs = recordarray[2].fielditems() assert pairs[0][0] == "one" assert pairs[1][0] == "two" assert pairs[0][1] == 3 assert awkward1.tolist(pairs[1][1]) == [4.4, 5.5] assert awkward1.tolist(recordarray[2]) == {"one": 3, "two": [4.4, 5.5]} assert awkward1.tolist(awkward1.layout.Record(recordarray, 2)) == {"one": 3, "two": [4.4, 5.5]}
def test_fillable_string(): fillable = awkward1.FillableArray() fillable.bytestring(b"one") fillable.bytestring(b"two") fillable.bytestring(b"three") a = fillable.snapshot() if py27: assert str(a) == "['one', 'two', 'three']" else: assert str(a) == "[b'one', b'two', b'three']" assert awkward1.tolist(a) == [b'one', b'two', b'three'] assert awkward1.tojson(a) == '["one","two","three"]' if py27: assert repr(a) == "<Array ['one', 'two', 'three'] type='3 * bytes'>" else: assert repr(a) == "<Array [b'one', b'two', b'three'] type='3 * bytes'>" assert repr(a.type) == "3 * bytes" fillable = awkward1.FillableArray() fillable.string("one") fillable.string("two") fillable.string("three") a = fillable.snapshot() if py27: assert str(a) == "[u'one', u'two', u'three']" else: assert str(a) == "['one', 'two', 'three']" assert awkward1.tolist(a) == ['one', 'two', 'three'] assert awkward1.tojson(a) == '["one","two","three"]' if py27: assert repr( a) == "<Array [u'one', u'two', u'three'] type='3 * string'>" else: assert repr(a) == "<Array ['one', 'two', 'three'] type='3 * string'>" assert repr(a.type) == "3 * string" fillable = awkward1.FillableArray() fillable.beginlist() fillable.string("one") fillable.string("two") fillable.string("three") fillable.endlist() fillable.beginlist() fillable.endlist() fillable.beginlist() fillable.string("four") fillable.string("five") fillable.endlist() a = fillable.snapshot() if py27: assert str(a) == "[[u'one', u'two', u'three'], [], [u'four', u'five']]" else: assert str(a) == "[['one', 'two', 'three'], [], ['four', 'five']]" assert awkward1.tolist(a) == [['one', 'two', 'three'], [], ['four', 'five']] assert awkward1.tojson(a) == '[["one","two","three"],[],["four","five"]]' assert repr(a.type) == "3 * var * string"
def test_tojson(): assert awkward1.tojson(regulararray) == "[[[0.0,1.1,2.2],[]],[[3.3,4.4],[5.5]],[[6.6,7.7,8.8,9.9],[]]]"