From 33ded0d90e84f577cd1c0aa9ff0da38eebf4efa4 Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Sun, 12 May 2019 17:14:25 +0200 Subject: [PATCH] Doc: Doctest for Tree generator --- mapytex/calculus/core/random/__init__.py | 27 ++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/mapytex/calculus/core/random/__init__.py b/mapytex/calculus/core/random/__init__.py index e7af569..3900fe0 100644 --- a/mapytex/calculus/core/random/__init__.py +++ b/mapytex/calculus/core/random/__init__.py @@ -38,18 +38,34 @@ Tree with RdLeaf replaced by generated values :example: >>> from ..tree import Tree ->>> rd_t = Tree("+", RdLeaf("a"), RdLeaf("a*k")) +>>> rd_t = Tree("/", RdLeaf("a"), RdLeaf("a*k")) >>> print(rd_t) -+ +/ > {a} > {a*k} ->>> extract_rdleaf(rd_t) +>>> leafs = extract_rdleaf(rd_t) +>>> leafs ['a', 'a*k'] +>>> rd_varia = extract_rv(leafs) +>>> rd_varia # doctest: +SKIP +{'a', 'k'} +>>> generated = random_generator(rd_varia, conditions=['a%2+1']) +>>> generated # doctest: +SKIP +{'a': 7, 'k': 4} +>>> computed = compute_leafs(leafs, generated) +>>> computed # doctest: +SKIP +{'a': 7, 'a*k': 28} +>>> replaced = replace_rdleaf(rd_t, computed) +>>> print(replaced) # doctest: +SKIP +/ + > 7 + > 28 """ from random import choice +from functools import reduce from .leaf import RdLeaf def extract_rdleaf(tree): @@ -125,7 +141,6 @@ def replace_rdleaf(tree, computed_leafs): return leaf return tree.map_on_leaf(replace) - def random_generator(rd_variables, conditions = [], rejected = [0], @@ -170,6 +185,10 @@ def random_generator(rd_variables, ).difference(complete_scope[v]["rejected"])) for v in rd_variables} + # quantity_choices = reduce(lambda x,y : x*y, + # [len(choices_list[v]) for v in choices_list]) + # TODO: améliorer la méthode de rejet avec un cache |dim. mai 12 17:04:11 CEST 2019 + generate_variable = {v: choice(choices_list[v]) for v in rd_variables} while not all([eval(c, __builtins__, generate_variable) for c in conditions]):