in src/docgen/transpile/python.ts [186:219]
public callable(callable: reflect.Callable): transpile.TranspiledCallable {
const type = this.type(callable.parentType);
const parameters = new Array<reflect.Parameter>();
for (const p of callable.parameters.sort(this.optionalityCompare)) {
if (!this.isStruct(p)) {
parameters.push(p);
} else {
// struct parameters are expanded to the individual struct properties
const struct = p.parentType.system.findInterface(p.type.fqn!);
for (const property of struct.allProperties) {
const parameter = propertyToParameter(callable, property);
parameters.push(parameter);
}
}
}
const name = toSnakeCase(callable.name);
const inputs = parameters.map((p) => this.formatParameters(this.parameter(p)));
return {
name,
parentType: type,
import: formatImport(type),
parameters,
signatures: [formatSignature(name, inputs)],
invocations: [formatInvocation(
type,
inputs,
callable.kind === reflect.MemberKind.Initializer ? undefined : name,
)],
};
}