Coverage for packages/sql-smith/src/sql_smith/partial/expression.py: 100%
12 statements
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
1from sql_smith.interfaces import EngineInterface, ExpressionInterface
4class Expression(ExpressionInterface):
5 def __init__(self, pattern: str, *args: "StatementInterface"):
6 self._pattern = pattern
7 self._replacements = args
9 def append(
10 self, pattern: str, *args: "StatementInterface"
11 ) -> "ExpressionInterface":
12 merged = [*self._replacements, *args]
13 return Expression("{} {}".format(self._pattern, pattern), *merged)
15 def sql(self, engine: "EngineInterface") -> str:
16 return self._pattern.format(*map(engine.extract_sql(), self._replacements))
18 def params(self, engine: "EngineInterface") -> tuple:
19 return engine.flatten_params(*self._replacements)