From 7c3c2e81239bd2ada983de79ff347f88172dd2ab Mon Sep 17 00:00:00 2001 From: Saugat Pachhai Date: Tue, 24 Nov 2020 11:18:11 +0545 Subject: [PATCH] Fix typechecking errors - 2 (#4946) --- dvc/command/dag.py | 15 ++++----------- dvc/command/experiments.py | 4 ++-- dvc/dependency/base.py | 10 +++++++--- dvc/output/base.py | 9 +++++---- dvc/output/gs.py | 4 ++-- dvc/parsing/__init__.py | 2 +- dvc/parsing/context.py | 2 +- dvc/remote/local.py | 2 +- dvc/remote/slow_link_detection.py | 1 + dvc/repo/params/show.py | 9 +++++++-- dvc/repo/plots/template.py | 5 +++-- 11 files changed, 34 insertions(+), 29 deletions(-) diff --git a/dvc/command/dag.py b/dvc/command/dag.py index bc9536914..442e0ff08 100644 --- a/dvc/command/dag.py +++ b/dvc/command/dag.py @@ -2,6 +2,7 @@ import argparse import logging from dvc.command.base import CmdBase, append_doc_link +from dvc.stage import Stage logger = logging.getLogger(__name__) @@ -52,18 +53,10 @@ def _collect_targets(repo, target, outs): def _transform(repo, outs): import networkx as nx - if outs: - G = repo.outs_graph - - def _relabel(out): - return str(out) - - else: - G = repo.graph - - def _relabel(stage): - return stage.addressing + def _relabel(node) -> str: + return node.addressing if isinstance(node, Stage) else str(node) + G = repo.outs_graph if outs else repo.graph return nx.relabel_nodes(G, _relabel, copy=True) diff --git a/dvc/command/experiments.py b/dvc/command/experiments.py index 346988ce1..6f33db861 100644 --- a/dvc/command/experiments.py +++ b/dvc/command/experiments.py @@ -51,13 +51,13 @@ def _filter_names( update_func({match: None for match in matches}) if include: - ret = OrderedDict() + ret: OrderedDict = OrderedDict() _filter(include, ret.update) else: ret = OrderedDict({name: None for name in names}) if exclude: - _filter(exclude, ret.difference_update) + _filter(exclude, ret.difference_update) # type: ignore[attr-defined] return [".".join(name) for name in ret] diff --git a/dvc/dependency/base.py b/dvc/dependency/base.py index a78c9e389..bc518f6c8 100644 --- a/dvc/dependency/base.py +++ b/dvc/dependency/base.py @@ -1,3 +1,5 @@ +from typing import Type + from dvc.exceptions import DvcException @@ -21,9 +23,11 @@ class DependencyIsStageFileError(DvcException): class BaseDependency: IS_DEPENDENCY = True - DoesNotExistError = DependencyDoesNotExistError - IsNotFileOrDirError = DependencyIsNotFileOrDirError - IsStageFileError = DependencyIsStageFileError + DoesNotExistError = DependencyDoesNotExistError # type: Type[DvcException] + IsNotFileOrDirError = ( + DependencyIsNotFileOrDirError + ) # type: Type[DvcException] + IsStageFileError = DependencyIsStageFileError # type: Type[DvcException] def update(self, rev=None): pass diff --git a/dvc/output/base.py b/dvc/output/base.py index a095973c0..1f4de887b 100644 --- a/dvc/output/base.py +++ b/dvc/output/base.py @@ -1,6 +1,7 @@ import logging import os from copy import copy +from typing import Type from urllib.parse import urlparse from voluptuous import Any @@ -85,10 +86,10 @@ class BaseOutput: }, ) - DoesNotExistError = OutputDoesNotExistError - IsNotFileOrDirError = OutputIsNotFileOrDirError - IsStageFileError = OutputIsStageFileError - IsIgnoredError = OutputIsIgnoredError + DoesNotExistError = OutputDoesNotExistError # type: Type[DvcException] + IsNotFileOrDirError = OutputIsNotFileOrDirError # type: Type[DvcException] + IsStageFileError = OutputIsStageFileError # type: Type[DvcException] + IsIgnoredError = OutputIsIgnoredError # type: Type[DvcException] sep = "/" diff --git a/dvc/output/gs.py b/dvc/output/gs.py index 8674802cb..6e9a6639b 100644 --- a/dvc/output/gs.py +++ b/dvc/output/gs.py @@ -1,7 +1,7 @@ -from dvc.output.s3 import S3Output +from dvc.output.base import BaseOutput from ..tree.gs import GSTree -class GSOutput(S3Output): +class GSOutput(BaseOutput): TREE_CLS = GSTree diff --git a/dvc/parsing/__init__.py b/dvc/parsing/__init__.py index 66f0c009d..2460c79cf 100644 --- a/dvc/parsing/__init__.py +++ b/dvc/parsing/__init__.py @@ -159,7 +159,7 @@ class DataResolver: stage_name=name, ) - logger.trace( # pytype: disable=attribute-error + logger.trace( # type: ignore[attr-defined] "Context during resolution of stage %s:\n%s", name, context ) diff --git a/dvc/parsing/context.py b/dvc/parsing/context.py index 3f219e261..4b0143085 100644 --- a/dvc/parsing/context.py +++ b/dvc/parsing/context.py @@ -190,7 +190,7 @@ class Container(Node, ABC): index = index.strip() index = self._key_transform(index) try: - d = self.data[index] + d = self[index] except LookupError as exc: raise ValueError( f"Could not find '{index}' in {self.data}" diff --git a/dvc/remote/local.py b/dvc/remote/local.py index f433c1f70..903580d7b 100644 --- a/dvc/remote/local.py +++ b/dvc/remote/local.py @@ -3,4 +3,4 @@ from .index import RemoteIndexNoop class LocalRemote(Remote): - INDEX_CLS = RemoteIndexNoop + INDEX_CLS = RemoteIndexNoop # type: ignore[assignment] diff --git a/dvc/remote/slow_link_detection.py b/dvc/remote/slow_link_detection.py index ac45afd70..6b6481cb2 100644 --- a/dvc/remote/slow_link_detection.py +++ b/dvc/remote/slow_link_detection.py @@ -1,3 +1,4 @@ +# type: ignore import logging import sys import time diff --git a/dvc/repo/params/show.py b/dvc/repo/params/show.py index ac9459d51..af9a497db 100644 --- a/dvc/repo/params/show.py +++ b/dvc/repo/params/show.py @@ -1,4 +1,5 @@ import logging +from typing import TYPE_CHECKING, List from dvc.dependency.param import ParamsDependency from dvc.exceptions import DvcException @@ -7,6 +8,10 @@ from dvc.repo import locked from dvc.repo.collect import collect from dvc.utils.serialize import LOADERS, ParseError +if TYPE_CHECKING: + from dvc.output.base import BaseOutput + from dvc.repo import Repo + logger = logging.getLogger(__name__) @@ -14,11 +19,11 @@ class NoParamsError(DvcException): pass -def _is_params(dep): +def _is_params(dep: "BaseOutput"): return isinstance(dep, ParamsDependency) -def _collect_configs(repo, rev): +def _collect_configs(repo: "Repo", rev) -> List[PathInfo]: params, _ = collect(repo, deps=True, output_filter=_is_params, rev=rev) configs = {p.path_info for p in params} configs.add(PathInfo(repo.root_dir) / ParamsDependency.DEFAULT_PARAMS_FILE) diff --git a/dvc/repo/plots/template.py b/dvc/repo/plots/template.py index 1e98de2ef..b6bcdc103 100644 --- a/dvc/repo/plots/template.py +++ b/dvc/repo/plots/template.py @@ -1,5 +1,6 @@ import json import os +from typing import Any, Dict, Optional from funcy import cached_property @@ -29,8 +30,8 @@ class Template: EXTENSION = ".json" ANCHOR = "" - DEFAULT_CONTENT = None - DEFAULT_NAME = None + DEFAULT_CONTENT: Optional[Dict[str, Any]] = None + DEFAULT_NAME: Optional[str] = None def __init__(self, content=None, name=None): if content: