From e0c966faddb6f140c8aa8a2ad679ab70f7597697 Mon Sep 17 00:00:00 2001 From: LJ Date: Thu, 6 Mar 2025 22:29:13 -0800 Subject: [PATCH 1/2] Fix serialization for Table type in Python SDK. --- python/cocoindex/typing.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/python/cocoindex/typing.py b/python/cocoindex/typing.py index c11ec84..d75f292 100644 --- a/python/cocoindex/typing.py +++ b/python/cocoindex/typing.py @@ -36,7 +36,7 @@ def _dump_fields_schema(cls: type) -> list[dict[str, Any]]: return [ { 'name': field.name, - 'value_type': _dump_enriched_type(field.type), + **_dump_enriched_type(field.type) } for field in dataclasses.fields(cls) ] @@ -56,7 +56,7 @@ def _dump_type(t, metadata): elif dataclasses.is_dataclass(elem_type): encoded_type = { 'kind': 'Table', - 'row': _dump_fields_schema(elem_type), + 'row': { 'fields': _dump_fields_schema(elem_type) }, } else: raise ValueError(f"Unsupported type: {t}") @@ -86,9 +86,7 @@ def _dump_type(t, metadata): return encoded_type -def _dump_enriched_type(t) -> dict[str, Any] | None: - if t is None: - return None +def _dump_enriched_type(t) -> dict[str, Any]: t, metadata = _get_origin_type_and_metadata(t) enriched_type_json = {'type': _dump_type(t, metadata)} attrs = None @@ -106,4 +104,6 @@ def dump_type(t) -> dict[str, Any] | None: """ Convert a Python type to a CocoIndex's type in JSON. """ + if t is None: + return None return _dump_enriched_type(t) From e40e712191b209e95ed715a1e987636d7f2e33a5 Mon Sep 17 00:00:00 2001 From: LJ Date: Thu, 6 Mar 2025 22:29:45 -0800 Subject: [PATCH 2/2] Fix serialization for `CheckSetupStatusOptions` in python SDK. --- python/cocoindex/setup.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/python/cocoindex/setup.py b/python/cocoindex/setup.py index 27ee947..b877e11 100644 --- a/python/cocoindex/setup.py +++ b/python/cocoindex/setup.py @@ -1,14 +1,15 @@ -from typing import NamedTuple +from dataclasses import dataclass from . import flow from . import _engine -class CheckSetupStatusOptions(NamedTuple): +@dataclass +class CheckSetupStatusOptions: delete_legacy_flows: bool def check_setup_status(options: CheckSetupStatusOptions) -> _engine.SetupStatusCheck: flow.ensure_all_flows_built() - return _engine.check_setup_status(options) + return _engine.check_setup_status(vars(options)) def apply_setup_changes(status_check: _engine.SetupStatusCheck): _engine.apply_setup_changes(status_check)