class_docstr: Stores clauses in a SQL query that should be rewritten when a node is reduced.
docstr: Combine the WHERE clauses in this with the additional clauses to form a single WHERE clause.
code: def combine_wheres(
      self, additional_where_clauses: List[SqlExpressionNode]
  ) -> Optional[SqlExpressionNode]:
      """Combine the WHERE clauses in this with the additional clauses to form a single WHERE clause."""
      all_where_clauses = self.wheres + additional_where_clauses
      if len(all_where_clauses) == 1:
          return all_where_clauses[0]
      elif len(all_where_clauses) > 1:
          return SqlLogicalExpression(
              operator=SqlLogicalOperator.AND,
              args=tuple(all_where_clauses),
          )
      return None
  
imports: from __future__ import annotations
  import logging
  from dataclasses import dataclass
  from typing import List, Optional, Sequence, Tuple
  from metricflow.sql.optimizer.sql_query_plan_optimizer import SqlQueryPlanOptimizer
  from metricflow.sql.sql_exprs import SqlColumnAliasReferenceExpression, SqlColumnReference, SqlColumnReplacements, SqlExpressionNode, SqlExpressionTreeLineage, SqlLogicalExpression, SqlLogicalOperator
  from metricflow.sql.sql_plan import SqlJoinDescription, SqlOrderByDescription, SqlQueryPlanNode, SqlQueryPlanNodeVisitor, SqlSelectColumn, SqlSelectQueryFromClauseNode, SqlSelectStatementNode, SqlTableFromClauseNode
label_desc: Use image node_id 2 for calling the RewritableSqlClauses obj's underlying member method code with example usage: obj.combine_wheres(additional_where_clauses) and returns: None, all_where_clauses, SqlLogicalExpression