def _collect_experiment_commit(repo, rev, stash=False, sha_only=True): res = defaultdict(dict) for rev in repo.brancher(revs=[rev]): if rev == "workspace": res["timestamp"] = None else: commit = repo.scm.resolve_commit(rev) res["timestamp"] = datetime.fromtimestamp(commit.commit_time) configs = _collect_configs(repo, rev=rev) params = _read_params(repo, configs, rev) if params: res["params"] = params res["queued"] = stash if not stash: metrics = _collect_metrics(repo, None, rev, False) vals = _read_metrics(repo, metrics, rev) res["metrics"] = vals if not sha_only and rev != "workspace": for refspec in ["refs/tags", "refs/heads"]: name = repo.scm.describe(rev, base=refspec) if name: break if not name: if stash: pass else: name = repo.experiments.get_exact_name(rev) if name: name = name.rsplit("/")[-1] res["name"] = name return res
def _collect_experiment(repo, rev, stash=False, sha_only=True): from git.exc import GitCommandError res = defaultdict(dict) for rev in repo.brancher(revs=[rev]): if rev == "workspace": res["timestamp"] = None else: commit = _resolve_commit(repo, rev) res["timestamp"] = datetime.fromtimestamp(commit.committed_date) configs = _collect_configs(repo, rev=rev) params = _read_params(repo, configs, rev) if params: res["params"] = params res["queued"] = stash if not stash: metrics = _collect_metrics(repo, None, False) vals = _read_metrics(repo, metrics, rev) res["metrics"] = vals if not sha_only and rev != "workspace": try: name = repo.scm.repo.git.describe(rev, all=True, exact_match=True) name = name.rsplit("/")[-1] res["name"] = name except GitCommandError: pass return res
def _collect_experiment(repo, branch): res = defaultdict(dict) for rev in repo.brancher(revs=[branch]): configs = _collect_configs(repo) params = _read_params(repo, configs, rev) if params: res["params"] = params metrics = _collect_metrics(repo, None, False) vals = _read_metrics(repo, metrics, rev) if vals: res["metrics"] = vals return res
def _collect_experiment(repo, branch, stash=False): res = defaultdict(dict) for rev in repo.brancher(revs=[branch]): if rev == "workspace": res["timestamp"] = None else: commit = repo.scm.repo.rev_parse(rev) res["timestamp"] = datetime.fromtimestamp(commit.committed_date) configs = _collect_configs(repo) params = _read_params(repo, configs, rev) if params: res["params"] = params res["queued"] = stash if not stash: metrics = _collect_metrics(repo, None, False) vals = _read_metrics(repo, metrics, rev) res["metrics"] = vals return res