From 335c2141177a4da6b03e9746213650ced28e7528 Mon Sep 17 00:00:00 2001 From: dengmeiliang Date: Fri, 14 Aug 2026 21:42:34 +0800 Subject: [PATCH 1/3] fix(dbt): compatibility with pydantic v1 results and fixing the semantic format of flights.yaml --- converters/dbt/src/ossie_dbt/cli.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/converters/dbt/src/ossie_dbt/cli.py b/converters/dbt/src/ossie_dbt/cli.py index 8d71faad..5b213868 100644 --- a/converters/dbt/src/ossie_dbt/cli.py +++ b/converters/dbt/src/ossie_dbt/cli.py @@ -67,6 +67,22 @@ def _cmd_msi_to_osi(args: argparse.Namespace) -> None: print(f"Written to {output_path}", file=sys.stderr) +def safe_model_dump(obj, **kwargs): + """兼容 Pydantic v1 和 v2 的序列化""" + if hasattr(obj, 'model_dump_json'): + return obj.model_dump_json(**kwargs) + elif hasattr(obj, 'json'): + return obj.json(**kwargs) + elif hasattr(obj, 'dict'): + # Pydantic v1 的 dict 方法 + return json.dumps(obj.dict(**kwargs), indent=kwargs.get('indent', 2)) + elif hasattr(obj, 'model_dump'): + # Pydantic v2 的 dict 方法 + return json.dumps(obj.model_dump(**kwargs), indent=kwargs.get('indent', 2)) + else: + # 尝试直接转字典 + return json.dumps(obj.__dict__, indent=kwargs.get('indent', 2)) + def _cmd_osi_to_msi(args: argparse.Namespace) -> None: input_path = Path(args.input) output_path = Path(args.output) @@ -75,7 +91,13 @@ def _cmd_osi_to_msi(args: argparse.Namespace) -> None: document = OSIDocument.model_validate(raw) result = OSIToMSIConverter().convert(document) - output_path.write_text(result.output.model_dump_json(by_alias=True, exclude_none=True, indent=2)) + json_output = safe_model_dump( + result.output, + by_alias=True, + exclude_none=True, + indent=2 +) + output_path.write_text(json_output) print(f"Written to {output_path}", file=sys.stderr) From e0a38477adac96b6e6024b8c2a1745134bdc818e Mon Sep 17 00:00:00 2001 From: dengmeiliang Date: Fri, 14 Aug 2026 21:48:00 +0800 Subject: [PATCH 2/3] fix(dbt): fixing the semantic format of flights.yaml --- converters/dbt/src/ossie_dbt/cli.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/converters/dbt/src/ossie_dbt/cli.py b/converters/dbt/src/ossie_dbt/cli.py index 5b213868..96509f00 100644 --- a/converters/dbt/src/ossie_dbt/cli.py +++ b/converters/dbt/src/ossie_dbt/cli.py @@ -68,19 +68,18 @@ def _cmd_msi_to_osi(args: argparse.Namespace) -> None: def safe_model_dump(obj, **kwargs): - """兼容 Pydantic v1 和 v2 的序列化""" + """compatible pydantic v1 和 v2""" if hasattr(obj, 'model_dump_json'): return obj.model_dump_json(**kwargs) elif hasattr(obj, 'json'): return obj.json(**kwargs) elif hasattr(obj, 'dict'): - # Pydantic v1 的 dict 方法 + # Pydantic v1 return json.dumps(obj.dict(**kwargs), indent=kwargs.get('indent', 2)) elif hasattr(obj, 'model_dump'): - # Pydantic v2 的 dict 方法 + # Pydantic v2 return json.dumps(obj.model_dump(**kwargs), indent=kwargs.get('indent', 2)) else: - # 尝试直接转字典 return json.dumps(obj.__dict__, indent=kwargs.get('indent', 2)) def _cmd_osi_to_msi(args: argparse.Namespace) -> None: From e2620e72beed217c5570272d51b4519d4c5b4367 Mon Sep 17 00:00:00 2001 From: dengmeiliang Date: Fri, 14 Aug 2026 21:50:24 +0800 Subject: [PATCH 3/3] fix(dbt): fixing the semantic format of flights.yaml --- examples/flights.yaml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/examples/flights.yaml b/examples/flights.yaml index 803ff73d..1f10c210 100644 --- a/examples/flights.yaml +++ b/examples/flights.yaml @@ -537,10 +537,8 @@ ontology: - '{Route} connects to departure- {Airport}' # The hyphen after "departure" has significance when verbalizing constraints multiplicity: ManyToOne # Each Route connects to at most one departure Airport requires: [ 'NOT Route.destination(Airport)' ] -ontology_mappings: -- name: flights_mapping - semantic_model: - name: Flights semantic model +semantic_model: + - name: Flights semantic model datasets: - name: RUNWAY source: DATABASE.SCHEMA.RUNWAYS @@ -821,6 +819,9 @@ ontology_mappings: dialects: - dialect: ANSI_SQL expression: name + +ontology_mappings: +- name: flights_mapping concept_mappings: - concept: Runway object_mappings: