api: open: Raise ValueError if rev is used in wrong mode.

Closes #7405

Co-authored-by: Peter Rowlands (변기호) <[email protected]>
This commit is contained in:
David de la Iglesia Castro
2022-06-15 18:19:27 +02:00
co-authored by Peter Rowlands
parent 15e10a1d81
commit 1663b97eaa
2 changed files with 25 additions and 0 deletions
+4
View File
@@ -90,6 +90,7 @@ def open( # noqa, pylint: disable=redefined-builtin
mode (str, optional): Specifies the mode in which the file is opened.
Defaults to "r" (read).
Mirrors the namesake parameter in builtin `open()`_.
Only reading `mode` is supported.
encoding(str, optional): `Codec`_ used to decode the file contents.
Defaults to None.
This should only be used in text mode.
@@ -104,6 +105,7 @@ def open( # noqa, pylint: disable=redefined-builtin
Raises:
AttributeError: If this method is not used as a context manager.
ValueError: If non-read `mode` is used.
Examples:
@@ -178,6 +180,8 @@ def open( # noqa, pylint: disable=redefined-builtin
https://docs.python.org/3/glossary.html#term-file-object
"""
if "r" not in mode:
raise ValueError("Only reading `mode` is supported.")
args = (path,)
kwargs = {
+21
View File
@@ -0,0 +1,21 @@
import pytest
from dvc import api
def test_open_raises_error_if_no_context(tmp_dir, dvc):
tmp_dir.dvc_gen("foo", "foo-text")
with pytest.raises(
AttributeError, match="should be used in a with statement."
):
fd = api.open("foo")
fd.read()
def test_open_rev_raises_error_on_wrong_mode(tmp_dir, dvc):
tmp_dir.dvc_gen("foo", "foo-text")
with pytest.raises(ValueError, match="Only reading `mode` is supported."):
with api.open("foo", mode="w"):
pass