tacker.api.common.attribute_filter module¶
-
class
tacker.api.common.attribute_filter.
ParseState
¶ Bases:
object
Implement the core of parsing the policy language.
Uses a greedy reduction algorithm to reduce a sequence of tokens into a single terminal, the value of which will be the root of the
Filter
tree.Note
Error reporting is rather lacking. The best we can get with this parser formulation is an overall “parse failed” error. Fortunately, the policy language is simple enough that this shouldn’t be that big a problem.
-
reduce
()¶ Perform a greedy reduction of the token stream.
If a reducer method matches, it will be executed, then the
reduce()
method will be called recursively to search for any more possible reductions.
-
reducers
= [(['(', 'and_expr', ')'], '_wrap_check'), (['(', 'filter', ')'], '_wrap_check'), (['filter', 'and', 'filter'], '_make_and_expr'), (['and_expr', 'and', 'filter'], '_extend_and_expr')]¶
-
property
result
¶ Obtain the final result of the parse.
- Raises
ValueError – If the parse failed to reduce to a single result.
-
-
class
tacker.api.common.attribute_filter.
ParseStateMeta
¶ Bases:
type
Metaclass for the
ParseState
class.Facilitates identifying reduction methods.
-
tacker.api.common.attribute_filter.
parse_filter_rule
(filter_rule, target=None)¶ Parses filter query parameter to the tree.
Translates a filter written in the filter language into a tree of Filter objects.
-
tacker.api.common.attribute_filter.
reducer
(*tokens)¶ Decorator for reduction methods.
Arguments are a sequence of tokens, in order, which should trigger running this reduction method.