Skip to content

Commit 99ba717

Browse files
authored
Don't display a table when no entry is present. (#189)
1 parent 3428f00 commit 99ba717

File tree

3 files changed

+52
-45
lines changed

3 files changed

+52
-45
lines changed

docs/source/changes.rst

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ all releases are available on `PyPI <https://pypi.org/project/pytask>`_ and
1414
- :gh:`187` allows to enable and disable showing tracebacks and potentially different
1515
styles in the future with :confval:`show_traceback=True|False`.
1616
- :gh:`188` refactors some code related to :class:`_pytask.enums.ExitCode`.
17+
- :gh:`189` do not display a table in the execution if no task was run.
1718

1819

1920
0.1.4 - 2022-01-04

src/_pytask/live.py

+45-43
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,9 @@ def pytask_execute_build(self) -> Generator[None, None, None]:
156156
self._live_manager.start()
157157
yield
158158
self._live_manager.stop(transient=True)
159-
console.print(self._generate_table(reduce_table=False, sort_table=True))
159+
table = self._generate_table(reduce_table=False, sort_table=True)
160+
if table is not None:
161+
console.print(table)
160162

161163
@hookimpl(tryfirst=True)
162164
def pytask_execute_task_log_start(self, task: MetaTask) -> bool:
@@ -179,53 +181,53 @@ def _generate_table(self, reduce_table: bool, sort_table: bool) -> Optional[Tabl
179181
if more entries are requested, the list is filled up with completed tasks.
180182
181183
"""
182-
if self._running_tasks or self._reports:
183-
184-
n_reports_to_display = self._n_entries_in_table - len(self._running_tasks)
185-
if not reduce_table:
186-
relevant_reports = self._reports
187-
elif n_reports_to_display >= 1:
188-
relevant_reports = self._reports[-n_reports_to_display:]
189-
else:
190-
relevant_reports = []
191-
192-
if sort_table:
193-
relevant_reports = sorted(
194-
relevant_reports, key=lambda report: report["name"]
184+
n_reports_to_display = self._n_entries_in_table - len(self._running_tasks)
185+
if not reduce_table:
186+
relevant_reports = self._reports
187+
elif n_reports_to_display >= 1:
188+
relevant_reports = self._reports[-n_reports_to_display:]
189+
else:
190+
relevant_reports = []
191+
192+
if sort_table:
193+
relevant_reports = sorted(
194+
relevant_reports, key=lambda report: report["name"]
195+
)
196+
197+
table = Table()
198+
table.add_column("Task", overflow="fold")
199+
table.add_column("Outcome")
200+
for report in relevant_reports:
201+
if (
202+
report["outcome"]
203+
in (
204+
TaskOutcome.SKIP,
205+
TaskOutcome.SKIP_UNCHANGED,
206+
TaskOutcome.SKIP_PREVIOUS_FAILED,
207+
TaskOutcome.PERSISTENCE,
195208
)
196-
197-
table = Table()
198-
table.add_column("Task", overflow="fold")
199-
table.add_column("Outcome")
200-
for report in relevant_reports:
201-
if (
202-
report["outcome"]
203-
in (
204-
TaskOutcome.SKIP,
205-
TaskOutcome.SKIP_UNCHANGED,
206-
TaskOutcome.SKIP_PREVIOUS_FAILED,
207-
TaskOutcome.PERSISTENCE,
208-
)
209-
and self._verbose < 2
210-
):
211-
pass
212-
else:
213-
table.add_row(
214-
format_task_id(
215-
report["task"],
216-
editor_url_scheme=self._editor_url_scheme,
217-
short_name=True,
218-
),
219-
Text(report["outcome"].symbol, style=report["outcome"].style),
220-
)
221-
for task in self._running_tasks.values():
209+
and self._verbose < 2
210+
):
211+
pass
212+
else:
222213
table.add_row(
223214
format_task_id(
224-
task, editor_url_scheme=self._editor_url_scheme, short_name=True
215+
report["task"],
216+
editor_url_scheme=self._editor_url_scheme,
217+
short_name=True,
225218
),
226-
"running",
219+
Text(report["outcome"].symbol, style=report["outcome"].style),
227220
)
228-
else:
221+
for task in self._running_tasks.values():
222+
table.add_row(
223+
format_task_id(
224+
task, editor_url_scheme=self._editor_url_scheme, short_name=True
225+
),
226+
"running",
227+
)
228+
229+
# If the table is empty, do not display anything.
230+
if table.rows == []:
229231
table = None
230232

231233
return table

tests/test_live.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -131,18 +131,22 @@ def test_live_execution_displays_skips_and_persists(capsys, tmp_path, verbose, o
131131

132132
# Test final table with reported outcome.
133133
captured = capsys.readouterr()
134-
assert "Task" in captured.out
135-
assert "Outcome" in captured.out
136134

137135
if verbose < 2 and outcome in (
138136
TaskOutcome.SKIP,
139137
TaskOutcome.SKIP_UNCHANGED,
140138
TaskOutcome.SKIP_PREVIOUS_FAILED,
141139
TaskOutcome.PERSISTENCE,
142140
):
141+
# An empty table is not shown.
142+
assert "Task" not in captured.out
143+
assert "Outcome" not in captured.out
144+
143145
assert "task_module.py::task_example" not in captured.out
144146
assert f"│ {outcome.symbol}" not in captured.out
145147
else:
148+
assert "Task" in captured.out
149+
assert "Outcome" in captured.out
146150
assert "task_module.py::task_example" in captured.out
147151
assert f"│ {outcome.symbol}" in captured.out
148152

0 commit comments

Comments
 (0)