I prefer snake case. Is the purpose of excluding underscores from Nestable to ensure dunders aren't added? I think changing the line like so would allow me to use snake case:
for prop_name in (x for x in dir(self) if not "__" in x):
That’d do it :)