diff --git a/dvc/data/__init__.py b/dvc/data/__init__.py index 9a00f3737..883287451 100644 --- a/dvc/data/__init__.py +++ b/dvc/data/__init__.py @@ -4,9 +4,9 @@ from typing import TYPE_CHECKING, Iterator, Union from .tree import Tree if TYPE_CHECKING: - from dvc.hash_info import HashInfo from dvc.objects.db import ObjectDB from dvc.objects.file import HashFile + from dvc.objects.hash_info import HashInfo logger = logging.getLogger(__name__) diff --git a/dvc/data/db/local.py b/dvc/data/db/local.py index 06ad2ba09..e21e5b958 100644 --- a/dvc/data/db/local.py +++ b/dvc/data/db/local.py @@ -6,9 +6,9 @@ from functools import partial from funcy import cached_property from shortuuid import uuid -from dvc.hash_info import HashInfo from dvc.objects.db import ObjectDB, noop, wrap_iter from dvc.objects.errors import ObjectFormatError +from dvc.objects.hash_info import HashInfo from dvc.utils import relpath from dvc.utils.fs import copyfile, remove, umask, walk_files diff --git a/dvc/data/db/reference.py b/dvc/data/db/reference.py index e5b1782ec..0477ac232 100644 --- a/dvc/data/db/reference.py +++ b/dvc/data/db/reference.py @@ -11,7 +11,7 @@ from ..reference import ReferenceHashFile if TYPE_CHECKING: from dvc.fs._callback import FsspecCallback from dvc.fs.base import AnyFSPath, FileSystem - from dvc.hash_info import HashInfo + from dvc.objects.hash_info import HashInfo logger = logging.getLogger(__name__) diff --git a/dvc/data/diff.py b/dvc/data/diff.py index d20212e7c..df9b95996 100644 --- a/dvc/data/diff.py +++ b/dvc/data/diff.py @@ -2,8 +2,8 @@ from dataclasses import dataclass, field from typing import TYPE_CHECKING, List, Optional, Tuple if TYPE_CHECKING: - from dvc.hash_info import HashInfo from dvc.objects.file import HashFile + from dvc.objects.hash_info import HashInfo ADD = "add" MODIFY = "modify" diff --git a/dvc/data/gc.py b/dvc/data/gc.py index f8c6fded2..9d754d38f 100644 --- a/dvc/data/gc.py +++ b/dvc/data/gc.py @@ -18,7 +18,7 @@ def gc(odb, used, jobs=None, cache_odb=None, shallow=True): ) def _is_dir_hash(_hash): - from dvc.hash_info import HASH_DIR_SUFFIX + from dvc.objects.hash_info import HASH_DIR_SUFFIX return _hash.endswith(HASH_DIR_SUFFIX) diff --git a/dvc/data/reference.py b/dvc/data/reference.py index f0f257882..977c46d5a 100644 --- a/dvc/data/reference.py +++ b/dvc/data/reference.py @@ -9,8 +9,8 @@ from dvc.objects.file import HashFile if TYPE_CHECKING: from dvc.fs.base import AnyFSPath, FileSystem - from dvc.hash_info import HashInfo from dvc.objects.db import ObjectDB + from dvc.objects.hash_info import HashInfo logger = logging.getLogger(__name__) diff --git a/dvc/data/stage.py b/dvc/data/stage.py index a5d583796..cabef1c17 100644 --- a/dvc/data/stage.py +++ b/dvc/data/stage.py @@ -6,14 +6,14 @@ from functools import partial from typing import TYPE_CHECKING, Dict, Optional, Tuple from dvc.exceptions import DvcIgnoreInCollectedDirError -from dvc.hash_info import HashInfo from dvc.ignore import DvcIgnore from dvc.objects.file import HashFile +from dvc.objects.hash_info import HashInfo +from dvc.objects.meta import Meta from dvc.progress import Tqdm from dvc.utils import file_md5, is_exec from .db.reference import ReferenceObjectDB -from .meta import Meta if TYPE_CHECKING: from dvc.fs.base import AnyFSPath, FileSystem diff --git a/dvc/data/status.py b/dvc/data/status.py index ecbfc4b82..9f871f78b 100644 --- a/dvc/data/status.py +++ b/dvc/data/status.py @@ -1,7 +1,7 @@ import logging from typing import TYPE_CHECKING, Dict, Iterable, NamedTuple, Optional, Set -from dvc.hash_info import HashInfo +from dvc.objects.hash_info import HashInfo from dvc.scheme import Schemes from .tree import Tree diff --git a/dvc/data/transfer.py b/dvc/data/transfer.py index 1ca322855..69a9c0c75 100644 --- a/dvc/data/transfer.py +++ b/dvc/data/transfer.py @@ -9,8 +9,8 @@ from dvc.progress import Tqdm from dvc.utils.threadpool import ThreadPoolExecutor if TYPE_CHECKING: - from dvc.hash_info import HashInfo from dvc.objects.db import ObjectDB + from dvc.objects.hash_info import HashInfo from .db.index import ObjectDBIndexBase from .tree import Tree diff --git a/dvc/data/tree.py b/dvc/data/tree.py index 1cbdb9e2e..53c26978a 100644 --- a/dvc/data/tree.py +++ b/dvc/data/tree.py @@ -11,10 +11,9 @@ from dvc.objects.file import HashFile from .stage import get_file_hash if TYPE_CHECKING: - from dvc.hash_info import HashInfo from dvc.objects.db import ObjectDB - - from .meta import Meta + from dvc.objects.hash_info import HashInfo + from dvc.objects.meta import Meta logger = logging.getLogger(__name__) @@ -129,7 +128,7 @@ class Tree(HashFile): @classmethod def from_list(cls, lst): - from dvc.hash_info import HashInfo + from dvc.objects.hash_info import HashInfo tree = cls(None, None, None) for _entry in lst: diff --git a/dvc/data_cloud.py b/dvc/data_cloud.py index 03a258547..0330b5780 100644 --- a/dvc/data_cloud.py +++ b/dvc/data_cloud.py @@ -6,8 +6,8 @@ from typing import TYPE_CHECKING, Iterable, Optional from dvc.data.db import get_index if TYPE_CHECKING: - from dvc.hash_info import HashInfo from dvc.objects.db import ObjectDB + from dvc.objects.hash_info import HashInfo logger = logging.getLogger(__name__) diff --git a/dvc/dependency/param.py b/dvc/dependency/param.py index 9f707921f..0e83bf72c 100644 --- a/dvc/dependency/param.py +++ b/dvc/dependency/param.py @@ -8,7 +8,7 @@ import dpath.util from voluptuous import Any from dvc.exceptions import DvcException -from dvc.hash_info import HashInfo +from dvc.objects.hash_info import HashInfo from dvc.utils.serialize import LOADERS, ParseError from .base import Dependency diff --git a/dvc/dependency/repo.py b/dvc/dependency/repo.py index 45111bb45..7560e308a 100644 --- a/dvc/dependency/repo.py +++ b/dvc/dependency/repo.py @@ -8,9 +8,9 @@ from voluptuous import Required from .base import Dependency if TYPE_CHECKING: - from dvc.hash_info import HashInfo from dvc.objects.db import ObjectDB from dvc.objects.file import HashFile + from dvc.objects.hash_info import HashInfo class RepoDependency(Dependency): diff --git a/dvc/fs/dvc.py b/dvc/fs/dvc.py index c6000952f..6b68f6c32 100644 --- a/dvc/fs/dvc.py +++ b/dvc/fs/dvc.py @@ -117,7 +117,7 @@ class _DvcFileSystem(AbstractFileSystem): # pylint:disable=abstract-method return bool(info.get("outs") if recurse else info.get("isout")) def info(self, path, **kwargs): - from dvc.data.meta import Meta + from dvc.objects.meta import Meta key = self._get_key(path) diff --git a/dvc/objects/db.py b/dvc/objects/db.py index d583968fc..f2f644735 100644 --- a/dvc/objects/db.py +++ b/dvc/objects/db.py @@ -14,7 +14,8 @@ if TYPE_CHECKING: from dvc.fs._callback import FsspecCallback from dvc.fs.base import AnyFSPath, FileSystem - from dvc.hash_info import HashInfo + + from .hash_info import HashInfo logger = logging.getLogger(__name__) @@ -36,7 +37,7 @@ class ObjectDB: CACHE_MODE: Optional[int] = None def __init__(self, fs: "FileSystem", path: str, **config): - from dvc.state import StateNoop + from .state import StateNoop self.fs = fs self.fs_path = path diff --git a/dvc/objects/file.py b/dvc/objects/file.py index 6ede595fb..aa62a85d4 100644 --- a/dvc/objects/file.py +++ b/dvc/objects/file.py @@ -5,9 +5,9 @@ from typing import TYPE_CHECKING, Optional if TYPE_CHECKING: from dvc.fs.base import AnyFSPath, FileSystem - from dvc.hash_info import HashInfo from .db import ObjectDB + from .hash_info import HashInfo logger = logging.getLogger(__name__) diff --git a/dvc/hash_info.py b/dvc/objects/hash_info.py similarity index 100% rename from dvc/hash_info.py rename to dvc/objects/hash_info.py diff --git a/dvc/data/meta.py b/dvc/objects/meta.py similarity index 100% rename from dvc/data/meta.py rename to dvc/objects/meta.py diff --git a/dvc/state.py b/dvc/objects/state.py similarity index 98% rename from dvc/state.py rename to dvc/objects/state.py index a1463a232..8d7e2aab8 100644 --- a/dvc/state.py +++ b/dvc/objects/state.py @@ -5,11 +5,12 @@ import os from abc import ABC, abstractmethod from dvc.fs.local import LocalFileSystem -from dvc.hash_info import HashInfo from dvc.utils import relpath from dvc.utils.decorators import with_diskcache from dvc.utils.fs import get_inode, get_mtime_and_size, remove +from .hash_info import HashInfo + logger = logging.getLogger(__name__) @@ -106,7 +107,7 @@ class State(StateBase): # pylint: disable=too-many-instance-attributes HashInfo or None: hash for the specified path info or None if it doesn't exist in the state database. """ - from .data.meta import Meta + from .meta import Meta if not isinstance(fs, LocalFileSystem): return None, None diff --git a/dvc/output.py b/dvc/output.py index 8e1ce94fa..0535fbf3f 100644 --- a/dvc/output.py +++ b/dvc/output.py @@ -15,11 +15,12 @@ from dvc.exceptions import ( MergeError, RemoteCacheRequiredError, ) +from dvc.objects.hash_info import HashInfo +from dvc.objects.meta import Meta from .data import check as ocheck from .data import load as oload from .data.checkout import checkout -from .data.meta import Meta from .data.stage import stage as ostage from .data.transfer import transfer as otransfer from .data.tree import Tree @@ -28,7 +29,6 @@ from .fs.base import RemoteMissingDepsError from .fs.hdfs import HDFSFileSystem from .fs.local import LocalFileSystem from .fs.s3 import S3FileSystem -from .hash_info import HashInfo from .istextfile import istextfile from .objects.errors import ObjectFormatError from .scheme import Schemes diff --git a/dvc/repo/__init__.py b/dvc/repo/__init__.py index 7491df609..da126193d 100644 --- a/dvc/repo/__init__.py +++ b/dvc/repo/__init__.py @@ -155,13 +155,13 @@ class Repo: from dvc.fs.git import GitFileSystem from dvc.fs.local import localfs from dvc.lock import LockNoop, make_lock + from dvc.objects.state import State, StateNoop from dvc.repo.metrics import Metrics from dvc.repo.params import Params from dvc.repo.plots import Plots from dvc.repo.stage import StageLoad from dvc.scm import SCM from dvc.stage.cache import StageCache - from dvc.state import State, StateNoop self.url = url self._fs_conf = {"repo_factory": repo_factory} diff --git a/dvc/repo/index.py b/dvc/repo/index.py index b822efc5c..d7c467d44 100644 --- a/dvc/repo/index.py +++ b/dvc/repo/index.py @@ -22,8 +22,8 @@ if TYPE_CHECKING: from dvc.data.tree import Tree from dvc.dependency import Dependency, ParamsDependency from dvc.fs.base import FileSystem - from dvc.hash_info import HashInfo from dvc.objects.db import ObjectDB + from dvc.objects.hash_info import HashInfo from dvc.output import Output from dvc.repo.stage import StageLoad from dvc.stage import Stage diff --git a/dvc/schema.py b/dvc/schema.py index dd3e37cdb..96cd08729 100644 --- a/dvc/schema.py +++ b/dvc/schema.py @@ -3,7 +3,7 @@ from collections.abc import Mapping from voluptuous import Any, Optional, Required, Schema from dvc import dependency, output -from dvc.data.meta import Meta +from dvc.objects.meta import Meta from dvc.output import CHECKSUMS_SCHEMA, Output from dvc.parsing import DO_KWD, FOREACH_KWD, VARS_KWD from dvc.parsing.versions import SCHEMA_KWD, lockfile_version_schema diff --git a/dvc/stage/__init__.py b/dvc/stage/__init__.py index b027934c8..3f95a535e 100644 --- a/dvc/stage/__init__.py +++ b/dvc/stage/__init__.py @@ -36,8 +36,8 @@ from .utils import ( if TYPE_CHECKING: from dvc.dvcfile import DVCFile - from dvc.hash_info import HashInfo from dvc.objects.db.base import ObjectDB + from dvc.objects.hash_info import HashInfo logger = logging.getLogger(__name__) # Disallow all punctuation characters except hyphen and underscore diff --git a/dvc/stage/cache.py b/dvc/stage/cache.py index c85cb5eff..c2a32050c 100644 --- a/dvc/stage/cache.py +++ b/dvc/stage/cache.py @@ -23,7 +23,7 @@ class RunCacheNotFoundError(DvcException): def _get_cache_hash(cache, key=False): - from dvc.data.meta import Meta + from dvc.objects.meta import Meta if key: cache["outs"] = [out["path"] for out in cache.get("outs", [])] diff --git a/dvc/stage/loader.py b/dvc/stage/loader.py index 2743d720a..810389e0a 100644 --- a/dvc/stage/loader.py +++ b/dvc/stage/loader.py @@ -6,8 +6,8 @@ from itertools import chain from funcy import cached_property, get_in, lcat, once, project from dvc import dependency, output -from dvc.data.meta import Meta -from dvc.hash_info import HashInfo +from dvc.objects.hash_info import HashInfo +from dvc.objects.meta import Meta from dvc.parsing import FOREACH_KWD, JOIN, DataResolver, EntryNotFound from dvc.parsing.versions import LOCKFILE_VERSION diff --git a/dvc/stage/utils.py b/dvc/stage/utils.py index a48b8ef9d..8472a84c1 100644 --- a/dvc/stage/utils.py +++ b/dvc/stage/utils.py @@ -4,8 +4,8 @@ from typing import TYPE_CHECKING, Union from funcy import concat, first, lsplit, rpartial, without -from dvc.data.meta import Meta from dvc.exceptions import InvalidArgumentError +from dvc.objects.meta import Meta from .exceptions import ( MissingDataSource, diff --git a/dvc/utils/stream.py b/dvc/utils/stream.py index a0a7ac8f9..075569a6f 100644 --- a/dvc/utils/stream.py +++ b/dvc/utils/stream.py @@ -3,8 +3,8 @@ import io from funcy import cached_property -from dvc.hash_info import HashInfo from dvc.istextfile import DEFAULT_CHUNK_SIZE, istextblock +from dvc.objects.hash_info import HashInfo from dvc.utils import dos2unix diff --git a/tests/func/test_add.py b/tests/func/test_add.py index 289274b62..dcd2bed64 100644 --- a/tests/func/test_add.py +++ b/tests/func/test_add.py @@ -22,7 +22,7 @@ from dvc.exceptions import ( RecursiveAddingWhileUsingFilename, ) from dvc.fs.local import LocalFileSystem -from dvc.hash_info import HashInfo +from dvc.objects.hash_info import HashInfo from dvc.output import ( OutputAlreadyTrackedError, OutputDoesNotExistError, diff --git a/tests/func/test_lockfile.py b/tests/func/test_lockfile.py index eefeb210f..b3abe71c8 100644 --- a/tests/func/test_lockfile.py +++ b/tests/func/test_lockfile.py @@ -6,7 +6,7 @@ from operator import itemgetter import pytest from dvc.dvcfile import PIPELINE_LOCK, Lockfile -from dvc.hash_info import HashInfo +from dvc.objects.hash_info import HashInfo from dvc.stage.utils import split_params_deps from dvc.utils.fs import remove from dvc.utils.serialize import dumps_yaml, parse_yaml_for_update diff --git a/tests/func/test_odb.py b/tests/func/test_odb.py index ea548e00b..e35319efa 100644 --- a/tests/func/test_odb.py +++ b/tests/func/test_odb.py @@ -6,8 +6,8 @@ import pytest from dvc.cli import main from dvc.data.db import ODBManager -from dvc.hash_info import HashInfo from dvc.objects.errors import ObjectFormatError +from dvc.objects.hash_info import HashInfo from dvc.utils import relpath diff --git a/tests/func/test_repo_index.py b/tests/func/test_repo_index.py index b3290750f..869bd178c 100644 --- a/tests/func/test_repo_index.py +++ b/tests/func/test_repo_index.py @@ -258,7 +258,7 @@ def get_index(dvc, rev): @pytest.mark.parametrize("rev", ["workspace", "HEAD"]) def test_used_objs(tmp_dir, scm, dvc, run_copy, rev): - from dvc.hash_info import HashInfo + from dvc.objects.hash_info import HashInfo dvc.config["core"]["autostage"] = True tmp_dir.dvc_gen({"dir": {"subdir": {"file": "file"}}, "foo": "foo"}) diff --git a/tests/func/test_repro.py b/tests/func/test_repro.py index ced595dea..4adb7e0fa 100644 --- a/tests/func/test_repro.py +++ b/tests/func/test_repro.py @@ -817,7 +817,7 @@ class TestReproAllPipelines(SingleStageRun, TestDvc): ), ] - from dvc.state import StateNoop + from dvc.objects.state import StateNoop self.dvc.state = StateNoop() diff --git a/tests/func/test_state.py b/tests/func/test_state.py index 173821a69..1d0f77649 100644 --- a/tests/func/test_state.py +++ b/tests/func/test_state.py @@ -1,9 +1,9 @@ import os import re -from dvc.hash_info import HashInfo +from dvc.objects.hash_info import HashInfo +from dvc.objects.state import State from dvc.repo import Repo -from dvc.state import State from dvc.utils import file_md5 diff --git a/tests/unit/fs/test_dvc.py b/tests/unit/fs/test_dvc.py index 04e68a405..d812b316e 100644 --- a/tests/unit/fs/test_dvc.py +++ b/tests/unit/fs/test_dvc.py @@ -6,7 +6,7 @@ import pytest from dvc.config import NoRemoteError from dvc.data.stage import stage from dvc.fs.dvc import DvcFileSystem -from dvc.hash_info import HashInfo +from dvc.objects.hash_info import HashInfo from dvc.utils.fs import remove diff --git a/tests/unit/fs/test_repo.py b/tests/unit/fs/test_repo.py index 83e5f605a..becb85fc0 100644 --- a/tests/unit/fs/test_repo.py +++ b/tests/unit/fs/test_repo.py @@ -7,7 +7,7 @@ import pytest from dvc.data.stage import stage from dvc.fs.repo import RepoFileSystem -from dvc.hash_info import HashInfo +from dvc.objects.hash_info import HashInfo from tests.utils import clean_staging diff --git a/tests/unit/objects/db/test_local.py b/tests/unit/objects/db/test_local.py index 57b452bc7..bdcd219cf 100644 --- a/tests/unit/objects/db/test_local.py +++ b/tests/unit/objects/db/test_local.py @@ -5,7 +5,7 @@ import pytest from dvc.data.db.local import LocalObjectDB from dvc.fs.local import LocalFileSystem -from dvc.hash_info import HashInfo +from dvc.objects.hash_info import HashInfo def test_status_download_optimization(mocker, dvc): diff --git a/tests/unit/objects/test_tree.py b/tests/unit/objects/test_tree.py index f765a6637..32034e945 100644 --- a/tests/unit/objects/test_tree.py +++ b/tests/unit/objects/test_tree.py @@ -2,9 +2,9 @@ from operator import itemgetter import pytest -from dvc.data.meta import Meta from dvc.data.tree import Tree, _merge -from dvc.hash_info import HashInfo +from dvc.objects.hash_info import HashInfo +from dvc.objects.meta import Meta @pytest.mark.parametrize( diff --git a/tests/unit/output/test_local.py b/tests/unit/output/test_local.py index 2cb3ce14b..d6909941e 100644 --- a/tests/unit/output/test_local.py +++ b/tests/unit/output/test_local.py @@ -1,8 +1,8 @@ import os from unittest.mock import patch -from dvc.data.meta import Meta -from dvc.hash_info import HashInfo +from dvc.objects.hash_info import HashInfo +from dvc.objects.meta import Meta from dvc.output import Output from dvc.stage import Stage from dvc.utils import relpath diff --git a/tests/unit/repo/test_repo.py b/tests/unit/repo/test_repo.py index 1528ca6ba..1285480c0 100644 --- a/tests/unit/repo/test_repo.py +++ b/tests/unit/repo/test_repo.py @@ -4,7 +4,7 @@ import shutil import pytest from dvc.exceptions import OutputDuplicationError -from dvc.hash_info import HashInfo +from dvc.objects.hash_info import HashInfo from dvc.repo import NotDvcRepoError, Repo, locked diff --git a/tests/unit/stage/test_loader_pipeline_file.py b/tests/unit/stage/test_loader_pipeline_file.py index 84847ed2d..996c84350 100644 --- a/tests/unit/stage/test_loader_pipeline_file.py +++ b/tests/unit/stage/test_loader_pipeline_file.py @@ -5,7 +5,7 @@ from itertools import chain import pytest from dvc.dvcfile import PIPELINE_FILE, Dvcfile -from dvc.hash_info import HashInfo +from dvc.objects.hash_info import HashInfo from dvc.stage import PipelineStage, create_stage from dvc.stage.loader import StageLoader from dvc.stage.serialize import split_params_deps diff --git a/tests/unit/stage/test_serialize_pipeline_lock.py b/tests/unit/stage/test_serialize_pipeline_lock.py index 6add781cb..a9fad20d1 100644 --- a/tests/unit/stage/test_serialize_pipeline_lock.py +++ b/tests/unit/stage/test_serialize_pipeline_lock.py @@ -4,7 +4,7 @@ import pytest from voluptuous import Schema as _Schema from dvc.dvcfile import PIPELINE_FILE -from dvc.hash_info import HashInfo +from dvc.objects.hash_info import HashInfo from dvc.schema import LOCK_FILE_STAGE_SCHEMA, LOCKFILE_STAGES_SCHEMA from dvc.stage import PipelineStage, create_stage from dvc.stage.serialize import DEFAULT_PARAMS_FILE, to_lockfile