Skip to content

Commit 9f2f144

Browse files
Filter event stream members from IO shapes
1 parent b2735a6 commit 9f2f144

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

codegen/smithy-python-codegen/src/main/java/software/amazon/smithy/python/codegen/StructureGenerator.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ final class StructureGenerator implements Runnable {
8585
required.add(member);
8686
}
8787
}
88-
this.requiredMembers = filterMessageMembers(required);
89-
this.optionalMembers = filterMessageMembers(optional);
88+
this.requiredMembers = filterPropertyMembers(required);
89+
this.optionalMembers = filterPropertyMembers(optional);
9090
this.recursiveShapes = recursiveShapes;
9191
}
9292

@@ -242,18 +242,23 @@ private void writeClassDocs(boolean isError) {
242242
}
243243
}
244244

245-
private List<MemberShape> filterMessageMembers(List<MemberShape> members) {
246-
// Only apply this to structures that are errors.
245+
private List<MemberShape> filterPropertyMembers(List<MemberShape> members) {
247246
if (!shape.hasTrait(ErrorTrait.class)) {
248-
return members;
247+
return members.stream().filter(this::filterEventStreamMember).toList();
249248
}
250249
// We replace modeled message members with a static `message` member. Serialization
251250
// and deserialization will handle assigning them properly.
252251
return members.stream()
253252
.filter(member -> !isErrorMessage(model, member))
253+
.filter(this::filterEventStreamMember)
254254
.collect(Collectors.toList());
255255
}
256256

257+
private boolean filterEventStreamMember(MemberShape member) {
258+
var target = model.expectShape(member.getTarget());
259+
return !(target.isUnionShape() && target.hasTrait(StreamingTrait.class));
260+
}
261+
257262
private String getDefaultValue(PythonWriter writer, MemberShape member) {
258263
// The default value is defined in the model is a exposed as generic
259264
// json, so we need to convert it to the proper type based on the target.

0 commit comments

Comments
 (0)