diff --git a/codegen/build.gradle.kts b/codegen/build.gradle.kts index a0a733616..df6e5391c 100644 --- a/codegen/build.gradle.kts +++ b/codegen/build.gradle.kts @@ -15,5 +15,5 @@ allprojects { group = "software.amazon.smithy.python" - version = "0.3.0" + version = "0.3.1" } diff --git a/codegen/core/src/main/java/software/amazon/smithy/python/codegen/generators/UnionGenerator.java b/codegen/core/src/main/java/software/amazon/smithy/python/codegen/generators/UnionGenerator.java index 4fe83d051..5242424ec 100644 --- a/codegen/core/src/main/java/software/amazon/smithy/python/codegen/generators/UnionGenerator.java +++ b/codegen/core/src/main/java/software/amazon/smithy/python/codegen/generators/UnionGenerator.java @@ -62,12 +62,14 @@ public void run() { var target = model.expectShape(member.getTarget()); var targetSymbol = symbolProvider.toSymbol(target); + writer.pushState(); + writer.putContext("quote", recursiveShapes.contains(target) ? "'" : ""); writer.write(""" @dataclass class $1L: ${2C|} - value: $3T + value: ${quote:L}$3T${quote:L} def serialize(self, serializer: ShapeSerializer): serializer.write_struct($4T, self) @@ -92,6 +94,7 @@ def deserialize(cls, deserializer: ShapeDeserializer) -> Self: new MemberDeserializerGenerator(context, w, member, "deserializer"))) ); + writer.popState(); } // Note that the unknown variant doesn't implement __eq__. This is because