Skip to content

Commit 91df81b

Browse files
Support error serialization
This adds support for error serialization. This is needed for event streams, which can include error shapes. Consequently, this also moves errors from `errors.py` into `models.py` to avoid circular references.
1 parent f42b2d4 commit 91df81b

File tree

3 files changed

+10
-8
lines changed

3 files changed

+10
-8
lines changed

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,8 @@ public static Symbol getPluginSymbol(PythonSettings settings) {
106106
public static Symbol getServiceError(PythonSettings settings) {
107107
return Symbol.builder()
108108
.name("ServiceError")
109-
.namespace(format("%s.errors", settings.moduleName()), ".")
110-
.definitionFile(format("./%s/errors.py", settings.moduleName()))
109+
.namespace(format("%s.models", settings.moduleName()), ".")
110+
.definitionFile(format("./%s/models.py", settings.moduleName()))
111111
.build();
112112
}
113113

@@ -123,8 +123,8 @@ public static Symbol getServiceError(PythonSettings settings) {
123123
public static Symbol getApiError(PythonSettings settings) {
124124
return Symbol.builder()
125125
.name("ApiError")
126-
.namespace(format("%s.errors", settings.moduleName()), ".")
127-
.definitionFile(format("./%s/errors.py", settings.moduleName()))
126+
.namespace(format("%s.models", settings.moduleName()), ".")
127+
.definitionFile(format("./%s/models.py", settings.moduleName()))
128128
.build();
129129
}
130130

@@ -140,8 +140,8 @@ public static Symbol getApiError(PythonSettings settings) {
140140
public static Symbol getUnknownApiError(PythonSettings settings) {
141141
return Symbol.builder()
142142
.name("UnknownApiError")
143-
.namespace(format("%s.errors", settings.moduleName()), ".")
144-
.definitionFile(format("./%s/errors.py", settings.moduleName()))
143+
.namespace(format("%s.models", settings.moduleName()), ".")
144+
.definitionFile(format("./%s/models.py", settings.moduleName()))
145145
.build();
146146
}
147147

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,12 @@ class $1L($2T):
148148
149149
${7C|}
150150
151+
${8C|}
152+
151153
""", symbol.getName(), apiError, code, fault,
152154
writer.consumer(w -> writeClassDocs(true)),
153155
writer.consumer(w -> writeProperties()),
156+
writer.consumer(w -> generateSerializeMethod()),
154157
writer.consumer(w -> generateDeserializeMethod()));
155158
}
156159

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -330,8 +330,7 @@ private Symbol genericEnum(Shape shape) {
330330
@Override
331331
public Symbol structureShape(StructureShape shape) {
332332
String name = getDefaultShapeName(shape);
333-
var file = shape.hasTrait(ErrorTrait.class) ? "errors" : SHAPES_FILE;
334-
return createGeneratedSymbolBuilder(shape, name, file).build();
333+
return createGeneratedSymbolBuilder(shape, name, SHAPES_FILE).build();
335334
}
336335

337336
@Override

0 commit comments

Comments
 (0)