-
Notifications
You must be signed in to change notification settings - Fork 186
Description
This example from readthedocs fails on the last line with
AttributeError: 'NoneType' object has no attribute 'role'
from treelib import Tree
# Employee data structure
class Employee:
def __init__(self, name, role, salary):
self.name = name
self.role = role
self.salary = salary
def __str__(self):
return f"{self.name} ({self.role})"
# Create tree with custom data
tree = Tree()
tree.create_node("Company", "company")
# Add employees with rich data
tree.create_node("Alice", "alice", parent="company",
data=Employee("Alice Johnson", "CTO", 150000))
tree.create_node("Bob", "bob", parent="alice",
data=Employee("Bob Smith", "Senior Developer", 120000))
# Display with custom data property
tree.show(data_property="role")
OS: ubuntu 24.04
Python version: 3.11
Full stacktrace:
~/Anaconda3-2024.02-1/lib/python3.11/site-packages/treelibtree.py:1818, in Tree.show(self, nid, level, idhidden, filter, key, reverse, line_type, data_property, stdout, sorting)
1815 self._reader += line.decode("utf-8") + "\n"
1817 try:
-> 1818 self.__print_backend(
1819 nid,
1820 level,
1821 idhidden,
1822 filter,
1823 key,
1824 reverse,
1825 line_type,
1826 data_property,
1827 sorting,
1828 func=write,
1829 )
1830 except NodeIDAbsentError:
1831 print("Tree is empty")
File ~/Anaconda3-2024.02-1/lib/python3.11/site-packages/treelib/tree.py:489, in Tree.__print_backend(self, nid, level, idhidden, filter, key, reverse, line_type, data_property, sorting, func)
487 # iter with func
488 for pre, node in self.__get(nid, level, filter, key, reverse, line_type, sorting):
--> 489 label = get_label(node)
490 func("{0}{1}".format(pre, label).encode("utf-8"))
File ~/Anaconda3-2024.02-1/lib/python3.11/site-packages/treelib/tree.py:460, in Tree.__print_backend..get_label(node)
459 def get_label(node: Node) -> str:
--> 460 return getattr(node.data, data_property)
AttributeError: 'NoneType' object has no attribute 'role'