-
Notifications
You must be signed in to change notification settings - Fork 2
Description
I've found myself needing to generate documentation for the sheet importer. Since there's a large overlap between the sheet definition and the documentation of each field, it's nice to put everything in one place:
fields = (
FieldDoc('Column Header', 'column_key', parser, 'Column description', is_required=True),
)But this seems like scope creep for Tribune itself. Perhaps we could address this by making the Field type extensible. This could be accomplished several ways.
- Use make it a super class
Instead of using a namedtuple, turn Field into a class that can be inherited. As long as children classes have the necessary fields of header, key, parser, they can add as much as they want, including documentation metadata.
- Allow
Fieldto take an additionalmetadatafield.
Keep Field as a namedtuple but add one more field to be used for anything the end-coder needs:
Field = namedtuple('Field', ['label', 'key', 'parser', 'metadata'])Ideally we'd make this metadata field optional and default it to None or something. That can be achieved several ways that I won't mention here.
The nice thing about option #2 is that in maintains the immutable nature of tuples and it's still very simple.