Skip to content

make sure to_json and to_json_schema also work and make sense #257

@github-actions

Description

@github-actions

for nested datasets

# TODO: make sure to_json and to_json_schema also work and make sense

    dataset['a'], dataset['b'] = dataset['b'], dataset['a']


def test_nested_datasets():
    nested_data = {'a': {'x': 123}, 'b': {'y': 234}}
    nested_dataset = Dataset[Dataset[Model[int]]](nested_data)
    assert isinstance(nested_dataset['a'], Dataset)
    assert isinstance(nested_dataset['a']['x'], Model)
    assert nested_dataset['a']['x'].content == 123
    assert nested_dataset.to_data() == nested_data
    assert nested_dataset.get_type() == Dataset[Model[int]]

    nested_str_dataset = Dataset[Dataset[Model[str]]](nested_dataset)
    assert nested_str_dataset['a']['x'].content == '123'
    assert nested_str_dataset.get_type() == Dataset[Model[str]]

    deep_nested_data = {'first': {'a': {'x': 123}}, 'second': {'b': {'y': 234}}}
    deep_nested_dataset = Dataset[Dataset[Dataset[Model[int]]]](deep_nested_data)
    assert isinstance(deep_nested_dataset['first'], Dataset)
    assert isinstance(deep_nested_dataset['first']['a'], Dataset)
    assert isinstance(deep_nested_dataset['first']['a']['x'], Model)
    assert deep_nested_dataset['first']['a']['x'].content == 123
    assert deep_nested_dataset.to_data() == deep_nested_data
    assert deep_nested_dataset.get_type() == Dataset[Dataset[Model[int]]]

    deep_nested_str_dataset = Dataset[Dataset[Dataset[Model[str]]]](deep_nested_dataset)
    assert deep_nested_str_dataset['first']['a']['x'].content == '123'
    assert deep_nested_str_dataset.get_type() == Dataset[Dataset[Model[str]]]

    # TODO: make sure to_json and to_json_schema also work and make sense
    #       for nested datasets


def _assert_no_access_data_exceptions(dataset: Dataset,
                                      model_cls: type,
                                      keys: list[str],

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions