From 276a2b02a3c949dbf506b84294ef5ef9a39976aa Mon Sep 17 00:00:00 2001 From: Casper da Costa-Luis Date: Fri, 14 Feb 2020 22:53:52 +0000 Subject: [PATCH] ui: make progress bars respect `--quiet` (#3316) * ui: default no_progress_bar=None instead of False Fixes #3314 * ui: catch remaining missing auto-quiet progress * progress: treat disable=False as None * test: progress.Tqdm(disable=False) * revert no_progress_bar=None <= False partially reverts e0342a8641f0101d --- dvc/progress.py | 5 +++-- dvc/repo/add.py | 4 ++-- tests/unit/test_progress.py | 11 +++++++++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/dvc/progress.py b/dvc/progress.py index d03b037c0..a8ab61951 100644 --- a/dvc/progress.py +++ b/dvc/progress.py @@ -55,7 +55,8 @@ class Tqdm(tqdm): desc : persists after `close()` level : effective logging level for determining `disable`; used only if `disable` is unspecified - disable : If (default: None), will be determined by logging level. + disable : If (default: None) or False, + will be determined by logging level. May be overridden to `True` due to non-TTY status. Skip override by specifying env var `DVC_IGNORE_ISATTY`. kwargs : anything accepted by `tqdm.tqdm()` @@ -69,7 +70,7 @@ class Tqdm(tqdm): file = sys.stderr self.desc_persist = desc # auto-disable based on `logger.level` - if disable is None: + if not disable: disable = logger.getEffectiveLevel() > level # auto-disable based on TTY if ( diff --git a/dvc/repo/add.py b/dvc/repo/add.py index fbbf7ed91..f216d6dde 100644 --- a/dvc/repo/add.py +++ b/dvc/repo/add.py @@ -73,7 +73,7 @@ def add(repo, targets, recursive=False, no_commit=False, fname=None): total=len(stages), desc="Processing", unit="file", - disable=True if len(stages) == 1 else None, + disable=len(stages) == 1, ) as pbar_stages: for stage in stages: try: @@ -120,7 +120,7 @@ def _create_stages(repo, targets, fname, pbar=None): for out in Tqdm( targets, desc="Creating DVC-files", - disable=True if len(targets) < LARGE_DIR_SIZE else None, + disable=len(targets) < LARGE_DIR_SIZE, unit="file", ): stage = Stage.create( diff --git a/tests/unit/test_progress.py b/tests/unit/test_progress.py index 72005f65c..30dd7e662 100644 --- a/tests/unit/test_progress.py +++ b/tests/unit/test_progress.py @@ -16,6 +16,17 @@ def test_quiet_logging(caplog, capsys): assert out_err.err == "" +def test_quiet_logging_disable_false(caplog, capsys): + with caplog.at_level(logging.CRITICAL, logger="dvc"): + # simulate interactive terminal + with mock.patch.object(sys.stderr, "isatty", return_value=True): + for _ in Tqdm(range(10), disable=False): + pass + out_err = capsys.readouterr() + assert out_err.out == "" + assert out_err.err == "" + + def test_quiet_notty(caplog, capsys): with caplog.at_level(logging.INFO, logger="dvc"): for _ in Tqdm(range(10)):