code: def __eq__(self, other):
      if not (
          isinstance(other, CanonicalEdgeType)
          or isinstance(other, _typing.Sequence)
      ):
          return False
      elif isinstance(other, _typing.Sequence):
          if not (
              len(other) == 3
              and all(
                  [(isinstance(t, str) and " " not in t) for t in other]
              )
          ):
              raise TypeError
          return (
              other[0] == self.source_node_type
              and other[1] == self.relation_type
              and other[2] == self.target_node_type
          )
      elif isinstance(other, CanonicalEdgeType):
          return (
              other.source_node_type == self.source_node_type
              and other.relation_type == self.relation_type
              and other.target_node_type == self.target_node_type
          )
  
file_path: AutoGL/autogl/data/graph/_general_static_graph/_canonical_edge_type.py
imports: import typing
label_desc: Use image node_id 5 for calling the CanonicalEdgeType obj's underlying member method code with example usage: obj.__eq__(other) and returns: False, unknown, unknown