plots: fix error when there are no plots in repo (#3940)

Consistent with `dvc metrics show/diff` behaviour.

Fixes #3925
This commit is contained in:
Ruslan Kuprieiev
2020-06-03 08:54:48 +03:00
committed by GitHub
parent 57e920aa39
commit ff54ac1bfb
3 changed files with 21 additions and 5 deletions
+8
View File
@@ -178,6 +178,14 @@ class NoMetricsError(DvcException):
)
class NoPlotsError(DvcException):
def __init__(self):
super().__init__(
"no plots in this repository. Use `--plots/--plots-no-cache` "
"options for `dvc run` to mark stage outputs as plots."
)
class YAMLFileCorruptedError(DvcException):
def __init__(self, path):
path = relpath(path)
+9 -2
View File
@@ -4,7 +4,7 @@ import os
from funcy import first, last, project
from dvc.exceptions import DvcException
from dvc.exceptions import DvcException, NoPlotsError
from dvc.repo import locked
from dvc.schema import PLOT_PROPS
@@ -108,6 +108,9 @@ def _show(repo, datafile=None, revs=None, props=None):
if revs is None:
revs = ["workspace"]
if props is None:
props = {}
if not datafile and not props.get("template"):
raise NoDataOrTemplateProvided()
@@ -201,7 +204,11 @@ def show(repo, targets=None, revs=None, props=None) -> dict:
if targets:
raise NoMetricInHistoryError(", ".join(targets))
datafile, plot = _show(repo, datafile=None, revs=revs, props=props)
try:
datafile, plot = _show(repo, datafile=None, revs=revs, props=props)
except NoDataOrTemplateProvided:
raise NoPlotsError()
return {datafile: plot}
return {
+4 -3
View File
@@ -14,7 +14,6 @@ from dvc.repo.plots.data import (
PlotData,
PlotMetricTypeError,
)
from dvc.repo.plots.show import NoDataOrTemplateProvided
from dvc.repo.plots.template import (
NoDataForTemplateError,
NoFieldInDataError,
@@ -457,8 +456,10 @@ def test_plot_override_specified_data_source(
assert plot_content["encoding"]["y"]["field"] == "b"
def test_should_raise_on_no_template_and_datafile(tmp_dir, dvc):
with pytest.raises(NoDataOrTemplateProvided):
def test_no_plots(tmp_dir, dvc):
from dvc.exceptions import NoPlotsError
with pytest.raises(NoPlotsError):
dvc.plots.show()