From f0a5d97a5b9b91550d7c5e6979ab3add83b779a9 Mon Sep 17 00:00:00 2001 From: George Sittas Date: Wed, 9 Jul 2025 12:51:23 +0300 Subject: [PATCH] Fix: do not display signal progress if a project has no signals --- sqlmesh/core/console.py | 5 ++++- sqlmesh/core/scheduler.py | 2 +- tests/cli/test_cli.py | 15 +++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/sqlmesh/core/console.py b/sqlmesh/core/console.py index 78020b693f..2f51a20a74 100644 --- a/sqlmesh/core/console.py +++ b/sqlmesh/core/console.py @@ -912,6 +912,7 @@ def __init__( self.table_diff_model_tasks: t.Dict[str, TaskID] = {} self.table_diff_progress_live: t.Optional[Live] = None + self.signal_progress_logged = False self.signal_status_tree: t.Optional[Tree] = None self.verbosity = verbosity @@ -956,7 +957,8 @@ def start_evaluation_progress( ) -> None: """Indicates that a new snapshot evaluation/auditing progress has begun.""" # Add a newline to separate signal checking from evaluation - self._print("") + if self.signal_progress_logged: + self._print("") if not self.evaluation_progress_live: self.evaluation_total_progress = make_progress_bar( @@ -1188,6 +1190,7 @@ def stop_signal_progress(self) -> None: if self.signal_status_tree is not None: self._print(self.signal_status_tree) self.signal_status_tree = None + self.signal_progress_logged = True def start_creation_progress( self, diff --git a/sqlmesh/core/scheduler.py b/sqlmesh/core/scheduler.py index 2b9cb6189f..4582b24485 100644 --- a/sqlmesh/core/scheduler.py +++ b/sqlmesh/core/scheduler.py @@ -754,7 +754,7 @@ def _check_ready_intervals( """ signals = snapshot.is_model and snapshot.model.render_signal_calls() - if not signals: + if not (signals and signals.signals_to_kwargs): return intervals self.console.start_signal_progress( diff --git a/tests/cli/test_cli.py b/tests/cli/test_cli.py index 9078e9832d..6f0d1ac089 100644 --- a/tests/cli/test_cli.py +++ b/tests/cli/test_cli.py @@ -2175,3 +2175,18 @@ def none_ready(batch): # Only one model was executed assert "100.0% • 1/1 • 0:00:00" in result.output + + rmtree(tmp_path) + tmp_path.mkdir(parents=True, exist_ok=True) + + create_example_project(tmp_path) + + # Example project models have start dates, so there are no date prompts + # for the `prod` environment. + # Input: `y` to apply and backfill + result = runner.invoke( + cli, ["--log-file-dir", str(tmp_path), "--paths", str(tmp_path), "plan"], input="y\n" + ) + assert_plan_success(result) + + assert "Checking signals" not in result.output