labnotes 0.0.29__tar.gz → 0.0.30__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {labnotes-0.0.29 → labnotes-0.0.30}/PKG-INFO +1 -1
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/context.md +1 -1
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tui/run_app.py +3 -1
- {labnotes-0.0.29 → labnotes-0.0.30}/.gitignore +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/CHANGELOG.md +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/MIGRATIONS.md +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/README.md +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/pyproject.toml +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/__init__.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/asset_url.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/cell_progress.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/cli.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/context_guide.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/count_runs.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/create_app.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/create_experiment.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/data_html.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/default_config_text.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/default_counts.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/drain_watch.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/experiment_notes.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/experiment_progress.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/experiment_runs.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/experiments.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/format_value.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/init.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/list_experiments.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/list_runs.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/load_config.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/load_experiment.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/models.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/notebook_kernel.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/output_html.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/parse_run_view.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/pivot_cells.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/print_rows.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/python_blocks.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/read_config.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/read_path.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/render_markdown.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/__init__.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/describe_event.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/execute_run.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/lock_path.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/new_run_id.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/param_args.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/param_grid.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/plan_runs.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/read_experiment_config.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/run_experiment.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/run_folder.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/run_headless.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/shell_command.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/start_experiment.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/stop_then_kill.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/wait_for_group.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/write_run_json.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/saved_outputs.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/serve_app.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/server.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/sort_href.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/sql_quote.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/static/labnotes.css +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/static/row-link.js +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/static/run-cell.js +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/static/view-toggle.js +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/stop_idle_kernels.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/summarize_config.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/__init__.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/experiment_rows.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/file_prefix.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/iso_time.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/list_experiment_runs.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/open_tables.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/path_glob.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/path_pattern.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/read_experiment.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/read_file.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/read_run.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/summarize_experiments.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/templates/base.html +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/templates/experiment.html +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/templates/index.html +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/templates/macros.html +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tui/__init__.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tui/dim.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tui/format_elapsed.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tui/run_tui.py +0 -0
- {labnotes-0.0.29 → labnotes-0.0.30}/uv.lock +0 -0
|
@@ -86,7 +86,7 @@ A script run by labnotes should:
|
|
|
86
86
|
Runs can take a long time. Start `run` in the background, then check on it with `labnotes experiments foo runs`; a run with no `ended` is still going.
|
|
87
87
|
|
|
88
88
|
In a terminal, `run` shows a live table of runs (status and time) and stays
|
|
89
|
-
open when they finish. Runs not started yet show grayed as `pending`, and as
|
|
89
|
+
open when they finish. Failed runs show their status in red. Runs not started yet show grayed as `pending`, and as
|
|
90
90
|
`skipped` once stopped. Move the cursor to a pending run and press `n` to run it
|
|
91
91
|
next. `d` deselects a pending run so it won't run; `d` again puts it back at
|
|
92
92
|
the end of the queue. `/` filters rows by params text; Enter keeps the filter,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import signal
|
|
2
2
|
import time
|
|
3
3
|
|
|
4
|
+
from rich.text import Text
|
|
4
5
|
from textual.app import App, ComposeResult
|
|
5
6
|
from textual.binding import Binding
|
|
6
7
|
from textual.widgets import DataTable, Footer, Header, Input, Static
|
|
@@ -98,7 +99,8 @@ class RunApp(App[None]):
|
|
|
98
99
|
self.set_cell(run, column, cell)
|
|
99
100
|
case "ended":
|
|
100
101
|
outcome = event["error"] or f"exited {event['exit_code']}"
|
|
101
|
-
|
|
102
|
+
style = "red" if event["error"] or event["exit_code"] else ""
|
|
103
|
+
self.set_cell(run, "status", Text(str(outcome), style=style))
|
|
102
104
|
self.tick()
|
|
103
105
|
del self.started[run]
|
|
104
106
|
case "queued":
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|