diff --git a/python/cocoindex/setup.py b/python/cocoindex/setup.py index 27ee94754..b877e112e 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) diff --git a/python/cocoindex/typing.py b/python/cocoindex/typing.py index c11ec84aa..d75f2920d 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)