class_docstr: Base class to define any optimization rule
  
  Arguments:
      rule_type(RuleType): type of the rule, can be rewrite,
          logical->physical
      pattern: the match pattern for the rule
code: def __init__(self, rule_type: RuleType, pattern=None):
      self._pattern = pattern
      self._rule_type = rule_type
  
imports: from __future__ import annotations
  from abc import ABC, abstractmethod
  from enum import Flag, IntEnum, auto
  from typing import TYPE_CHECKING
  from evadb.optimizer.operators import Operator
label_desc: Use image node_id 1 to create a new Rule object from inherited base classes: ABC with example: obj = Rule(rule_type, pattern)