From a30fcead0e7938bb49459a61d078e864ef4dfaf0 Mon Sep 17 00:00:00 2001 From: Christoph Eder Date: Fri, 12 Dec 2025 17:06:32 +0100 Subject: [PATCH] Changes in phrases.py Another manual schema implementation --- anansyTypes/structures/phrase.py | 33 +++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/anansyTypes/structures/phrase.py b/anansyTypes/structures/phrase.py index f6b456b..ec6f4d5 100644 --- a/anansyTypes/structures/phrase.py +++ b/anansyTypes/structures/phrase.py @@ -21,21 +21,24 @@ class Phrase(Lexeme): @classmethod def __get_pydantic_core_schema__(cls, source_type: Any, handler): - def serialize(value: Phrase) -> dict: - serialized_embedding = handler(source_type=value.embedding.__class__, value=value.embedding) - - return { - "id": value.id, - "content": value.content, - "embedding": serialized_embedding, # Use handler for robustness - } - - return core_schema.json_or_python_schema( - python_schema=core_schema.no_info_after_validator_function( - lambda x: x, - core_schema.is_instance_schema(cls) + from pydantic_core import core_schema + + return core_schema.no_info_after_validator_function( + lambda x: x if isinstance(x, cls) else cls(**x), + core_schema.typed_dict_schema( + { + 'id': core_schema.typed_dict_field(handler.generate_schema(int)), + 'content': core_schema.typed_dict_field(handler.generate_schema(str)), + 'embedding': core_schema.typed_dict_field(handler.generate_schema(Embedding)), + } ), - json_schema=core_schema.plain_serializer_function_ser_schema( - serialize, when_used="json" + serialization=core_schema.plain_serializer_function_ser_schema( + lambda x: { + 'id': x.id, + 'content': x.content, + 'embedding': x.embedding + }, + when_used='json', ), ) +