From b10b6eed430186ef85368a51c7673419fa1ff698 Mon Sep 17 00:00:00 2001 From: Arya_Salem09 <88246378+aryasalem09@users.noreply.github.com> Date: Fri, 17 Jul 2026 17:12:14 -0500 Subject: [PATCH] Fix progress output in non-interactive shells Co-authored-by: Codex --- src/parcels/_core/particleset.py | 1 + tests/test_particleset.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/parcels/_core/particleset.py b/src/parcels/_core/particleset.py index 6f65d53e0..9f5836051 100644 --- a/src/parcels/_core/particleset.py +++ b/src/parcels/_core/particleset.py @@ -420,6 +420,7 @@ def execute( pbar = tqdm( total=sign_dt * (end_time - start_time), file=sys.stdout, + disable=None, bar_format="{desc} {percentage:3.0f}%|{bar}| [{elapsed}<{remaining}, {rate_fmt}]", ) pbar.set_description_str( diff --git a/tests/test_particleset.py b/tests/test_particleset.py index c8211baf9..5f821268a 100644 --- a/tests/test_particleset.py +++ b/tests/test_particleset.py @@ -1,3 +1,4 @@ +import sys from contextlib import nullcontext as does_not_raise from datetime import datetime, timedelta from operator import attrgetter @@ -33,6 +34,23 @@ def test_create_empty_pset(fieldset): assert pset.size == 0 +@pytest.mark.parametrize( + ("is_tty", "expect_progress"), + [(True, True), (False, False)], +) +def test_pset_execute_progress_respects_stdout_tty(fieldset, monkeypatch, capsys, is_tty, expect_progress): + monkeypatch.setattr(sys.stdout, "isatty", lambda: is_tty) + pset = ParticleSet(fieldset, x=0, y=0, pclass=Particle) + + pset.execute( + DoNothing, + runtime=np.timedelta64(1, "s"), + dt=np.timedelta64(1, "s"), + ) + + assert bool(capsys.readouterr().out) is expect_progress + + @pytest.mark.parametrize("offset", [0, 1, 200]) def test_pset_with_pids(fieldset, offset, npart=100): lon = np.linspace(0, 1, npart)