def test_eval_tag_exprs_parentheses(test_sets): sets = test_sets res1 = eval_tag_expr('(whole ! even) | fivesix',sets) res2 = eval_tag_expr('whole ! (even | fivesix)',sets) assert res1 != res2, "`(whole ! even) | fivesix` is not equal to `whole ! (even | fivesix)`" assert sorted(list(res1)) == [1,3,5,6,7,9], "Correct result for: `(whole ! even) | fivesix`" assert sorted(list(res2)) == [1,3,7,9], "Correct result for: `whole ! (even | fivesix)`"
def run_sel_page(self, index, conf, page_data, indextemplate, runtags): table = [] # defining columns for the table cols = ["Run"] + [field["label"] for k, field in conf["fields"].items()] toc_path = [] #evaluate tag selection expression in configuration sel_runs = parse.eval_tag_expr(expr=conf['tags_sel'],retr_val=runtags) # Create run list page for run in sorted(sel_runs): toc_path.append("runs/" + run) row = {"Run": ":ref:`{}`".format(run)} for field, settings in conf["fields"].items(): row[settings["label"]] = str( nested_access(page_data[run], *(settings["sources"][0].split("."))) ) table.append(row) table_rendered = sphinx.simple_tbl(table, cols) toc_rendered = sphinx.toc(toc_path, hidden="") indexpage = indextemplate.render( title=conf["title"], tables={conf["title"]: {"table": table_rendered, "toc": toc_rendered}}, ) with open(os.path.join(self.display_path, "source", f"{index}.rst"), "w") as f: f.writelines(indexpage) self.n_pages_generated +=1
def test_eval_tag_exprs_multi_parentheses(test_sets): sets = test_sets res = eval_tag_expr('whole & (even | fivesix | fivesix ) ! (odd | fivesix)',sets) assert sorted(list(res)) == [0,2,4,8]
def test_eval_tag_exprs_nested_parentheses(test_sets): sets = test_sets res = eval_tag_expr('fivesix | (whole & (even & fivesix))',sets) assert sorted(list(res)) == [5,6],"Correct result for: `fivesix | (whole & (even & fivesix))`" res = eval_tag_expr('(fivesix | whole) & (even & fivesix)',sets) assert sorted(list(res)) == [6], "Correct result for: `(fivesix | whole) & (even & fivesix)`"
def test_eval_tag_exprs_andnot(test_sets): sets = test_sets res = eval_tag_expr('fivesix ! even',sets) assert list(res) == [5], "Picking out 5 using andnot" res = eval_tag_expr('even ! fivesix',sets) assert sorted(list(res)) == [0,2,4,8], "Picking out all even except 6 by reversing order (andnot is not unary)"
def test_eval_tag_exprs_or(test_sets): sets = test_sets res = eval_tag_expr('odd | even',sets) assert list(res) == sets['whole'], "odd `or` even makes whole"
def test_eval_tag_exprs_and(test_sets): sets = test_sets res = eval_tag_expr('whole & even',sets) assert list(res) == sets['even'], "Picking out even numbers from the whole set"