From d2f14b0b37adb478df0b30e62cbc07e7f95077fa Mon Sep 17 00:00:00 2001 From: Yuxuan Chen Date: Tue, 2 Jun 2026 15:12:10 -0400 Subject: [PATCH 1/2] fix: quote recursive union member annotations --- .../smithy/python/codegen/generators/UnionGenerator.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 From 398548f6e9050f1f6ea2f035a017896d621f94c5 Mon Sep 17 00:00:00 2001 From: Yuxuan Chen Date: Tue, 2 Jun 2026 17:04:35 -0400 Subject: [PATCH 2/2] Bump codegen patch version --- codegen/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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" }