diff --git a/suites/hg/scheduling/auto-cases b/suites/hg/scheduling/auto-cases index 3efd226a6787695369d8fb1997abb68d27880479_c3VpdGVzL2hnL3NjaGVkdWxpbmcvYXV0by1jYXNlcw==..617cfa829add86f337868c1baeb2779caeb36b1f_c3VpdGVzL2hnL3NjaGVkdWxpbmcvYXV0by1jYXNlcw== 100755 --- a/suites/hg/scheduling/auto-cases +++ b/suites/hg/scheduling/auto-cases @@ -1,6 +1,7 @@ #!/usr/bin/env python3 from pathlib import Path +import functools import itertools import os import random @@ -72,6 +73,7 @@ return variants +@functools.lru_cache(maxsize=100) def list_mercurial_hashes(base_dir, interval="all()"): """return a list of possible mercurial hashes""" repo_dir = mercurial_repository_path(base_dir) @@ -86,7 +88,7 @@ interval, ] p = subprocess.run(cmd, stdout=subprocess.PIPE, encoding="utf8") - return p.stdout.splitlines() + return set(p.stdout.splitlines()) def list_data_envs(base_dir): @@ -188,7 +190,7 @@ mercurial_intervals = PY_VERSION_COMPATIBILITY.get(python_version, "all()") - hashes = list_mercurial_hashes(base_dir, mercurial_intervals) + hashes = list(list_mercurial_hashes(base_dir, mercurial_intervals)) datas = list_data_envs(base_dir) datas = [(data_env_lib.get_data_env(data_dir / d), d) for d in datas] benchmarks = list_benchmarks(base_dir)