class_docstr: A node in the inference signal type hierarchy.
  
  This class can be used to assemble a type hierarchy tree. It can be used by heuristics
  to check whether signals produced by rules are conflicting or complementary, relying
  on the property that sibling nodes are mutually exclusive in the hierarchy.
class_docstr_tok: ["A","node","in","the","inference","signal","type","hierarchy",".","This","class","can","be","used","to","assemble","a","type","hierarchy","tree",".","It","can","be","used","by","heuristics","to","check","whether","signals","produced","by","rules","are","conflicting","or","complementary",",","relying","on","the","property","that","sibling","nodes","are","mutually","exclusive","in","the","hierarchy","."]
code: def __init__(
      self, parent: Optional[InferenceSignalNode], name: str
  ) -> None:  # noqa: D
      self.name = name
  
      self.parent = parent
      self.children: List[InferenceSignalNode] = []
  
      if parent is not None:
          parent.children.append(self)
  
file_path: metricflow/metricflow/inference/models.py
imports: from __future__ import annotations
  from abc import ABC
  from dataclasses import dataclass
  from enum import Enum
  from typing import List, Optional
  from metricflow.dataflow.sql_column import SqlColumn
label_desc: Use image node_id 1 to create a new InferenceSignalNode object from inherited base classes: ABC with example: obj = InferenceSignalNode(parent, name)