class_docstr: Maintain context information for the optimizer
  
  Arguments:
      _task_queue(OptimizerTaskStack):
          stack to keep track outstanding tasks
class_docstr_tok: ["Maintain","context","information","for","the","optimizer","Arguments",":","_task_queue","(","OptimizerTaskStack",")",":","stack","to","keep","track","outstanding","tasks"]
code: def __init__(
      self,
      db: EvaDBDatabase,
      cost_model: CostModel,
      rules_manager: RulesManager = None,
  ):
      self._db = db
      self._task_stack = OptimizerTaskStack()
      self._memo = Memo()
      self._cost_model = cost_model
      # check if ray is enabled
      is_ray_enabled = (
          self.db.catalog().get_configuration_catalog_value("ray")
      )
      self._rules_manager = rules_manager or RulesManager(
          {"ray": is_ray_enabled}
      )
  
file_path: evadb/evadb/optimizer/optimizer_context.py
imports: import copy
  from evadb.constants import UNDEFINED_GROUP_ID
  from evadb.database import EvaDBDatabase
  from evadb.optimizer.cost_model import CostModel
  from evadb.optimizer.group_expression import GroupExpression
  from evadb.optimizer.memo import Memo
  from evadb.optimizer.operators import Dummy, Operator
  from evadb.optimizer.optimizer_task_stack import OptimizerTaskStack
  from evadb.optimizer.rules.rules_manager import RulesManager
label_desc: Use image node_id 1 to create a new OptimizerContext object  with example: obj = OptimizerContext(db, cost_model, rules_manager)