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.
Files changed (89) hide show
  1. {labnotes-0.0.29 → labnotes-0.0.30}/PKG-INFO +1 -1
  2. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/context.md +1 -1
  3. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tui/run_app.py +3 -1
  4. {labnotes-0.0.29 → labnotes-0.0.30}/.gitignore +0 -0
  5. {labnotes-0.0.29 → labnotes-0.0.30}/CHANGELOG.md +0 -0
  6. {labnotes-0.0.29 → labnotes-0.0.30}/MIGRATIONS.md +0 -0
  7. {labnotes-0.0.29 → labnotes-0.0.30}/README.md +0 -0
  8. {labnotes-0.0.29 → labnotes-0.0.30}/pyproject.toml +0 -0
  9. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/__init__.py +0 -0
  10. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/asset_url.py +0 -0
  11. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/cell_progress.py +0 -0
  12. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/cli.py +0 -0
  13. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/context_guide.py +0 -0
  14. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/count_runs.py +0 -0
  15. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/create_app.py +0 -0
  16. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/create_experiment.py +0 -0
  17. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/data_html.py +0 -0
  18. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/default_config_text.py +0 -0
  19. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/default_counts.py +0 -0
  20. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/drain_watch.py +0 -0
  21. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/experiment_notes.py +0 -0
  22. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/experiment_progress.py +0 -0
  23. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/experiment_runs.py +0 -0
  24. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/experiments.py +0 -0
  25. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/format_value.py +0 -0
  26. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/init.py +0 -0
  27. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/list_experiments.py +0 -0
  28. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/list_runs.py +0 -0
  29. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/load_config.py +0 -0
  30. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/load_experiment.py +0 -0
  31. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/models.py +0 -0
  32. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/notebook_kernel.py +0 -0
  33. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/output_html.py +0 -0
  34. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/parse_run_view.py +0 -0
  35. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/pivot_cells.py +0 -0
  36. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/print_rows.py +0 -0
  37. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/python_blocks.py +0 -0
  38. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/read_config.py +0 -0
  39. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/read_path.py +0 -0
  40. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/render_markdown.py +0 -0
  41. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/__init__.py +0 -0
  42. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/describe_event.py +0 -0
  43. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/execute_run.py +0 -0
  44. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/lock_path.py +0 -0
  45. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/new_run_id.py +0 -0
  46. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/param_args.py +0 -0
  47. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/param_grid.py +0 -0
  48. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/plan_runs.py +0 -0
  49. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/read_experiment_config.py +0 -0
  50. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/run_experiment.py +0 -0
  51. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/run_folder.py +0 -0
  52. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/run_headless.py +0 -0
  53. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/shell_command.py +0 -0
  54. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/start_experiment.py +0 -0
  55. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/stop_then_kill.py +0 -0
  56. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/wait_for_group.py +0 -0
  57. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/runner/write_run_json.py +0 -0
  58. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/saved_outputs.py +0 -0
  59. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/serve_app.py +0 -0
  60. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/server.py +0 -0
  61. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/sort_href.py +0 -0
  62. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/sql_quote.py +0 -0
  63. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/static/labnotes.css +0 -0
  64. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/static/row-link.js +0 -0
  65. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/static/run-cell.js +0 -0
  66. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/static/view-toggle.js +0 -0
  67. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/stop_idle_kernels.py +0 -0
  68. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/summarize_config.py +0 -0
  69. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/__init__.py +0 -0
  70. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/experiment_rows.py +0 -0
  71. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/file_prefix.py +0 -0
  72. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/iso_time.py +0 -0
  73. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/list_experiment_runs.py +0 -0
  74. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/open_tables.py +0 -0
  75. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/path_glob.py +0 -0
  76. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/path_pattern.py +0 -0
  77. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/read_experiment.py +0 -0
  78. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/read_file.py +0 -0
  79. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/read_run.py +0 -0
  80. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tables/summarize_experiments.py +0 -0
  81. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/templates/base.html +0 -0
  82. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/templates/experiment.html +0 -0
  83. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/templates/index.html +0 -0
  84. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/templates/macros.html +0 -0
  85. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tui/__init__.py +0 -0
  86. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tui/dim.py +0 -0
  87. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tui/format_elapsed.py +0 -0
  88. {labnotes-0.0.29 → labnotes-0.0.30}/src/labnotes/tui/run_tui.py +0 -0
  89. {labnotes-0.0.29 → labnotes-0.0.30}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: labnotes
3
- Version: 0.0.29
3
+ Version: 0.0.30
4
4
  Summary: Browse experiment designs, notes, and run data from a folder.
5
5
  Project-URL: Repository, https://github.com/thekevinscott/labnotes
6
6
  Author-email: Kevin Scott <me@thekevinscott.com>
@@ -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
- self.set_cell(run, "status", outcome)
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