mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
Drop Python 3.5 support (#3792)
* drop python 3.5 support * dvc: remove fspath() use inside os.path calls * dvc: replace dvc.compat.fspath with os.fspath * tests: replace dvc.compat.fspath with os.fspath * utils: relpath() should use fspath/str * utils: os.readlink doesn't support path-like obj on Windows until 3.8
This commit is contained in:
+37
-27
@@ -4,7 +4,6 @@ import os
|
||||
import pytest
|
||||
|
||||
from dvc.cache import Cache
|
||||
from dvc.compat import fspath
|
||||
from dvc.exceptions import PathMissingError
|
||||
from dvc.main import main
|
||||
from dvc.repo import Repo
|
||||
@@ -18,7 +17,7 @@ def test_get_repo_file(tmp_dir, erepo_dir):
|
||||
with erepo_dir.chdir():
|
||||
erepo_dir.dvc_gen("file", "contents", commit="create file")
|
||||
|
||||
Repo.get(fspath(erepo_dir), "file", "file_imported")
|
||||
Repo.get(os.fspath(erepo_dir), "file", "file_imported")
|
||||
|
||||
assert os.path.isfile("file_imported")
|
||||
assert (tmp_dir / "file_imported").read_text() == "contents"
|
||||
@@ -28,10 +27,10 @@ def test_get_repo_dir(tmp_dir, erepo_dir):
|
||||
with erepo_dir.chdir():
|
||||
erepo_dir.dvc_gen({"dir": {"file": "contents"}}, commit="create dir")
|
||||
|
||||
Repo.get(fspath(erepo_dir), "dir", "dir_imported")
|
||||
Repo.get(os.fspath(erepo_dir), "dir", "dir_imported")
|
||||
|
||||
assert os.path.isdir("dir_imported")
|
||||
trees_equal(fspath(erepo_dir / "dir"), "dir_imported")
|
||||
trees_equal(erepo_dir / "dir", "dir_imported")
|
||||
|
||||
|
||||
def test_get_git_file(tmp_dir, erepo_dir):
|
||||
@@ -40,7 +39,7 @@ def test_get_git_file(tmp_dir, erepo_dir):
|
||||
|
||||
erepo_dir.scm_gen({src: "hello"}, commit="add a regular file")
|
||||
|
||||
Repo.get(fspath(erepo_dir), src, dst)
|
||||
Repo.get(os.fspath(erepo_dir), src, dst)
|
||||
|
||||
assert (tmp_dir / dst).is_file()
|
||||
assert (tmp_dir / dst).read_text() == "hello"
|
||||
@@ -52,10 +51,10 @@ def test_get_git_dir(tmp_dir, erepo_dir):
|
||||
|
||||
erepo_dir.scm_gen({src: {"file.txt": "hello"}}, commit="add a regular dir")
|
||||
|
||||
Repo.get(fspath(erepo_dir), src, dst)
|
||||
Repo.get(os.fspath(erepo_dir), src, dst)
|
||||
|
||||
assert (tmp_dir / dst).is_dir()
|
||||
trees_equal(fspath(erepo_dir / src), fspath(tmp_dir / dst))
|
||||
trees_equal(erepo_dir / src, tmp_dir / dst)
|
||||
|
||||
|
||||
def test_cache_type_is_properly_overridden(tmp_dir, erepo_dir):
|
||||
@@ -69,7 +68,7 @@ def test_cache_type_is_properly_overridden(tmp_dir, erepo_dir):
|
||||
erepo_dir.dvc_gen("file", "contents", "create file")
|
||||
assert System.is_symlink(erepo_dir / "file")
|
||||
|
||||
Repo.get(fspath(erepo_dir), "file", "file_imported")
|
||||
Repo.get(os.fspath(erepo_dir), "file", "file_imported")
|
||||
|
||||
assert not System.is_symlink("file_imported")
|
||||
assert (tmp_dir / "file_imported").read_text() == "contents"
|
||||
@@ -79,20 +78,20 @@ def test_get_repo_rev(tmp_dir, erepo_dir):
|
||||
with erepo_dir.chdir(), erepo_dir.branch("branch", new=True):
|
||||
erepo_dir.dvc_gen("file", "contents", commit="create file on branch")
|
||||
|
||||
Repo.get(fspath(erepo_dir), "file", "file_imported", rev="branch")
|
||||
Repo.get(os.fspath(erepo_dir), "file", "file_imported", rev="branch")
|
||||
assert (tmp_dir / "file_imported").read_text() == "contents"
|
||||
|
||||
|
||||
def test_get_from_non_dvc_repo(tmp_dir, git_dir):
|
||||
git_dir.scm_gen({"some_file": "contents"}, commit="create file")
|
||||
|
||||
Repo.get(fspath(git_dir), "some_file", "file_imported")
|
||||
Repo.get(os.fspath(git_dir), "some_file", "file_imported")
|
||||
assert (tmp_dir / "file_imported").read_text() == "contents"
|
||||
|
||||
|
||||
def test_get_a_dvc_file(tmp_dir, erepo_dir):
|
||||
with pytest.raises(GetDVCFileError):
|
||||
Repo.get(fspath(erepo_dir), "some_file.dvc")
|
||||
Repo.get(os.fspath(erepo_dir), "some_file.dvc")
|
||||
|
||||
|
||||
# https://github.com/iterative/dvc/pull/2837#discussion_r352123053
|
||||
@@ -102,9 +101,11 @@ def test_get_full_dvc_path(tmp_dir, erepo_dir, tmp_path_factory):
|
||||
external_data.write_text("ext_data")
|
||||
|
||||
with erepo_dir.chdir():
|
||||
erepo_dir.dvc_add(fspath(external_data), commit="add external data")
|
||||
erepo_dir.dvc_add(os.fspath(external_data), commit="add external data")
|
||||
|
||||
Repo.get(fspath(erepo_dir), fspath(external_data), "ext_data_imported")
|
||||
Repo.get(
|
||||
os.fspath(erepo_dir), os.fspath(external_data), "ext_data_imported"
|
||||
)
|
||||
assert (tmp_dir / "ext_data_imported").read_text() == "ext_data"
|
||||
|
||||
|
||||
@@ -120,7 +121,7 @@ def test_non_cached_output(tmp_dir, erepo_dir):
|
||||
)
|
||||
erepo_dir.scm_add([src, src + ".dvc"], commit="add non-cached output")
|
||||
|
||||
Repo.get(fspath(erepo_dir), src, dst)
|
||||
Repo.get(os.fspath(erepo_dir), src, dst)
|
||||
|
||||
assert (tmp_dir / dst).is_file()
|
||||
# NOTE: using strip() to account for `echo` differences on win and *nix
|
||||
@@ -130,17 +131,17 @@ def test_non_cached_output(tmp_dir, erepo_dir):
|
||||
# https://github.com/iterative/dvc/pull/2837#discussion_r352123053
|
||||
def test_absolute_file_outside_repo(tmp_dir, erepo_dir):
|
||||
with pytest.raises(PathMissingError):
|
||||
Repo.get(fspath(erepo_dir), "/root/")
|
||||
Repo.get(os.fspath(erepo_dir), "/root/")
|
||||
|
||||
|
||||
def test_absolute_file_outside_git_repo(tmp_dir, git_dir):
|
||||
with pytest.raises(PathMissingError):
|
||||
Repo.get(fspath(git_dir), "/root/")
|
||||
Repo.get(os.fspath(git_dir), "/root/")
|
||||
|
||||
|
||||
def test_unknown_path(tmp_dir, erepo_dir):
|
||||
with pytest.raises(PathMissingError):
|
||||
Repo.get(fspath(erepo_dir), "a_non_existing_file")
|
||||
Repo.get(os.fspath(erepo_dir), "a_non_existing_file")
|
||||
|
||||
|
||||
@pytest.mark.parametrize("dname", [".", "dir", "dir/subdir"])
|
||||
@@ -150,7 +151,7 @@ def test_get_to_dir(tmp_dir, erepo_dir, dname):
|
||||
|
||||
makedirs(dname, exist_ok=True)
|
||||
|
||||
Repo.get(fspath(erepo_dir), "file", dname)
|
||||
Repo.get(os.fspath(erepo_dir), "file", dname)
|
||||
|
||||
assert (tmp_dir / dname).is_dir()
|
||||
assert (tmp_dir / dname / "file").read_text() == "contents"
|
||||
@@ -164,7 +165,7 @@ def test_get_from_non_dvc_master(tmp_dir, git_dir, caplog):
|
||||
caplog.clear()
|
||||
|
||||
with caplog.at_level(logging.INFO, logger="dvc"):
|
||||
Repo.get(fspath(git_dir), "some_file", out="some_dst", rev="branch")
|
||||
Repo.get(os.fspath(git_dir), "some_file", out="some_dst", rev="branch")
|
||||
|
||||
assert caplog.text == ""
|
||||
assert (tmp_dir / "some_dst").read_text() == "some text"
|
||||
@@ -183,17 +184,19 @@ def test_get_file_from_dir(tmp_dir, erepo_dir):
|
||||
commit="create dir",
|
||||
)
|
||||
|
||||
Repo.get(fspath(erepo_dir), os.path.join("dir", "1"))
|
||||
Repo.get(os.fspath(erepo_dir), os.path.join("dir", "1"))
|
||||
assert (tmp_dir / "1").read_text() == "1"
|
||||
|
||||
Repo.get(fspath(erepo_dir), os.path.join("dir", "2"), out="file")
|
||||
Repo.get(os.fspath(erepo_dir), os.path.join("dir", "2"), out="file")
|
||||
assert (tmp_dir / "file").read_text() == "2"
|
||||
|
||||
Repo.get(fspath(erepo_dir), os.path.join("dir", "subdir"))
|
||||
Repo.get(os.fspath(erepo_dir), os.path.join("dir", "subdir"))
|
||||
assert (tmp_dir / "subdir" / "foo").read_text() == "foo"
|
||||
assert (tmp_dir / "subdir" / "bar").read_text() == "bar"
|
||||
|
||||
Repo.get(fspath(erepo_dir), os.path.join("dir", "subdir", "foo"), out="X")
|
||||
Repo.get(
|
||||
os.fspath(erepo_dir), os.path.join("dir", "subdir", "foo"), out="X"
|
||||
)
|
||||
assert (tmp_dir / "X").read_text() == "foo"
|
||||
|
||||
|
||||
@@ -205,14 +208,21 @@ def test_get_url_positive(tmp_dir, erepo_dir, caplog, setup_remote):
|
||||
|
||||
caplog.clear()
|
||||
with caplog.at_level(logging.ERROR, logger="dvc"):
|
||||
assert main(["get", fspath(erepo_dir), "foo", "--show-url"]) == 0
|
||||
assert main(["get", os.fspath(erepo_dir), "foo", "--show-url"]) == 0
|
||||
assert caplog.text == ""
|
||||
|
||||
|
||||
def test_get_url_not_existing(tmp_dir, erepo_dir, caplog):
|
||||
with caplog.at_level(logging.ERROR, logger="dvc"):
|
||||
assert (
|
||||
main(["get", fspath(erepo_dir), "not-existing-file", "--show-url"])
|
||||
main(
|
||||
[
|
||||
"get",
|
||||
os.fspath(erepo_dir),
|
||||
"not-existing-file",
|
||||
"--show-url",
|
||||
]
|
||||
)
|
||||
== 1
|
||||
)
|
||||
assert "failed to show URL" in caplog.text
|
||||
@@ -222,7 +232,7 @@ def test_get_url_git_only_repo(tmp_dir, scm, caplog):
|
||||
tmp_dir.scm_gen({"foo": "foo"}, commit="initial")
|
||||
|
||||
with caplog.at_level(logging.ERROR):
|
||||
assert main(["get", fspath(tmp_dir), "foo", "--show-url"]) == 1
|
||||
assert main(["get", os.fspath(tmp_dir), "foo", "--show-url"]) == 1
|
||||
assert "failed to show URL" in caplog.text
|
||||
|
||||
|
||||
@@ -240,5 +250,5 @@ def test_get_pipeline_tracked_outs(
|
||||
dvc.scm.commit("add pipeline stage")
|
||||
|
||||
with git_dir.chdir():
|
||||
Repo.get("file:///{}".format(fspath(tmp_dir)), "bar", out="baz")
|
||||
Repo.get("file:///{}".format(os.fspath(tmp_dir)), "bar", out="baz")
|
||||
assert (git_dir / "baz").read_text() == "foo"
|
||||
|
||||
Reference in New Issue
Block a user