From 33c6a9b19b85cd1a7c9307637d313c9510ada277 Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Tue, 17 Aug 2021 15:16:40 +0300 Subject: [PATCH] analytics: introduce DVC_NO_ANALYTICS (#6453) Replacing DVC_ANALYTICS. This is following our other env conventions and will not have effect if set to false/no/etc, and will only work if set to true/yes/y/etc. Will disable analytics even if it is explicitly enabled in our configs. Kudos @skshetry --- dvc/analytics.py | 6 +++--- dvc/env.py | 2 +- tests/unit/test_analytics.py | 21 ++++++++++++--------- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/dvc/analytics.py b/dvc/analytics.py index beeeb3525..bb62483ff 100644 --- a/dvc/analytics.py +++ b/dvc/analytics.py @@ -2,7 +2,7 @@ import json import logging import os -from .env import DVC_ANALYTICS +from .env import DVC_NO_ANALYTICS logger = logging.getLogger(__name__) @@ -44,8 +44,8 @@ def is_enabled(): if env2bool("DVC_TEST"): return False - enabled = env2bool(DVC_ANALYTICS, None) - if enabled is None: + enabled = not os.getenv(DVC_NO_ANALYTICS) + if enabled: enabled = to_bool( Config(validate=False).get("core", {}).get("analytics", "true") ) diff --git a/dvc/env.py b/dvc/env.py index 1974321a0..2839772c6 100644 --- a/dvc/env.py +++ b/dvc/env.py @@ -9,4 +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" +DVC_NO_ANALYTICS = "DVC_NO_ANALYTICS" diff --git a/tests/unit/test_analytics.py b/tests/unit/test_analytics.py index a91cb3e00..e630ef944 100644 --- a/tests/unit/test_analytics.py +++ b/tests/unit/test_analytics.py @@ -87,7 +87,7 @@ 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) + monkeypatch.delenv("DVC_NO_ANALYTICS", raising=False) assert result == analytics.is_enabled() @@ -96,20 +96,23 @@ def test_is_enabled(dvc, config, result, monkeypatch, tmp_global_dir): "config, env, result", [ (None, None, True), - (None, "true", True), - (None, "false", False), + (None, "true", False), + (None, "false", False), # only checking if env is set ("false", None, False), - ("false", "true", True), + ("false", "true", False), ("false", "false", False), ("true", None, True), - ("true", "true", True), - ("true", "false", False), + ("true", "true", False), + ("true", "false", False), # we checking if env is set ], ) -def test_is_enabled_env(dvc, config, env, result, monkeypatch, tmp_global_dir): +def test_is_enabled_env_neg( + 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) + monkeypatch.delenv("DVC_NO_ANALYTICS", raising=False) + with dvc.config.edit() as conf: conf["core"] = {} @@ -120,7 +123,7 @@ def test_is_enabled_env(dvc, config, env, result, monkeypatch, tmp_global_dir): conf["core"] = {"analytics": config} if env is not None: - monkeypatch.setenv("DVC_ANALYTICS", env) + monkeypatch.setenv("DVC_NO_ANALYTICS", env) assert result == analytics.is_enabled()