From d504c770030cfc8715437fbb122c3c844c469113 Mon Sep 17 00:00:00 2001 From: Michael Osthege Date: Fri, 2 Dec 2022 15:50:26 +0100 Subject: [PATCH] Give more informative errors for unsupported dtypes --- mcbackend/__init__.py | 2 +- mcbackend/backends/clickhouse.py | 5 +++++ mcbackend/test_backend_clickhouse.py | 11 +++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/mcbackend/__init__.py b/mcbackend/__init__.py index c6a43eb..a044c75 100644 --- a/mcbackend/__init__.py +++ b/mcbackend/__init__.py @@ -20,4 +20,4 @@ pass -__version__ = "0.2.4" +__version__ = "0.2.5" diff --git a/mcbackend/backends/clickhouse.py b/mcbackend/backends/clickhouse.py index c0b7d35..52311d8 100644 --- a/mcbackend/backends/clickhouse.py +++ b/mcbackend/backends/clickhouse.py @@ -49,6 +49,11 @@ def create_runs_table(client: clickhouse_driver.Client): def column_spec_for(var: Variable, is_stat: bool = False): + if var.dtype not in CLICKHOUSE_DTYPES: + raise KeyError( + f"Don't know how to store dtype {var.dtype} " + f"of '{var.name}' (is_stat={is_stat}) in ClickHouse." + ) cdt = CLICKHOUSE_DTYPES[var.dtype] ndim = len(var.shape) for _ in range(ndim): diff --git a/mcbackend/test_backend_clickhouse.py b/mcbackend/test_backend_clickhouse.py index 75508aa..275b912 100644 --- a/mcbackend/test_backend_clickhouse.py +++ b/mcbackend/test_backend_clickhouse.py @@ -13,6 +13,7 @@ ClickHouseBackend, ClickHouseChain, ClickHouseRun, + column_spec_for, create_chain_table, ) from mcbackend.core import Run, chain_id @@ -27,6 +28,16 @@ HAS_REAL_DB = False +def test_column_spec_for(): + assert column_spec_for(Variable("A", "float32", [])) == "`A` Float32" + assert column_spec_for(Variable("A", "float32", []), is_stat=True) == "`__stat_A` Float32" + assert column_spec_for(Variable("A", "float32", [2])) == "`A` Array(Float32)" + assert column_spec_for(Variable("A", "float32", [2, 3])) == "`A` Array(Array(Float32))" + with pytest.raises(KeyError, match="float16 of 'A'"): + column_spec_for(Variable("A", "float16", [])) + pass + + def fully_initialized( cbackend: ClickHouseBackend, rmeta: RunMeta, *, nchains: int = 1 ) -> Tuple[ClickHouseRun, Sequence[ClickHouseChain]]: