From c2bf0dc713324b910b85a310eb6aca8ef8d6daf0 Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Tue, 17 Aug 2021 01:48:38 +0300 Subject: [PATCH] analytics: add DVC_ANALYTICS env var (#6448) --- dvc/analytics.py | 11 ++++++++--- dvc/env.py | 1 + tests/unit/test_analytics.py | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/dvc/analytics.py b/dvc/analytics.py index e3023a489..beeeb3525 100644 --- a/dvc/analytics.py +++ b/dvc/analytics.py @@ -2,6 +2,8 @@ import json import logging import os +from .env import DVC_ANALYTICS + logger = logging.getLogger(__name__) @@ -42,9 +44,12 @@ def is_enabled(): if env2bool("DVC_TEST"): return False - enabled = to_bool( - Config(validate=False).get("core", {}).get("analytics", "true") - ) + enabled = env2bool(DVC_ANALYTICS, None) + if enabled is None: + enabled = to_bool( + Config(validate=False).get("core", {}).get("analytics", "true") + ) + logger.debug("Analytics is {}abled.".format("en" if enabled else "dis")) return enabled diff --git a/dvc/env.py b/dvc/env.py index e5f8ad912..1974321a0 100644 --- a/dvc/env.py +++ b/dvc/env.py @@ -9,3 +9,4 @@ DVCLIVE_RESUME = "DVCLIVE_RESUME" DVC_IGNORE_ISATTY = "DVC_IGNORE_ISATTY" DVC_EXP_GIT_REMOTE = "DVC_EXP_GIT_REMOTE" DVC_EXP_AUTO_PUSH = "DVC_EXP_AUTO_PUSH" +DVC_ANALYTICS = "DVC_ANALYTICS" diff --git a/tests/unit/test_analytics.py b/tests/unit/test_analytics.py index 177f448f2..a91cb3e00 100644 --- a/tests/unit/test_analytics.py +++ b/tests/unit/test_analytics.py @@ -87,6 +87,40 @@ def test_is_enabled(dvc, config, result, monkeypatch, tmp_global_dir): # reset DVC_TEST env var, which affects `is_enabled()` monkeypatch.delenv("DVC_TEST") + monkeypatch.delenv("DVC_ANALYTICS", raising=False) + + assert result == analytics.is_enabled() + + +@pytest.mark.parametrize( + "config, env, result", + [ + (None, None, True), + (None, "true", True), + (None, "false", False), + ("false", None, False), + ("false", "true", True), + ("false", "false", False), + ("true", None, True), + ("true", "true", True), + ("true", "false", False), + ], +) +def test_is_enabled_env(dvc, config, env, result, monkeypatch, tmp_global_dir): + # reset DVC_TEST env var, which affects `is_enabled()` + monkeypatch.delenv("DVC_TEST") + monkeypatch.delenv("DVC_ANALYTICS", raising=False) + with dvc.config.edit() as conf: + conf["core"] = {} + + assert analytics.is_enabled() + + if config is not None: + with dvc.config.edit() as conf: + conf["core"] = {"analytics": config} + + if env is not None: + monkeypatch.setenv("DVC_ANALYTICS", env) assert result == analytics.is_enabled()