def makeComputationDefinitionFromIVCs(*args): return CumulusNative.ComputationDefinition.Root( CumulusNative.ImmutableTreeVectorOfComputationDefinitionTerm( [CumulusNative.ComputationDefinitionTerm.Value(ForaNative.ImplValContainer(x), None) for x in args] ) )
def submitComputationOnClient(self, clientIndex, expressionText, **freeVariables): if isinstance(expressionText, ForaNative.ImplValContainer): computationDefinition = CumulusNative.ComputationDefinition.Root( CumulusNative.ImmutableTreeVectorOfComputationDefinitionTerm( [CumulusNative.ComputationDefinitionTerm.Value(x, None) for x in expressionText.getTuple()] ) ) elif isinstance(expressionText, CumulusNative.ComputationDefinition): computationDefinition = expressionText else: varNames = list(freeVariables.keys()) expr = FORA.eval("fun(" + ",".join(varNames) + ") {" + expressionText + " } ") computationDefinition = createComputationDefinition( FORA.extractImplValContainer( expr ), ForaNative.makeSymbol("Call"), *[freeVariables[v] for v in varNames] ) computationId = self.getClient(clientIndex).createComputation(computationDefinition) self.getClient(clientIndex).setComputationPriority( computationId, CumulusNative.ComputationPriority(1) ) return computationId
def createComputationDefinition(*args): return CumulusNative.ComputationDefinition.Root( CumulusNative.ImmutableTreeVectorOfComputationDefinitionTerm( [CumulusNative.ComputationDefinitionTerm.Value(ForaNative.ImplValContainer(x), None) if not isinstance(x, CumulusNative.ComputationDefinition) else CumulusNative.ComputationDefinitionTerm.Subcomputation(x.asRoot.terms) for x in args] ) )
def cumulusComputationDefinition(self, *args): terms = [] for arg in args: if isinstance(arg, ImplValContainer_): terms.append( CumulusNative.ComputationDefinitionTerm.Value(arg, None)) else: terms.append(arg.computationDefinitionTerm_) return CumulusNative.ComputationDefinition.Root( CumulusNative.ImmutableTreeVectorOfComputationDefinitionTerm( terms))
def cumulusComputationDefinition(self): terms = [] assert self.args is not None, self.__location_class__ for a in self.args: if isinstance(a, (long, int, str, bool)): terms.append(CumulusNative.ComputationDefinitionTerm.Value(ImplValContainer_(a), None)) elif isinstance(a, ImplValContainer_): terms.append(CumulusNative.ComputationDefinitionTerm.Value(a, None)) else: terms.append(a.computationDefinitionTerm_) return CumulusNative.ComputationDefinition.Root( CumulusNative.ImmutableTreeVectorOfComputationDefinitionTerm(terms) )