labnotes 0.0.85__tar.gz → 0.0.87__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 (154) hide show
  1. {labnotes-0.0.85 → labnotes-0.0.87}/PKG-INFO +5 -5
  2. {labnotes-0.0.85 → labnotes-0.0.87}/README.md +4 -4
  3. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/context.md +2 -2
  4. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/experiments.py +1 -6
  5. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tui/experiment_screen.py +2 -2
  6. {labnotes-0.0.85 → labnotes-0.0.87}/.gitignore +0 -0
  7. {labnotes-0.0.85 → labnotes-0.0.87}/CHANGELOG.md +0 -0
  8. {labnotes-0.0.85 → labnotes-0.0.87}/MIGRATIONS.md +0 -0
  9. {labnotes-0.0.85 → labnotes-0.0.87}/pyproject.toml +0 -0
  10. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/__init__.py +0 -0
  11. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/__main__.py +0 -0
  12. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/asset_url.py +0 -0
  13. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/check_counts.py +0 -0
  14. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/cli.py +0 -0
  15. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/context_guide.py +0 -0
  16. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/count_groups.py +0 -0
  17. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/count_runs.py +0 -0
  18. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/create_app.py +0 -0
  19. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/create_experiment.py +0 -0
  20. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/create_note.py +0 -0
  21. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/daemon/__init__.py +0 -0
  22. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/daemon/control_run.py +0 -0
  23. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/daemon/daemon_app.py +0 -0
  24. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/daemon/daemon_client.py +0 -0
  25. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/daemon/daemon_running.py +0 -0
  26. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/daemon/daemon_server.py +0 -0
  27. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/daemon/describe_status.py +0 -0
  28. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/daemon/ensure_daemon.py +0 -0
  29. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/daemon/exit_when_idle.py +0 -0
  30. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/daemon/remote_start.py +0 -0
  31. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/daemon/run_daemon.py +0 -0
  32. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/daemon/run_logs.py +0 -0
  33. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/daemon/serve_daemon.py +0 -0
  34. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/daemon/socket_path.py +0 -0
  35. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/daemon/stop_runs.py +0 -0
  36. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/daemon/watch_daemon.py +0 -0
  37. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/daemon/watch_status.py +0 -0
  38. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/daemon_command.py +0 -0
  39. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/data_html.py +0 -0
  40. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/default_config_text.py +0 -0
  41. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/default_counts.py +0 -0
  42. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/drain_watch.py +0 -0
  43. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/experiment_notes.py +0 -0
  44. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/experiment_runs.py +0 -0
  45. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/file_changes.py +0 -0
  46. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/format_duration.py +0 -0
  47. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/format_started.py +0 -0
  48. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/format_value.py +0 -0
  49. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/group_runs.py +0 -0
  50. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/init.py +0 -0
  51. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/invocation_started.py +0 -0
  52. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/is_positive_int.py +0 -0
  53. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/list_experiments.py +0 -0
  54. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/list_runs.py +0 -0
  55. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/load_config.py +0 -0
  56. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/load_experiment.py +0 -0
  57. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/load_run.py +0 -0
  58. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/models.py +0 -0
  59. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/modes.py +0 -0
  60. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/nests_runs.py +0 -0
  61. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/note_path.py +0 -0
  62. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/notebook_kernel.py +0 -0
  63. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/output_html.py +0 -0
  64. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/parse_run_view.py +0 -0
  65. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/print_rows.py +0 -0
  66. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/python_blocks.py +0 -0
  67. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/read_config.py +0 -0
  68. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/read_path.py +0 -0
  69. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/render_markdown.py +0 -0
  70. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/run_command.py +0 -0
  71. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/run_control.py +0 -0
  72. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/run_output.py +0 -0
  73. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/run_status.py +0 -0
  74. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/__init__.py +0 -0
  75. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/describe_event.py +0 -0
  76. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/execute_run.py +0 -0
  77. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/hold_folder.py +0 -0
  78. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/new_param_run_id.py +0 -0
  79. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/new_run_id.py +0 -0
  80. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/new_stamped_run_id.py +0 -0
  81. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/param_args.py +0 -0
  82. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/param_grid.py +0 -0
  83. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/param_run_name.py +0 -0
  84. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/plan_runs.py +0 -0
  85. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/prepare_experiment.py +0 -0
  86. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/read_experiment_config.py +0 -0
  87. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/run_experiment.py +0 -0
  88. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/run_folder.py +0 -0
  89. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/run_headless.py +0 -0
  90. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/runs_parent.py +0 -0
  91. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/shell_command.py +0 -0
  92. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/signal_tree.py +0 -0
  93. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/stop_then_kill.py +0 -0
  94. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/wait_for_tree.py +0 -0
  95. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/runner/write_run_json.py +0 -0
  96. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/save_conflict_copy.py +0 -0
  97. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/save_note.py +0 -0
  98. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/saved_outputs.py +0 -0
  99. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/serve_app.py +0 -0
  100. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/server.py +0 -0
  101. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/shared_params.py +0 -0
  102. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/sort_href.py +0 -0
  103. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/sql_quote.py +0 -0
  104. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/static/elapsed.js +0 -0
  105. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/static/experiment.js +0 -0
  106. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/static/labnotes.css +0 -0
  107. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/static/local-time.js +0 -0
  108. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/static/new-note.js +0 -0
  109. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/static/note-edit.js +0 -0
  110. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/static/note-editor.js +0 -0
  111. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/static/row-link.js +0 -0
  112. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/static/run-cell.js +0 -0
  113. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/static/run-output.js +0 -0
  114. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/static/view-toggle.js +0 -0
  115. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/summarize_config.py +0 -0
  116. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tables/__init__.py +0 -0
  117. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tables/experiment_rows.py +0 -0
  118. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tables/experiment_run_ids.py +0 -0
  119. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tables/file_prefix.py +0 -0
  120. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tables/file_text.py +0 -0
  121. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tables/iso_time.py +0 -0
  122. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tables/list_experiment_runs.py +0 -0
  123. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tables/note_text.py +0 -0
  124. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tables/open_tables.py +0 -0
  125. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tables/path_glob.py +0 -0
  126. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tables/path_pattern.py +0 -0
  127. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tables/read_experiment.py +0 -0
  128. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tables/read_file.py +0 -0
  129. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tables/read_log.py +0 -0
  130. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tables/read_run.py +0 -0
  131. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tables/summarize_experiments.py +0 -0
  132. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/templates/base.html +0 -0
  133. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/templates/editor_imports.html +0 -0
  134. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/templates/experiment.html +0 -0
  135. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/templates/index.html +0 -0
  136. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/templates/note.html +0 -0
  137. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/templates/run.html +0 -0
  138. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tui/__init__.py +0 -0
  139. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tui/browse_app.py +0 -0
  140. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tui/browse_tui.py +0 -0
  141. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tui/dim.py +0 -0
  142. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tui/experiments_screen.py +0 -0
  143. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tui/format_elapsed.py +0 -0
  144. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tui/group_cells.py +0 -0
  145. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tui/invocation_columns.py +0 -0
  146. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tui/invocation_rows.py +0 -0
  147. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tui/run_app.py +0 -0
  148. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tui/run_cells.py +0 -0
  149. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tui/run_tui.py +0 -0
  150. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/tui/runs_table.py +0 -0
  151. {labnotes-0.0.85 → labnotes-0.0.87}/src/labnotes/wait_for_note.py +0 -0
  152. {labnotes-0.0.85 → labnotes-0.0.87}/testing-conventions.toml +0 -0
  153. {labnotes-0.0.85 → labnotes-0.0.87}/tests/integration/conftest.py +0 -0
  154. {labnotes-0.0.85 → labnotes-0.0.87}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: labnotes
3
- Version: 0.0.85
3
+ Version: 0.0.87
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>
@@ -69,10 +69,10 @@ labnotes experiments foo runs # foo's runs, oldest first
69
69
  ```
70
70
 
71
71
  Each takes `--format table` or `--format json`, which print rows and exit.
72
- Without `--format`, `labnotes experiments` and `labnotes experiments foo` open
73
- a browser in a terminal: the experiment list, Enter to open one, Escape to go
74
- back. An experiment shows its runs grouped by invocation; Space opens one.
75
- Piped, they print a table.
72
+ Without `--format`, they open a browser in a terminal: the experiment list,
73
+ Enter to open one, Escape to go back. `foo` and `foo runs` open straight on
74
+ `foo`, which shows its runs grouped by invocation; Enter expands or collapses
75
+ one. Piped, they print a table.
76
76
 
77
77
  `labnotes experiments new [NAME]` creates an experiment folder with a starter
78
78
  `experiment.toml`, picking a random name if you give none. `new` itself can't
@@ -45,10 +45,10 @@ labnotes experiments foo runs # foo's runs, oldest first
45
45
  ```
46
46
 
47
47
  Each takes `--format table` or `--format json`, which print rows and exit.
48
- Without `--format`, `labnotes experiments` and `labnotes experiments foo` open
49
- a browser in a terminal: the experiment list, Enter to open one, Escape to go
50
- back. An experiment shows its runs grouped by invocation; Space opens one.
51
- Piped, they print a table.
48
+ Without `--format`, they open a browser in a terminal: the experiment list,
49
+ Enter to open one, Escape to go back. `foo` and `foo runs` open straight on
50
+ `foo`, which shows its runs grouped by invocation; Enter expands or collapses
51
+ one. Piped, they print a table.
52
52
 
53
53
  `labnotes experiments new [NAME]` creates an experiment folder with a starter
54
54
  `experiment.toml`, picking a random name if you give none. `new` itself can't
@@ -35,8 +35,8 @@ labnotes experiments foo runs --format json # foo's runs, oldest first
35
35
  ```
36
36
 
37
37
  Always pass `--format json` (to parse) or `--format table`. Without `--format`,
38
- `labnotes experiments` and `labnotes experiments foo` open an interactive
39
- browser when they find a terminal, and wait for keys that never come.
38
+ all three open an interactive browser when they find a terminal, and wait for
39
+ keys that never come.
40
40
 
41
41
  `labnotes experiments new [NAME]` creates an experiment folder with a starter
42
42
  `experiment.toml`, picking a random name if you give none. `new` itself can't
@@ -76,12 +76,7 @@ def experiments(
76
76
  return
77
77
  if action not in (None, "runs"):
78
78
  raise click.UsageError(f"Unknown action {action}. Use runs or run.")
79
- if (
80
- action is None
81
- and output_format is None
82
- and sys.stdout.isatty()
83
- and sys.stderr.isatty()
84
- ):
79
+ if output_format is None and sys.stdout.isatty() and sys.stderr.isatty():
85
80
  try:
86
81
  browse_tui(config, name)
87
82
  except ValueError as error:
@@ -17,7 +17,7 @@ from labnotes.tui.runs_table import RunsTable
17
17
 
18
18
  class ExperimentScreen(Screen[None]):
19
19
  BINDINGS = [
20
- Binding("space", "open_invocation", "Open invocation"),
20
+ Binding("enter", "toggle_invocation", "Expand", priority=True),
21
21
  Binding("escape", "app.pop_screen", "Back"),
22
22
  ]
23
23
 
@@ -65,7 +65,7 @@ class ExperimentScreen(Screen[None]):
65
65
  table.add_row(*cells, key=key)
66
66
  table.move_cursor(row=row)
67
67
 
68
- def action_open_invocation(self) -> None:
68
+ def action_toggle_invocation(self) -> None:
69
69
  table = self.query_one(DataTable)
70
70
  if not table.row_count:
71
71
  return
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes