Ejemplo n.º 1
0
    def run(self):
        from rich.console import Console
        from dvc.utils.pager import pager

        if not self.repo.experiments:
            return 0

        try:
            all_experiments = self.repo.experiments.show(
                all_branches=self.args.all_branches,
                all_tags=self.args.all_tags,
                all_commits=self.args.all_commits,
            )

            # Note: rich does not currently include a native way to force
            # infinite width for use with a pager
            console = Console(file=io.StringIO(),
                              force_terminal=True,
                              width=9999)

            _show_experiments(all_experiments, console)

            pager(console.file.getvalue())
        except DvcException:
            logger.exception("failed to show experiments")
            return 1

        return 0
Ejemplo n.º 2
0
    def run(self):
        try:
            target = None
            if self.args.target:
                stages = self.repo.collect(self.args.target)
                if len(stages) > 1:
                    logger.error(
                        f"'{self.args.target}' contains more than one stage "
                        "{stages}, please specify one stage"
                    )
                    return 1
                target = stages[0]

            G = _build(self.repo.graph, target=target, full=self.args.full,)

            if self.args.dot:
                logger.info(_show_dot(G))
            else:
                from dvc.utils.pager import pager

                pager(_show_ascii(G))

            return 0
        except DvcException:
            msg = "failed to show "
            if self.args.target:
                msg += f"a pipeline for '{target}'"
            else:
                msg += "pipelines"
            logger.exception(msg)
            return 1
Ejemplo n.º 3
0
    def run(self):
        from rich.console import Console

        from dvc.utils.pager import pager

        if not self.repo.experiments:
            return 0

        try:
            all_experiments = self.repo.experiments.show(
                all_branches=self.args.all_branches,
                all_tags=self.args.all_tags,
                all_commits=self.args.all_commits,
                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:
                # Note: rich does not currently include a native way to force
                # infinite width for use with a pager
                console = Console(file=io.StringIO(),
                                  force_terminal=True,
                                  width=9999)

            if self.args.precision is None:
                precision = DEFAULT_PRECISION
            else:
                precision = self.args.precision

            _show_experiments(
                all_experiments,
                console,
                include_metrics=self.args.include_metrics,
                exclude_metrics=self.args.exclude_metrics,
                include_params=self.args.include_params,
                exclude_params=self.args.exclude_params,
                no_timestamp=self.args.no_timestamp,
                sort_by=self.args.sort_by,
                sort_order=self.args.sort_order,
                precision=precision,
            )

            if not self.args.no_pager:
                pager(console.file.getvalue())
        except DvcException:
            logger.exception("failed to show experiments")
            return 1

        return 0
Ejemplo n.º 4
0
def test_pager(mocker, monkeypatch):
    monkeypatch.setenv(DVC_PAGER, "my-pager")
    mocker.patch("sys.stdout.isatty", return_value=True)

    m_make_pager = mocker.patch("dvc.utils.pager.make_pager")
    _pager = m_make_pager.return_value = mocker.MagicMock()

    pager("hello world")
    m_make_pager.assert_called_once_with("my-pager")
    _pager.assert_called_once_with("hello world")
Ejemplo n.º 5
0
    def run(self):
        G = _build(
            self.repo,
            target=self.args.target,
            full=self.args.full,
            outs=self.args.outs,
        )

        if self.args.dot:
            logger.info(_show_dot(G))
        else:
            from dvc.utils.pager import pager

            pager(_show_ascii(G))

        return 0