def find_owner(self, type, optional=False): context = helpers.get_context().create_child_context() yaql_engine = helpers.get_yaql_engine(context) context['$1'] = self.object context['$2'] = type expr_str = '$1.find($2)' if not optional: expr_str += '.require()' result = yaql_engine(expr_str).evaluate(context=context) return None if result is None else MuranoObjectInterface(result)
def to_mutable(obj, yaql_engine=None): if yaql_engine is None: yaql_engine = helpers.get_yaql_engine() def converter(value, limit_func, engine, rec): if isinstance(value, dsl_types.MuranoObject): return MuranoObjectInterface(value) else: return utils.convert_output_data(value, limit_func, engine, rec) limiter = lambda it: utils.limit_iterable(it, constants.ITERATORS_LIMIT) return converter(obj, limiter, yaql_engine, converter)
def engine(self): return helpers.get_yaql_engine(self.context)
def __getitem__(self, item): context = helpers.get_context() return to_mutable( self.__object.get_property(item, context), helpers.get_yaql_engine(context))
def yaql(self, receiver=utils.NO_VALUE): return yaql_interface.YaqlInterface( helpers.get_context(), helpers.get_yaql_engine(), receiver)