From f20adf5e0f8a48d446c05d8b2ff5530179194c54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20Rowlands=20=28=EB=B3=80=EA=B8=B0=ED=98=B8=29?= Date: Fri, 9 Oct 2020 15:07:56 +0900 Subject: [PATCH] experiments: add --show-json for `exp show` (#4689) --- dvc/command/experiments.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/dvc/command/experiments.py b/dvc/command/experiments.py index f1e614afc..3c98e9dd0 100644 --- a/dvc/command/experiments.py +++ b/dvc/command/experiments.py @@ -3,7 +3,7 @@ import io import logging import os from collections import OrderedDict -from datetime import date +from datetime import date, datetime from itertools import groupby from typing import Iterable, Optional @@ -255,6 +255,12 @@ def _show_experiments(all_experiments, console, **kwargs): console.print(table) +def _format_json(item): + if isinstance(item, (date, datetime)): + return item.isoformat() + raise TypeError + + class CmdExperimentsShow(CmdBase): def run(self): from rich.console import Console @@ -272,6 +278,12 @@ class CmdExperimentsShow(CmdBase): sha_only=self.args.sha, ) + if self.args.show_json: + import json + + logger.info(json.dumps(all_experiments, default=_format_json)) + return 0 + if self.args.no_pager: console = Console() else: @@ -530,6 +542,12 @@ def add_parser(subparsers, parent_parser): default=False, help="Always show git commit SHAs instead of branch/tag names.", ) + experiments_show_parser.add_argument( + "--show-json", + action="store_true", + default=False, + help="Print output in JSON format instead of a human-readable table.", + ) experiments_show_parser.set_defaults(func=CmdExperimentsShow) EXPERIMENTS_CHECKOUT_HELP = "Checkout experiments."