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
« 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
8"""filter"""
10from sqlparse import lexer
11from sqlparse.engine import grouping
12from sqlparse.engine.statement_splitter import StatementSplitter
15class FilterStack:
16 def __init__(self):
17 self.preprocess = []
18 self.stmtprocess = []
19 self.postprocess = []
20 self._grouping = False
22 def enable_grouping(self):
23 self._grouping = True
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)
31 stream = StatementSplitter().process(stream)
33 # Output: Stream processed Statements
34 for stmt in stream:
35 if self._grouping:
36 stmt = grouping.group(stmt)
38 for filter_ in self.stmtprocess:
39 filter_.process(stmt)
41 for filter_ in self.postprocess:
42 stmt = filter_.process(stmt)
44 yield stmt