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","."]
docstr: Whether self is a subtype of other.
  
  A subtype can always be used where its supertype is expected, although the reverse
  may not be true
docstr_tok: ["Whether","self","is","a","subtype","of","other",".","A","subtype","can","always","be","used","where","its","supertype","is","expected",",","although","the","reverse","may","not","be","true"]
code: def is_subtype_of(self, other: InferenceSignalNode) -> bool:
      """Whether self is a subtype of other.
  
      A subtype can always be used where its supertype is expected, although the reverse
      may not be true
      """
      return other == self or other in self.supertypes
  
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 4 for calling the InferenceSignalNode obj's underlying member method code with example usage: obj.is_subtype_of(other) and returns: unknown