If a CTD with a missing required attribute is parsed, one gets the following cryptic error: add() takes exactly 2 arguments (1 given) Tracing this back, it's because of the following invocation: base.add(**setup) when the `setup` dictionary is missing the `name` key.