def METHOD_NAME(self, parent=""):
    """Return a generator to all attributes."""
    attrs_rec = []
    sep = "." if parent else ""
    for attr in dir(self):
        attr = attr.replace("-", "_")
        child = getattr(self, attr)
        if isinstance(child, Traversable):
            attrs_rec.extend(child.METHOD_NAME(parent=f"{parent}{sep}{attr}"))
        else:
            attrs_rec.append(f"{parent}{sep}{attr}")
    yield from attrs_rec