in scripts/competitiond.py [0:0]
def generate_description():
def display_schema(schema, doc, indent, first_indent=None):
saved_indent = indent
if first_indent is not None:
indent = first_indent
for field_name, field in schema._declared_fields.items():
field_help = field.metadata.get("metadata", "")
field_class = field.__class__
if field_class is fields.Nested:
doc += indent + "%s:\n" % field_name
doc = display_schema(field.nested, doc, (indent + " "))
elif field_class is fields.List:
doc += indent + "%s:\n" % field_name
doc = display_schema(
field.container.nested, doc, (indent + " "), first_indent=(indent + " - "),
)
doc += indent + " - ...\n"
else:
field_type = field.__class__.__name__.lower()
if field.missing is missing and field.required:
doc += indent + "%s: %s, %s [required]\n" % (
field_name,
field_type,
field_help,
)
elif field.missing is missing and not field.required:
doc += indent + "%s: %s, %s\n" % (field_name, field_type, field_help,)
else:
doc += indent + "%s: %s, %s [default: %s]\n" % (
field_name,
field_type,
field_help,
json.dumps(field.missing).strip(),
)
indent = saved_indent
return doc
return display_schema(ConfigSchema, __doc__, " " * 4)