aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/jmespath/ast.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/jmespath/ast.py')
-rw-r--r--.venv/lib/python3.12/site-packages/jmespath/ast.py90
1 files changed, 90 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/jmespath/ast.py b/.venv/lib/python3.12/site-packages/jmespath/ast.py
new file mode 100644
index 00000000..dd56c6ed
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/jmespath/ast.py
@@ -0,0 +1,90 @@
+# AST nodes have this structure:
+# {"type": <node type>", children: [], "value": ""}
+
+
+def comparator(name, first, second):
+ return {'type': 'comparator', 'children': [first, second], 'value': name}
+
+
+def current_node():
+ return {'type': 'current', 'children': []}
+
+
+def expref(expression):
+ return {'type': 'expref', 'children': [expression]}
+
+
+def function_expression(name, args):
+ return {'type': 'function_expression', 'children': args, 'value': name}
+
+
+def field(name):
+ return {"type": "field", "children": [], "value": name}
+
+
+def filter_projection(left, right, comparator):
+ return {'type': 'filter_projection', 'children': [left, right, comparator]}
+
+
+def flatten(node):
+ return {'type': 'flatten', 'children': [node]}
+
+
+def identity():
+ return {"type": "identity", 'children': []}
+
+
+def index(index):
+ return {"type": "index", "value": index, "children": []}
+
+
+def index_expression(children):
+ return {"type": "index_expression", 'children': children}
+
+
+def key_val_pair(key_name, node):
+ return {"type": "key_val_pair", 'children': [node], "value": key_name}
+
+
+def literal(literal_value):
+ return {'type': 'literal', 'value': literal_value, 'children': []}
+
+
+def multi_select_dict(nodes):
+ return {"type": "multi_select_dict", "children": nodes}
+
+
+def multi_select_list(nodes):
+ return {"type": "multi_select_list", "children": nodes}
+
+
+def or_expression(left, right):
+ return {"type": "or_expression", "children": [left, right]}
+
+
+def and_expression(left, right):
+ return {"type": "and_expression", "children": [left, right]}
+
+
+def not_expression(expr):
+ return {"type": "not_expression", "children": [expr]}
+
+
+def pipe(left, right):
+ return {'type': 'pipe', 'children': [left, right]}
+
+
+def projection(left, right):
+ return {'type': 'projection', 'children': [left, right]}
+
+
+def subexpression(children):
+ return {"type": "subexpression", 'children': children}
+
+
+def slice(start, end, step):
+ return {"type": "slice", "children": [start, end, step]}
+
+
+def value_projection(left, right):
+ return {'type': 'value_projection', 'children': [left, right]}