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

1from sql_smith.interfaces import EngineInterface, ExpressionInterface 

2 

3 

4class Expression(ExpressionInterface): 

5 def __init__(self, pattern: str, *args: "StatementInterface"): 

6 self._pattern = pattern 

7 self._replacements = args 

8 

9 def append( 

10 self, pattern: str, *args: "StatementInterface" 

11 ) -> "ExpressionInterface": 

12 merged = [*self._replacements, *args] 

13 return Expression("{} {}".format(self._pattern, pattern), *merged) 

14 

15 def sql(self, engine: "EngineInterface") -> str: 

16 return self._pattern.format(*map(engine.extract_sql(), self._replacements)) 

17 

18 def params(self, engine: "EngineInterface") -> tuple: 

19 return engine.flatten_params(*self._replacements)