labnotes 0.0.113__tar.gz → 0.0.115__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.113 → labnotes-0.0.115}/PKG-INFO +1 -1
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/experiment_runs.py +12 -0
- labnotes-0.0.115/src/labnotes/tables/runs_columns.py +11 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/view_process.py +3 -1
- {labnotes-0.0.113 → labnotes-0.0.115}/testing-conventions.toml +0 -12
- {labnotes-0.0.113 → labnotes-0.0.115}/.gitignore +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/CHANGELOG.md +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/MIGRATIONS.md +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/README.md +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/pyproject.toml +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/__init__.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/__main__.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/asset_url.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/check_counts.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/cli.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/compose_experiment.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/context.md +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/context_guide.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/count_groups.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/count_runs.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/create_app.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/create_experiment.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/create_note.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/daemon/__init__.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/daemon/control_run.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/daemon/daemon_app.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/daemon/daemon_client.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/daemon/daemon_running.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/daemon/daemon_server.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/daemon/describe_status.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/daemon/ensure_daemon.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/daemon/exit_when_idle.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/daemon/finalize_lost_runs.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/daemon/remote_start.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/daemon/run_daemon.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/daemon/run_logs.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/daemon/serve_daemon.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/daemon/socket_path.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/daemon/stop_runs.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/daemon/watch_daemon.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/daemon/watch_status.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/daemon_command.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/data_html.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/default_config_text.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/default_counts.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/drain_watch.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/experiment_notes.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/experiments.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/file_changes.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/format_duration.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/format_started.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/format_value.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/group_runs.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/init.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/invocation_started.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/is_non_negative_int.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/is_non_negative_number.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/is_positive_int.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/list_experiments.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/list_runs.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/load_config.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/load_experiment.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/load_run.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/log.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/log_path.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/memory_interval.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/models.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/modes.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/nests_runs.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/note_path.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/notebook_kernel.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/output_html.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/parse_run_view.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/print_rows.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/python_blocks.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/read_config.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/read_path.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/render_markdown.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/retries.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/run_command.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/run_control.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/run_output.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/run_status.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/__init__.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/describe_event.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/execute_run.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/exit_signal.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/hold_folder.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/invocation_meta.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/new_param_run_id.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/new_run_id.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/new_stamped_run_id.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/param_args.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/param_grid.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/param_run_name.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/plan_runs.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/prepare_experiment.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/read_experiment_config.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/record_memory.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/run_experiment.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/run_folder.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/run_headless.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/runs_parent.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/shell_command.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/signal_tree.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/stop_then_kill.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/wait_for_tree.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runner/write_run_json.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/runs_view_command.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/save_conflict_copy.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/save_note.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/saved_outputs.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/serve_app.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/server.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/shared_params.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/sort_href.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/sql_quote.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/static/elapsed.js +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/static/experiment.js +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/static/labnotes.css +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/static/local-time.js +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/static/new-note.js +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/static/note-edit.js +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/static/note-editor.js +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/static/row-link.js +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/static/run-cell.js +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/static/run-output.js +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/static/view-toggle.js +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/summarize_config.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/__init__.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/experiment_rows.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/experiment_run_ids.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/experiment_toml.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/experiments_ddl.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/file_prefix.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/file_text.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/iso_time.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/list_experiment_runs.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/note_text.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/open_tables.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/path_glob.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/path_pattern.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/read_blocks.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/read_experiment.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/read_file.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/read_log.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/read_memory.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/read_run.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/read_run_file.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tables/summarize_experiments.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/templates/base.html +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/templates/editor_imports.html +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/templates/experiment.html +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/templates/index.html +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/templates/note.html +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/templates/run.html +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/__init__.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/browse_app.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/browse_tui.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/check_view_response.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/config.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/dim.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/experiment_screen.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/experiments_screen.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/fill_table.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/format_cell.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/format_elapsed.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/group_cells.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/invocation_columns.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/invocation_rows.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/leave_prompt.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/log_block.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/log_blocks.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/native_rows.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/reload_on_change.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/run_app.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/run_cells.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/run_output.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/run_screen.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/run_tui.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/runs_table.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/runs_view.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/stopped_title.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/tui/view_column.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/utils/__init__.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/utils/format_bytes.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/utils/process_alive.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/utils/run_usage.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/utils/tree_rss.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/utils/tree_usage.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/view/__init__.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/view/answer.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/view/build.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/view/respond.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/view/serve.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/wait_for_note.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/src/labnotes/watch_rows.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/tests/integration/conftest.py +0 -0
- {labnotes-0.0.113 → labnotes-0.0.115}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: labnotes
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.115
|
|
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>
|
|
@@ -1,14 +1,26 @@
|
|
|
1
|
+
import warnings
|
|
2
|
+
|
|
1
3
|
from labnotes.sql_quote import quote_identifier, quote_string
|
|
4
|
+
from labnotes.tables.runs_columns import runs_columns
|
|
2
5
|
|
|
3
6
|
STARTED = "strftime('%Y-%m-%d %H:%M:%S', created)"
|
|
4
7
|
DURATION = "CAST(round((julianday(ended) - julianday(created)) * 86400) AS INTEGER)"
|
|
5
8
|
|
|
6
9
|
|
|
7
10
|
def experiment_runs(experiment: str, params: list[str]) -> str:
|
|
11
|
+
taken = {*runs_columns(), "started", "duration"}
|
|
12
|
+
clashes = [key for key in params if key in taken]
|
|
13
|
+
if clashes:
|
|
14
|
+
warnings.warn(
|
|
15
|
+
f"Params {', '.join(clashes)} clash with runs columns;"
|
|
16
|
+
" the runs column wins. Read them from params instead.",
|
|
17
|
+
stacklevel=2,
|
|
18
|
+
)
|
|
8
19
|
columns = "".join(
|
|
9
20
|
f", params ->> {quote_string(f'$.{quote_identifier(key)}')}"
|
|
10
21
|
f" AS {quote_identifier(key)}"
|
|
11
22
|
for key in params
|
|
23
|
+
if key not in taken
|
|
12
24
|
)
|
|
13
25
|
return (
|
|
14
26
|
f"(SELECT *{columns}, {STARTED} AS started, {DURATION} AS duration FROM runs"
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import sqlite3
|
|
2
|
+
from functools import cache
|
|
3
|
+
|
|
4
|
+
from labnotes.tables.open_tables import RUNS
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@cache
|
|
8
|
+
def runs_columns() -> tuple[str, ...]:
|
|
9
|
+
with sqlite3.connect(":memory:") as db:
|
|
10
|
+
db.execute(RUNS)
|
|
11
|
+
return tuple(row[1] for row in db.execute("PRAGMA table_info(runs)"))
|
|
@@ -43,7 +43,9 @@ class ViewProcess:
|
|
|
43
43
|
)
|
|
44
44
|
self.stderr = asyncio.create_task(self.read_stderr(self.process.stderr))
|
|
45
45
|
stdin, stdout, stderr = self.process.stdin, self.process.stdout, self.stderr
|
|
46
|
-
assert stdin is not None
|
|
46
|
+
assert stdin is not None
|
|
47
|
+
assert stdout is not None
|
|
48
|
+
assert stderr is not None
|
|
47
49
|
started = time.monotonic()
|
|
48
50
|
stdin.write(json.dumps(payload).encode() + b"\n")
|
|
49
51
|
await stdin.drain()
|
|
@@ -81,15 +81,3 @@ path = "src/labnotes/experiments.py"
|
|
|
81
81
|
rules = ["mutation"]
|
|
82
82
|
lines = [109]
|
|
83
83
|
reason = "click hands back the \"json\" choice literal itself, so is not equals !="
|
|
84
|
-
|
|
85
|
-
[[python.exempt]]
|
|
86
|
-
path = "src/labnotes/tui/view_process.py"
|
|
87
|
-
rules = ["mutation"]
|
|
88
|
-
lines = [11, 12]
|
|
89
|
-
reason = "LINE_LIMIT is a ceiling far above any reply and GRACE_SECONDS a wait before the kill; nearby values behave the same"
|
|
90
|
-
|
|
91
|
-
[[python.exempt]]
|
|
92
|
-
path = "src/labnotes/tui/view_process.py"
|
|
93
|
-
rules = ["mutation"]
|
|
94
|
-
lines = [46]
|
|
95
|
-
reason = "the process is always made with three pipes, so every operand is true and and equals or; the assert only narrows types"
|
|
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
|
|
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
|
|
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
|