Skip to content

Commit 0e79346

Browse files
Put member docs after member declarations
1 parent e85fc26 commit 0e79346

File tree

1 file changed

+19
-23
lines changed

1 file changed

+19
-23
lines changed

codegen/core/src/main/java/software/amazon/smithy/python/codegen/generators/StructureGenerator.java

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ class $L:
118118
119119
""",
120120
symbol.getName(),
121-
writer.consumer(w -> writeClassDocs(false)),
121+
writer.consumer(this::writeClassDocs),
122122
writer.consumer(w -> writeProperties()),
123123
writer.consumer(w -> generateSerializeMethod()),
124124
writer.consumer(w -> generateDeserializeMethod()));
@@ -166,7 +166,7 @@ class $1L($2T):
166166
symbol.getName(),
167167
baseError,
168168
fault,
169-
writer.consumer(w -> writeClassDocs(true)),
169+
writer.consumer(this::writeClassDocs),
170170
writer.consumer(w -> writeProperties()),
171171
writer.consumer(w -> generateSerializeMethod()),
172172
writer.consumer(w -> generateDeserializeMethod()));
@@ -185,12 +185,18 @@ private void writeProperties() {
185185
} else {
186186
writer.putContext("sensitive", false);
187187
}
188+
var docs = member.getMemberTrait(model, DocumentationTrait.class)
189+
.map(DocumentationTrait::getValue)
190+
.map(writer::formatDocs)
191+
.orElse(null);
192+
writer.putContext("docs", docs);
188193

189194
var memberName = symbolProvider.toMemberName(member);
190195
writer.putContext("quote", recursiveShapes.contains(target) ? "'" : "");
191196
writer.write("""
192197
$L: ${quote:L}$T${quote:L}\
193198
${?sensitive} = field(repr=False)${/sensitive}
199+
${?docs}""\"${docs:L}""\"${/docs}
194200
""",
195201
memberName,
196202
symbolProvider.toSymbol(member));
@@ -227,6 +233,11 @@ private void writeProperties() {
227233
writer.putContext("defaultKey", defaultKey);
228234
writer.putContext("defaultValue", defaultValue);
229235
writer.putContext("useField", requiresField);
236+
var docs = member.getMemberTrait(model, DocumentationTrait.class)
237+
.map(DocumentationTrait::getValue)
238+
.map(writer::formatDocs)
239+
.orElse(null);
240+
writer.putContext("docs", docs);
230241

231242
writer.putContext("quote", recursiveShapes.contains(target) ? "'" : "");
232243

@@ -236,31 +247,16 @@ private void writeProperties() {
236247
= ${^useField}${defaultValue:L}${/useField}\
237248
${?useField}\
238249
field(${?sensitive}repr=False, ${/sensitive}${defaultKey:L}=${defaultValue:L})\
239-
${/useField}""", memberName, symbolProvider.toSymbol(member));
240-
250+
${/useField}
251+
${?docs}""\"${docs:L}""\"${/docs}""", memberName, symbolProvider.toSymbol(member));
241252
writer.popState();
242253
}
243254
}
244255

245-
private void writeClassDocs(boolean isError) {
246-
if (hasDocs()) {
247-
writer.writeDocs(() -> {
248-
shape.getTrait(DocumentationTrait.class).ifPresent(trait -> {
249-
writer.write(writer.formatDocs(trait.getValue()));
250-
});
251-
252-
if (isError) {
253-
writer.write("\n:param message: A message associated with the " +
254-
"specific error.");
255-
}
256-
257-
if (!shape.members().isEmpty()) {
258-
writer.write("");
259-
requiredMembers.forEach(this::writeMemberDocs);
260-
optionalMembers.forEach(this::writeMemberDocs);
261-
}
262-
});
263-
}
256+
private void writeClassDocs(PythonWriter writer) {
257+
shape.getTrait(DocumentationTrait.class).ifPresent(trait -> {
258+
writer.writeDocs(writer.formatDocs(trait.getValue()).trim());
259+
});
264260
}
265261

266262
private List<MemberShape> filterPropertyMembers(List<MemberShape> members) {

0 commit comments

Comments
 (0)