def test_parse_problem_replanner_balls_colored(): domain_fname = "pond-benchmarks/cp2fsc-and-replanner-benchmarks/replanner/balls/colored/domain.pddl" problem_fname = "pond-benchmarks/cp2fsc-and-replanner-benchmarks/replanner/balls/colored/n3-b1-c2.pddl" assert os.path.exists(problem_fname) problem = parser.Problem(domain_file=domain_fname, problem_file=problem_fname) problem.dump() assert problem is not None
def export_problem(folder: str, domain_name: str, silent: bool = True): """Parse problem, then export problem to temporary location.""" p_fnames, d_fname = get_files(folder) p_fnames = [os.path.join(folder, n) for n in p_fnames] d_fname = os.path.join(folder, d_fname) if p_fnames is None or len(p_fnames) == 0: return False for i, p_fname in enumerate(p_fnames): prob = parser.Problem(d_fname, p_fname) fakes = _export_problem(prob) if not silent: print("* Contents of domain file *") fp = open(fakes["domain"], "r") for line in fp: print(line.rstrip()) fp.close() if fakes["problem"] is not None: print("* Contents of problem file *") fp = open(fakes["problem"], "r") for line in fp: print(line.rstrip()) fp.close() # now read back the domain file fake_problem = parser.Problem(fakes["domain"], fakes["problem"]) if fake_problem.is_equal(prob): if not silent: print("Domains are equivalent") result = True else: if not silent: print("Domains are not equivalent") result = False # remove temporary file os.remove(fakes["domain"]) if fakes["problem"] is not None: os.remove(fakes["problem"]) return result
def parse_problem(folder: str, domain_name: str, silent: bool = False, index: Optional[int] = None): """ Fully create the problem from the given folder""" p_fnames, d_fname = get_files(folder) p_fnames = [os.path.join(folder, f) for f in p_fnames] d_fname = os.path.join(folder, d_fname) probs = [] if len(p_fnames) == 0 or d_fname is None: if not silent: print("Failed to find domain and problem file in folder %s" % folder) return probs if not silent: print("Parsing domain %s" % folder) if index is None: for p_fname in p_fnames: # print this so have full file path in console prob = parser.Problem(d_fname, p_fname) probs.append(prob) if not silent: prob.dump() if len(probs) > 1 and not silent: print("parsed %d problems in domain %s" % (len(probs), domain_name)) return probs else: p_fname = p_fnames[index] # print this so have full file path in console prob = parser.Problem(d_fname, p_fname) probs.append(prob) if not silent: prob.dump() if len(probs) > 1 and not silent: print("parsed %d problems in domain %s" % (len(probs), domain_name)) return probs
def test_parse_problems_fsc(): parent_dir = "pond-benchmarks/cp2fsc-and-replanner-benchmarks/fsc" n = 0 for problem_file, domain_file in find_files_matching_prefix( parent_dir, ""): assert os.path.exists(problem_file) assert os.path.exists(domain_file) prob = parser.Problem(domain_file=domain_file, problem_file=problem_file) assert prob is not None n += 1 assert n == 52
def test_parse_problems_contff(): parent_dir = "pond-benchmarks/contff-tests" n = 0 for problem_file, domain_file in find_files_matching_prefix( parent_dir, ""): assert os.path.exists(problem_file) assert os.path.exists(domain_file) prob = parser.Problem(domain_file=domain_file, problem_file=problem_file) assert prob is not None n += 1 assert n == 69
assert False, "No such domain found: %s" % args.folder print("Parent is %s" % parent_name) path = os.path.join(parents[parent_name], folder) parse_problem(path, folder, silent=False, index=args.number) elif "normalize" == args.subparser: parent_name = find_parent(args.folder, parents) if parent_name is None: assert False, "No such domain found: %s" % args.folder else: path = os.path.join(parents[parent_name], args.folder) normalize_problem(path, args.folder) elif "parse-problem" == args.subparser: # note that the full path must be given here p = args.problem if os.path.exists(p) and os.path.isfile(p): prob = parser.Problem(p, None) prob.dump() else: assert False, "No such file found: %s" % p elif "batch-parse" == args.subparser: batch_run(batch_parse, parents, args.parent) elif "batch-normalize" == args.subparser: batch_run(batch_normalize, parents, args.parent) elif "batch-ground" == args.subparser: batch_run(batch_ground, parents, args.parent) elif "batch-export" == args.subparser: batch_run(batch_export, parents, args.parent) elif "batch-export-ground" == args.subparser: f = lambda a, b: batch_export(a, b, True) batch_run(f, parents, args.parent) elif "export-ground" == args.subparser: