Dynamic inheritance in OptionTrees #796
I looked into the possibility of defining a utility to replace this code for generating a string specification:
components = (obj.__class__.__name__, group_sanitizer(obj.group), label_sanitizer(obj.label)) '.'.join([c for c in components if c])
But decided this pattern doesn't appear often enough in the codebase to bother with after grepping for
Having added unit tests to ensure the new dynamic inheritance keeps working, I think this PR is now ready for a review/merge.