Running the following example:
---
version: '2.0'
test.yaql_diff:
output:
result: <% $.diff %>
task-defaults:
on-error:
- fail
tasks:
prepare_data:
publish:
old:
- a: 1
- b: 2
- c: 3
new:
- b1: 11
- c: 3
- d: 4
on-success:
- process_data
process_data:
publish:
diff: <% let(new => $.new, old => $.old) -> $new.toSet().difference($old.toSet()) %>
leads to:
test.yaql_diff (c8812e1b-7326-4367-a5de-7ebc3f9db792) [state=ERROR, state_info=Failed to handle action completion [error=Can not evaluate YAQL expression [expression=let(new => $.new, old => $.old) -> $new.toSet().difference($old.toSet()), error=unhashable type: 'dict', data={}], wf=test.yaql_diff, task=process_data, action=std.noop]:
Traceback (most recent call last):
File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/expressions/yaql_expression.py", line 50, in evaluate
context=expression_utils.get_yaql_context(data_context)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 168, in evaluate
return self(utils.NO_VALUE, context, self.engine)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 156, in __call__
return super(Statement, self).__call__(receiver, context, engine)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 37, in __call__
return context(self.name, engine, receiver, context)(*self.args)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/contexts.py", line 65, in <lambda>
data_context, use_convention, function_filter)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 49, in call
name, all_overloads, engine, receiver, data_context, args, kwargs)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 117, in choose_overload
args = tuple(arg_evaluator(i, arg) for i, arg in enumerate(args))
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 117, in <genexpr>
args = tuple(arg_evaluator(i, arg) for i, arg in enumerate(args))
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 113, in <lambda>
and not isinstance(arg, expressions.Constant))
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 37, in __call__
return context(self.name, engine, receiver, context)(*self.args)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/contexts.py", line 65, in <lambda>
data_context, use_convention, function_filter)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 51, in call
result = delegate()
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 142, in <lambda>
return lambda: delegate()
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/specs.py", line 346, in func
six.iteritems(keyword_args)))
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/standard_library/system.py", line 230, in send_context
return right(left)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/yaqltypes.py", line 293, in func
engine, args, kwargs)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/yaqltypes.py", line 260, in _call
result = value(receiver, context, engine)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 37, in __call__
return context(self.name, engine, receiver, context)(*self.args)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/contexts.py", line 65, in <lambda>
data_context, use_convention, function_filter)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 49, in call
name, all_overloads, engine, receiver, data_context, args, kwargs)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 117, in choose_overload
args = tuple(arg_evaluator(i, arg) for i, arg in enumerate(args))
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 117, in <genexpr>
args = tuple(arg_evaluator(i, arg) for i, arg in enumerate(args))
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 113, in <lambda>
and not isinstance(arg, expressions.Constant))
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 37, in __call__
return context(self.name, engine, receiver, context)(*self.args)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/contexts.py", line 65, in <lambda>
data_context, use_convention, function_filter)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 51, in call
result = delegate()
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 142, in <lambda>
return lambda: delegate()
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/specs.py", line 346, in func
six.iteritems(keyword_args)))
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/standard_library/system.py", line 63, in op_dot
return expr(receiver)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/yaqltypes.py", line 293, in func
engine, args, kwargs)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/yaqltypes.py", line 260, in _call
result = value(receiver, context, engine)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 37, in __call__
return context(self.name, engine, receiver, context)(*self.args)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/contexts.py", line 65, in <lambda>
data_context, use_convention, function_filter)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 51, in call
result = delegate()
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 142, in <lambda>
return lambda: delegate()
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/specs.py", line 346, in func
six.iteritems(keyword_args)))
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/standard_library/collections.py", line 1103, in to_set
return frozenset(collection)
TypeError: unhashable type: 'dict'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/engine/task_handler.py", line 110, in _on_action_complete
task.on_action_complete(action_ex)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/osprofiler/profiler.py", line 158, in wrapper
result = f(*args, **kwargs)
File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/engine/tasks.py", line 381, in on_action_complete
self.complete(state, state_info)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/osprofiler/profiler.py", line 158, in wrapper
result = f(*args, **kwargs)
File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/engine/tasks.py", line 221, in complete
data_flow.publish_variables(self.task_ex, self.task_spec)
File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/workflow/data_flow.py", line 215, in publish_variables
task_ex.published = expr.evaluate_recursively(branch_vars, expr_ctx)
File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/expressions/__init__.py", line 100, in evaluate_recursively
data[key] = _evaluate_item(data[key], context)
File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/expressions/__init__.py", line 79, in _evaluate_item
return evaluate(item, context)
File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/expressions/__init__.py", line 71, in evaluate
return evaluator.evaluate(expression, context)
File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/expressions/yaql_expression.py", line 119, in evaluate
cls).evaluate(trim_expr, data_context)
File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/expressions/yaql_expression.py", line 73, in evaluate
", data=%s]" % (expression, str(e), data_context)
mistral.exceptions.YaqlEvaluationException: Can not evaluate YAQL expression [expression=let(new => $.new, old => $.old) -> $new.toSet().difference($old.toSet()), error=unhashable type: 'dict', data={}]
, output={'old': [{'a': 1}, {'b': 2}, {'c': 3}], 'new': [{'b1': 11}, {'c': 3}, {'d': 4}], 'result': 'Failed to handle action completion [error=Can not evaluate YAQL expression [expression=let(new => $.new, old => $.old) -> $new.toSet().difference($old.toSet()), error=unhashable type: \'dict\', data={}], wf=test.yaql_diff, task=process_data, action=std.noop]:\nTraceback (most recent call last):\n File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/expressions/yaql_expression.py", line 50, in evaluate\n context=expression_utils.get_yaql_context(data_context)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 168, in evaluate\n return self(utils.NO_VALUE, context, self.engine)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 156, in __call__\n return super(Statement, self).__call__(receiver, context, engine)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 37, in __call__\n return context(self.name, engine, receiver, context)(*self.args)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/contexts.py", line 65, in <lambda>\n data_context, use_convention, function_filter)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 49, in call\n name, all_overloads, engine, receiver, data_context, args, kwargs)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 117, in choose_overload\n args = tuple(arg_evaluator(i, arg) for i, arg in enumerate(args))\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 117, in <genexpr>\n args = tuple(arg_evaluator(i, arg) for i, arg in enumerate(args))\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 113, in <lambda>\n and not isinstance(arg, expressions.Constant))\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 37, in __call__\n return context(self.name, engine, receiver, context)(*self.args)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/contexts.py", line 65, in <lambda>\n data_context, use_convention, function_filter)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 51, in call\n result = delegate()\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 142, in <lambda>\n return lambda: delegate()\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/specs.py", line 346, in func\n six.iteritems(keyword_args)))\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/standard_library/system.py", line 230, in send_context\n return right(left)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/yaqltypes.py", line 293, in func\n engine, args, kwargs)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/yaqltypes.py", line 260, in _call\n result = value(receiver, context, engine)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 37, in __call__\n return context(self.name, engine, receiver, context)(*self.args)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/contexts.py", line 65, in <lambda>\n data_context, use_convention, function_filter)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 49, in call\n name, all_overloads, engine, receiver, data_context, args, kwargs)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 117, in choose_overload\n args = tuple(arg_evaluator(i, arg) for i, arg in enumerate(args))\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 117, in <genexpr>\n args = tuple(arg_evaluator(i, arg) for i, arg in enumerate(args))\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 113, in <lambda>\n and not isinstance(arg, expressions.Constant))\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 37, in __call__\n return context(self.name, engine, receiver, context)(*self.args)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/contexts.py", line 65, in <lambda>\n data_context, use_convention, function_filter)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 51, in call\n result = delegate()\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 142, in <lambda>\n return lambda: delegate()\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/specs.py", line 346, in func\n six.iteritems(keyword_args)))\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/standard_library/system.py", line 63, in op_dot\n return expr(receiver)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/yaqltypes.py", line 293, in func\n engine, args, kwargs)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/yaqltypes.py", line 260, in _call\n result = value(receiver, context, engine)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 37, in __call__\n return context(self.name, engine, receiver, context)(*self.args)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/contexts.py", line 65, in <lambda>\n data_context, use_convention, function_filter)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 51, in call\n result = delegate()\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 142, in <lambda>\n return lambda: delegate()\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/specs.py", line 346, in func\n six.iteritems(keyword_args)))\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/standard_library/collections.py", line 1103, in to_set\n return frozenset(collection)\nTypeError: unhashable type: \'dict\'\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/engine/task_handler.py", line 110, in _on_action_complete\n task.on_action_complete(action_ex)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/osprofiler/profiler.py", line 158, in wrapper\n result = f(*args, **kwargs)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/engine/tasks.py", line 381, in on_action_complete\n self.complete(state, state_info)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/osprofiler/profiler.py", line 158, in wrapper\n result = f(*args, **kwargs)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/engine/tasks.py", line 221, in complete\n data_flow.publish_variables(self.task_ex, self.task_spec)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/workflow/data_flow.py", line 215, in publish_variables\n task_ex.published = expr.evaluate_recursively(branch_vars, expr_ctx)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/expressions/__init__.py", line 100, in evaluate_recursively\n data[key] = _evaluate_item(data[key], context)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/expressions/__init__.py", line 79, in _evaluate_item\n return evaluate(item, context)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/expressions/__init__.py", line 71, in evaluate\n return evaluator.evaluate(expression, context)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/expressions/yaql_expression.py", line 119, in evaluate\n cls).evaluate(trim_expr, data_context)\n File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/expressions/yaql_expression.py", line 73, in evaluate\n ", data=%s]" % (expression, str(e), data_context)\nmistral.exceptions.YaqlEvaluationException: Can not evaluate YAQL expression [expression=let(new => $.new, old => $.old) -> $new.toSet().difference($old.toSet()), error=unhashable type: \'dict\', data={}]\n'}]
prepare_data [id=667a1e32-7f51-4af3-9f43-dd324f6cf6b2, state=SUCCESS, state_info=None, processed=True, published={'old': [{'a': 1}, {'b': 2}, {'c': 3}], 'new': [{'b1': 11}, {'c': 3}, {'d': 4}]}]
std.noop [id=2f271f0f-27b5-4eac-a616-040b048f8d73, state=SUCCESS, state_info=None, accepted=True, output={'result': None}]
process_data [id=399c7374-8987-4dfc-bcc0-e7d0c4d979fc, state=ERROR, state_info=Failed to handle action completion [error=Can not evaluate YAQL expression [expression=let(new => $.new, old => $.old) -> $new.toSet().difference($old.toSet()), error=unhashable type: 'dict', data={}], wf=test.yaql_diff, task=process_data, action=std.noop]:
Traceback (most recent call last):
File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/expressions/yaql_expression.py", line 50, in evaluate
context=expression_utils.get_yaql_context(data_context)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 168, in evaluate
return self(utils.NO_VALUE, context, self.engine)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 156, in __call__
return super(Statement, self).__call__(receiver, context, engine)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 37, in __call__
return context(self.name, engine, receiver, context)(*self.args)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/contexts.py", line 65, in <lambda>
data_context, use_convention, function_filter)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 49, in call
name, all_overloads, engine, receiver, data_context, args, kwargs)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 117, in choose_overload
args = tuple(arg_evaluator(i, arg) for i, arg in enumerate(args))
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 117, in <genexpr>
args = tuple(arg_evaluator(i, arg) for i, arg in enumerate(args))
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 113, in <lambda>
and not isinstance(arg, expressions.Constant))
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 37, in __call__
return context(self.name, engine, receiver, context)(*self.args)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/contexts.py", line 65, in <lambda>
data_context, use_convention, function_filter)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 51, in call
result = delegate()
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 142, in <lambda>
return lambda: delegate()
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/specs.py", line 346, in func
six.iteritems(keyword_args)))
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/standard_library/system.py", line 230, in send_context
return right(left)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/yaqltypes.py", line 293, in func
engine, args, kwargs)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/yaqltypes.py", line 260, in _call
result = value(receiver, context, engine)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 37, in __call__
return context(self.name, engine, receiver, context)(*self.args)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/contexts.py", line 65, in <lambda>
data_context, use_convention, function_filter)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 49, in call
name, all_overloads, engine, receiver, data_context, args, kwargs)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 117, in choose_overload
args = tuple(arg_evaluator(i, arg) for i, arg in enumerate(args))
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 117, in <genexpr>
args = tuple(arg_evaluator(i, arg) for i, arg in enumerate(args))
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 113, in <lambda>
and not isinstance(arg, expressions.Constant))
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 37, in __call__
return context(self.name, engine, receiver, context)(*self.args)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/contexts.py", line 65, in <lambda>
data_context, use_convention, function_filter)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 51, in call
result = delegate()
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 142, in <lambda>
return lambda: delegate()
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/specs.py", line 346, in func
six.iteritems(keyword_args)))
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/standard_library/system.py", line 63, in op_dot
return expr(receiver)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/yaqltypes.py", line 293, in func
engine, args, kwargs)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/yaqltypes.py", line 260, in _call
result = value(receiver, context, engine)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/expressions.py", line 37, in __call__
return context(self.name, engine, receiver, context)(*self.args)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/contexts.py", line 65, in <lambda>
data_context, use_convention, function_filter)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 51, in call
result = delegate()
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/runner.py", line 142, in <lambda>
return lambda: delegate()
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/language/specs.py", line 346, in func
six.iteritems(keyword_args)))
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/yaql/standard_library/collections.py", line 1103, in to_set
return frozenset(collection)
TypeError: unhashable type: 'dict'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/engine/task_handler.py", line 110, in _on_action_complete
task.on_action_complete(action_ex)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/osprofiler/profiler.py", line 158, in wrapper
result = f(*args, **kwargs)
File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/engine/tasks.py", line 381, in on_action_complete
self.complete(state, state_info)
File "/Users/renat/workspace/openstack/mistral_group/mistral/.tox/py35/lib/python3.5/site-packages/osprofiler/profiler.py", line 158, in wrapper
result = f(*args, **kwargs)
File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/engine/tasks.py", line 221, in complete
data_flow.publish_variables(self.task_ex, self.task_spec)
File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/workflow/data_flow.py", line 215, in publish_variables
task_ex.published = expr.evaluate_recursively(branch_vars, expr_ctx)
File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/expressions/__init__.py", line 100, in evaluate_recursively
data[key] = _evaluate_item(data[key], context)
File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/expressions/__init__.py", line 79, in _evaluate_item
return evaluate(item, context)
File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/expressions/__init__.py", line 71, in evaluate
return evaluator.evaluate(expression, context)
File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/expressions/yaql_expression.py", line 119, in evaluate
cls).evaluate(trim_expr, data_context)
File "/Users/renat/workspace/openstack/mistral_group/mistral/mistral/expressions/yaql_expression.py", line 73, in evaluate
", data=%s]" % (expression, str(e), data_context)
mistral.exceptions.YaqlEvaluationException: Can not evaluate YAQL expression [expression=let(new => $.new, old => $.old) -> $new.toSet().difference($old.toSet()), error=unhashable type: 'dict', data={}]
, processed=False, published={}]
std.noop [id=46757c39-863e-421b-acb1-98b38d43efd0, state=SUCCESS, state_info=None, accepted=True, output={'result': None}]
Ok, the problem is in toSet(). We can't add dicts to a set.