Skip to content

Example for Working with Custom Data fails on show(data_property) #241

@mpound

Description

@mpound

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'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions