From 1d09946deaa96dfa0304590508849091d3eede37 Mon Sep 17 00:00:00 2001 From: Douglas Wilson Date: Thu, 9 May 2024 15:31:20 +0100 Subject: [PATCH] Add t property to SumType --- hugr-py/src/hugr/serialization/tys.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/hugr-py/src/hugr/serialization/tys.py b/hugr-py/src/hugr/serialization/tys.py index c66b78bb1..86078fc27 100644 --- a/hugr-py/src/hugr/serialization/tys.py +++ b/hugr-py/src/hugr/serialization/tys.py @@ -190,7 +190,12 @@ class GeneralSum(ConfiguredBaseModel): class SumType(RootModel): - root: Union[UnitSum, GeneralSum] = Field(discriminator="s") + root: Annotated[Union[UnitSum, GeneralSum], Field(discriminator="s")] + + # This seems to be required for nested discriminated unions to work + @property + def t(self) -> str: + return self.root.t class Config: json_schema_extra = {"required": ["s"]} @@ -318,7 +323,8 @@ class Type(RootModel): root: Annotated[ Qubit | Variable | USize | FunctionType | Array | SumType | Opaque | Alias, WrapValidator(_json_custom_error_validator), - ] = Field(discriminator="t") + Field(discriminator="t"), + ] class Config: json_schema_extra = {"required": ["t"]}