From 3932d078467813e8ebbccd3cce42718aa6936f22 Mon Sep 17 00:00:00 2001 From: Christoph Eder Date: Fri, 12 Dec 2025 17:03:31 +0100 Subject: [PATCH] Changes in symbol.py Trying manual schema implementation Changes in embedding.py Removed deprecated import --- anansyTypes/structures/embedding.py | 1 - anansyTypes/structures/symbol.py | 38 ++++++++++++++++++++--------- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/anansyTypes/structures/embedding.py b/anansyTypes/structures/embedding.py index a080971..8222cf8 100644 --- a/anansyTypes/structures/embedding.py +++ b/anansyTypes/structures/embedding.py @@ -2,7 +2,6 @@ from __future__ import annotations from dataclasses import dataclass import numpy as np from pydantic_tensor import Tensor -from pydantic_core import core_schema import torch from typing import Any, Literal diff --git a/anansyTypes/structures/symbol.py b/anansyTypes/structures/symbol.py index e418a7d..a04fac2 100644 --- a/anansyTypes/structures/symbol.py +++ b/anansyTypes/structures/symbol.py @@ -14,17 +14,31 @@ class Symbol: @classmethod def __get_pydantic_core_schema__(cls, source_type: Any, handler): - def serialize(value: "Symbol") -> dict: - serialized_image = handler(source_type=value.image.__class__, value=value.image) - return { - 'id': value.id, - 'label': value.label, - 'image': serialized_image - } - - return core_schema.json_or_python_schema( - python_schema=handler(cls), - json_schema=core_schema.plain_serializer_function_ser_schema( - serialize, when_used='json' + from pydantic_core import core_schema + + return core_schema.no_info_after_validator_function( + cls, + core_schema.dataclass_schema( + cls=cls, + schema=core_schema.dataclass_args_schema( + cls.__name__, + [ + core_schema.dataclass_field(name='id', schema=handler.generate_schema(int)), + core_schema.dataclass_field(name='label', schema=handler.generate_schema(str)), + core_schema.dataclass_field( + name='image', + schema=handler.generate_schema(Tensor[np.ndarray[Any, Any], tuple, Literal["int32", "int64"]]) + ), + ], + ), + fields=['id', 'label', 'image'], + ), + serialization=core_schema.plain_serializer_function_ser_schema( + lambda x: { + 'id': x.id, + 'label': x.label, + 'image': x.image + }, + when_used='json', ), )