code: def apply_project(
      batch: Batch, project_list: List[AbstractExpression]
  ):
      if not batch.empty() and project_list:
          batches = [expr.evaluate(batch) for expr in project_list]
          batch = Batch.merge_column_wise(batches)
  
      return batch
  
imports: import glob
  import os
  from pathlib import Path
  from typing import TYPE_CHECKING, Generator, List, Union
  from evadb.catalog.catalog_utils import xform_column_definitions_to_catalog_entries
  from evadb.catalog.models.utils import TableCatalogEntry
  from evadb.parser.create_statement import ColumnDefinition
  from evadb.catalog.catalog_type import TableType, VectorStoreType
  from evadb.expression.abstract_expression import AbstractExpression
  from evadb.expression.function_expression import FunctionExpression
  from evadb.models.storage.batch import Batch
  from evadb.parser.table_ref import TableInfo
  from evadb.parser.types import FileFormatType
  from evadb.readers.document.registry import SUPPORTED_TYPES
  from evadb.utils.generic_utils import try_to_import_cv2
  from evadb.utils.logging_manager import logger
label_desc: Use image node_id 2 for calling a global function with example usage: apply_project(batch, project_list) and returns: batch