arg_context.py 898 B

12345678910111213141516171819202122232425262728
  1. # Copyright Materialize, Inc. and contributors. All rights reserved.
  2. #
  3. # Use of this software is governed by the Business Source License
  4. # included in the LICENSE file at the root of this repository.
  5. #
  6. # As of the Change Date specified in that file, in accordance with
  7. # the Business Source License, use of this software will be governed
  8. # by the Apache License, Version 2.0.
  9. from materialize.output_consistency.expression.expression import Expression
  10. class ArgContext:
  11. def __init__(self) -> None:
  12. self.args: list[Expression] = []
  13. self.contains_aggregation = False
  14. def append(self, arg: Expression) -> None:
  15. self.args.append(arg)
  16. if arg.is_aggregate:
  17. self.contains_aggregation = True
  18. def has_no_args(self) -> bool:
  19. return len(self.args) == 0
  20. def requires_aggregation(self) -> bool:
  21. return self.contains_aggregation