Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/sqlparse/engine/filter_stack.py: 27%

25 statements  

« prev     ^ index     » next       coverage.py v6.4.4, created at 2023-07-17 14:22 -0600

1# 

2# Copyright (C) 2009-2020 the sqlparse authors and contributors 

3# <see AUTHORS file> 

4# 

5# This module is part of python-sqlparse and is released under 

6# the BSD License: https://opensource.org/licenses/BSD-3-Clause 

7 

8"""filter""" 

9 

10from sqlparse import lexer 

11from sqlparse.engine import grouping 

12from sqlparse.engine.statement_splitter import StatementSplitter 

13 

14 

15class FilterStack: 

16 def __init__(self): 

17 self.preprocess = [] 

18 self.stmtprocess = [] 

19 self.postprocess = [] 

20 self._grouping = False 

21 

22 def enable_grouping(self): 

23 self._grouping = True 

24 

25 def run(self, sql, encoding=None): 

26 stream = lexer.tokenize(sql, encoding) 

27 # Process token stream 

28 for filter_ in self.preprocess: 

29 stream = filter_.process(stream) 

30 

31 stream = StatementSplitter().process(stream) 

32 

33 # Output: Stream processed Statements 

34 for stmt in stream: 

35 if self._grouping: 

36 stmt = grouping.group(stmt) 

37 

38 for filter_ in self.stmtprocess: 

39 filter_.process(stmt) 

40 

41 for filter_ in self.postprocess: 

42 stmt = filter_.process(stmt) 

43 

44 yield stmt