Skip to content

Commit f42b2d4

Browse files
Don't prematurely handle event streams
This removes event streams from the generated deser methods, as they aren't handled there. They will eventually be handled by the protocol python implementation on a higher level. This also removes the attempt at handling them as if they were a blob stream, as they are currently handled elsewhere.
1 parent 2848899 commit f42b2d4

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import software.amazon.smithy.model.traits.InputTrait;
4242
import software.amazon.smithy.model.traits.OutputTrait;
4343
import software.amazon.smithy.model.traits.SensitiveTrait;
44+
import software.amazon.smithy.model.traits.StreamingTrait;
4445
import software.amazon.smithy.python.codegen.generators.MemberDeserializerGenerator;
4546
import software.amazon.smithy.python.codegen.generators.MemberSerializerGenerator;
4647

@@ -417,6 +418,9 @@ private void deserializeMembers(Collection<MemberShape> members) {
417418
int index = 0;
418419
for (MemberShape member : members) {
419420
var target = model.expectShape(member.getTarget());
421+
if (target.hasTrait(StreamingTrait.class) && target.isUnionShape()) {
422+
continue;
423+
}
420424
writer.write("""
421425
case $L:
422426
kwargs[$S] = ${C|}

codegen/smithy-python-codegen/src/main/java/software/amazon/smithy/python/codegen/integration/RestJsonProtocolGenerator.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -314,10 +314,15 @@ protected void deserializePayloadBody(
314314

315315
var symbolProvider = context.symbolProvider();
316316
var memberName = symbolProvider.toMemberName(payloadBinding.getMember());
317+
var target = context.model().expectShape(payloadBinding.getMember().getTarget());
317318

318-
if (payloadBinding.getMember().getMemberTrait(context.model(), StreamingTrait.class).isPresent()) {
319-
writer.addImport("smithy_core.aio.types", "AsyncBytesReader");
320-
writer.write("kwargs[$S] = AsyncBytesReader(http_response.body)", memberName);
319+
if (target.hasTrait(StreamingTrait.class)) {
320+
// If the target is a union, nothing needs to be done here. The stream deserializer will
321+
// take the response body directly and handle it.
322+
if (target.isBlobShape()) {
323+
writer.addImport("smithy_core.aio.types", "AsyncBytesReader");
324+
writer.write("kwargs[$S] = AsyncBytesReader(http_response.body)", memberName);
325+
}
321326
return;
322327
}
323328

@@ -334,7 +339,6 @@ protected void deserializePayloadBody(
334339
""");
335340
}
336341

337-
var target = context.model().expectShape(payloadBinding.getMember().getTarget());
338342
var deserializerSymbol = symbolProvider.toSymbol(target);
339343

340344
writer.write("if body:").indent();

0 commit comments

Comments
 (0)