diff --git a/mplaltair/_data.py b/mplaltair/_data.py index 55dc6bc..ade8a35 100644 --- a/mplaltair/_data.py +++ b/mplaltair/_data.py @@ -34,6 +34,12 @@ def _normalize_data(chart): df = pd.DataFrame(_fetch(spec['data']['url'])) elif spec['data'].get('values'): return + elif spec['data'].get('name'): + datasets = spec.get('datasets', {}) + if spec['data'].get('name') in datasets.keys(): + return + else: + raise ValidationError('Named Data is provided but no corresponding dataset is found') else: raise NotImplementedError('Given data specification is unsupported at the moment.') diff --git a/mplaltair/tests/test_data.py b/mplaltair/tests/test_data.py index 0f4871d..3674b93 100644 --- a/mplaltair/tests/test_data.py +++ b/mplaltair/tests/test_data.py @@ -2,6 +2,7 @@ import pandas as pd import matplotlib.dates as mdates import mplaltair._data as _data +from mplaltair._exceptions import ValidationError import pytest from vega_datasets import data @@ -26,6 +27,11 @@ def test_data_url(): _data._normalize_data(chart) assert type(chart.data) == pd.DataFrame +def test_named_data(): + chart = alt.Chart(alt.NamedData('test-dataset')).mark_point() + with pytest.raises(ValidationError): + _data._normalize_data(chart) + # test date conversion: df_nonstandard = pd.DataFrame({