code: def from_clause(self, tree):
      from_table = None
      where_clause = None
      groupby_clause = None
      # TODO ACTION Group By
  
      for child in tree.children:
          if isinstance(child, Tree):
              if child.data == "table_sources":
                  from_table = self.visit(child)
              elif child.data == "where_expr":
                  where_clause = self.visit(child)
              elif child.data == "group_by_item":
                  groupby_item = self.visit(child)
                  # TODO: Support multiple group by columns
                  groupby_clause = groupby_item
  
      return {
          "from": from_table,
          "where": where_clause,
          "groupby": groupby_clause,
      }
  
imports: from lark import Token, Tree
  from evadb.expression.tuple_value_expression import TupleValueExpression
  from evadb.parser.select_statement import SelectStatement
  from evadb.parser.table_ref import Alias, JoinNode, TableRef, TableValuedExpression
  from evadb.parser.types import JoinType
  from evadb.utils.logging_manager import logger
label_desc: Use image node_id 7 for calling the TableSources obj's underlying member method code with example usage: obj.from_clause(tree) and returns: dict