colour.utilities.TreeNode#

class colour.utilities.TreeNode(*args: Any, **kwargs: Any)[source]#

Bases: object

Represent a basic node supporting the creation of basic node trees.

Parameters:
  • name – Node name.

  • parent – Parent of the node.

  • children – Children of the node.

  • data – The data belonging to this node.

  • args (Any)

  • kwargs (Any)

Return type:

Self

Attributes

Methods

Examples

>>> node_a = TreeNode("Node A")
>>> node_b = TreeNode("Node B", node_a)
>>> node_c = TreeNode("Node C", node_a)
>>> node_d = TreeNode("Node D", node_b)
>>> node_e = TreeNode("Node E", node_b)
>>> node_f = TreeNode("Node F", node_d)
>>> node_g = TreeNode("Node G", node_f)
>>> node_h = TreeNode("Node H", node_g)
>>> [node.name for node in node_a.leaves]
['Node H', 'Node E', 'Node C']
>>> print(node_h.root.name)
Node A
>>> len(node_a)
7

Return a new instance of the colour.utilities.Node class.

Parameters:
  • args (Any) – Arguments.

  • kwargs (Any) – Keywords arguments.

Return type:

Self

static __new__(cls, *args: Any, **kwargs: Any) Self[source]#

Return a new instance of the colour.utilities.Node class.

Parameters:
  • args (Any) – Arguments.

  • kwargs (Any) – Keywords arguments.

Return type:

Self

__init__(name: str | None = None, parent: Self | None = None, children: List[Self] | None = None, data: Any | None = None) None[source]#
Parameters:
Return type:

None

property id: int#

Getter property for the node id.

Returns:

Node id.

Return type:

int

property name: str#

Getter and setter property for the name.

Parameters:

value – Value to set the name with.

Returns:

Node name.

Return type:

str

property parent: Self | None#

Getter and setter property for the node parent.

Parameters:

value – Parent to set the node with.

Returns:

Node parent.

Return type:

Node or None

property children: List[Self]#

Getter and setter property for the node children.

Parameters:

value – Children to set the node with.

Returns:

Node children.

Return type:

list

property root: Self#

Getter property for the node tree.

Returns:

Node root.

Return type:

TreeNode

property leaves: Generator#

Getter property for the node leaves.

Yields:

Generator – Node leaves.

property siblings: Generator#

Getter property for the node siblings.

Returns:

Node siblings.

Return type:

Generator

property data: Any#

Getter property for the node data.

Returns:

Node data.

Return type:

object

__str__() str[source]#

Return a formatted string representation of the node.

Returns:

Formatted string representation.

Return type:

class`str`

__len__() int[source]#

Return the number of children of the node.

Returns:

Number of children of the node.

Return type:

int

is_root() bool[source]#

Return whether the node is a root node.

Returns:

Whether the node is a root node.

Return type:

bool

Examples

>>> node_a = TreeNode("Node A")
>>> node_b = TreeNode("Node B", node_a)
>>> node_c = TreeNode("Node C", node_b)
>>> node_a.is_root()
True
>>> node_b.is_root()
False
is_inner() bool[source]#

Return whether the node is an inner node.

Returns:

Whether the node is an inner node.

Return type:

bool

Examples

>>> node_a = TreeNode("Node A")
>>> node_b = TreeNode("Node B", node_a)
>>> node_c = TreeNode("Node C", node_b)
>>> node_a.is_inner()
False
>>> node_b.is_inner()
True
is_leaf() bool[source]#

Return whether the node is a leaf node.

Returns:

Whether the node is a leaf node.

Return type:

bool

Examples

>>> node_a = TreeNode("Node A")
>>> node_b = TreeNode("Node B", node_a)
>>> node_c = TreeNode("Node C", node_b)
>>> node_a.is_leaf()
False
>>> node_c.is_leaf()
True
walk_hierarchy(ascendants: bool = False) Generator[source]#

Return a generator used to walk into colour.utilities.Node tree.

Parameters:

ascendants (bool) – Whether to walk up the node tree.

Yields:

Generator – Node tree walker.

Return type:

Generator

Examples

>>> node_a = TreeNode("Node A")
>>> node_b = TreeNode("Node B", node_a)
>>> node_c = TreeNode("Node C", node_a)
>>> node_d = TreeNode("Node D", node_b)
>>> node_e = TreeNode("Node E", node_b)
>>> node_f = TreeNode("Node F", node_d)
>>> node_g = TreeNode("Node G", node_f)
>>> node_h = TreeNode("Node H", node_g)
>>> for node in node_a.walk_hierarchy():
...     print(node.name)
Node B
Node D
Node F
Node G
Node H
Node E
Node C
render(tab_level: int = 0)[source]#

Render the current node and its children as a string.

Parameters:

tab_level (int) – Initial indentation level

Returns:

Rendered node tree.

Return type:

str

Examples

>>> node_a = TreeNode("Node A")
>>> node_b = TreeNode("Node B", node_a)
>>> node_c = TreeNode("Node C", node_a)
>>> print(node_a.render())
|----"Node A"
    |----"Node B"
    |----"Node C"
__weakref__#

list of weak references to the object