labnotes 0.1.1__tar.gz → 0.1.2__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.1.1 → labnotes-0.1.2}/PKG-INFO +3 -2
- {labnotes-0.1.1 → labnotes-0.1.2}/README.md +2 -1
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/context.md +4 -2
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/experiments.py +2 -1
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/parse_subset.py +3 -5
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/check_subset.py +7 -6
- labnotes-0.1.2/src/labnotes/runner/in_subset.py +5 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/prepare_experiment.py +1 -1
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/run_experiment.py +1 -1
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/start_experiment.py +1 -1
- labnotes-0.1.1/src/labnotes/runner/in_subset.py +0 -5
- {labnotes-0.1.1 → labnotes-0.1.2}/.gitignore +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/CHANGELOG.md +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/MIGRATIONS.md +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/pyproject.toml +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/__init__.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/__main__.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/asset_url.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/check_counts.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/cli.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/compose_experiment.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/context_guide.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/count_groups.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/count_runs.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/create_app.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/create_experiment.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/create_note.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/data_html.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/default_config_text.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/default_counts.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/drain_watch.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/experiment_notes.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/experiment_runs.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/file_changes.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/format_duration.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/format_started.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/format_value.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/get_state.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/grid_cell.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/group_runs.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/init.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/invocation_started.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/is_non_negative_int.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/is_non_negative_number.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/is_positive_int.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/list_experiments.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/list_runs.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/load_config.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/load_experiment.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/load_run.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/log.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/log_path.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/memory_interval.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/models.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/modes.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/nests_runs.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/note_path.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/notebook_kernel.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/output_html.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/parse_run_view.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/pivot_runs.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/print_rows.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/python_blocks.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/read_config.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/read_path.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/render_markdown.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/retries.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/run_output.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/__init__.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/cgroup_memory.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/check_args.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/container_cgroup.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/container_memory.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/describe_event.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/docker_output.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/execute_run.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/exit_signal.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/fill_dirs.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/fill_experiment_env.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/finalize_lost_runs.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/flag_name.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/hook_dirs.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/invocation_hook.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/invocation_meta.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/new_param_run_id.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/new_run_id.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/new_stamped_run_id.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/param_args.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/param_grid.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/param_run_name.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/placeholders.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/plan_runs.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/project_snapshot.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/read_experiment_config.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/record_memory.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/run_folder.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/run_git.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/run_headless.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/runs_parent.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/shell_command.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/signal_tree.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/stop_then_kill.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/wait_for_tree.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runner/write_run_json.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/runs_view_command.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/save_conflict_copy.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/save_note.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/saved_outputs.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/serve_app.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/server.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/set_state.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/shared_params.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/sort_href.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/sql_quote.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/state_path.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/static/elapsed.js +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/static/experiment.js +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/static/labnotes.css +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/static/local-time.js +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/static/new-note.js +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/static/note-edit.js +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/static/note-editor.js +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/static/row-link.js +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/static/run-cell.js +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/static/run-output.js +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/static/view-toggle.js +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/summarize_config.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/__init__.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/experiment_rows.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/experiment_run_ids.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/experiment_toml.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/experiments_ddl.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/file_prefix.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/file_text.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/iso_time.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/list_experiment_runs.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/note_text.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/open_tables.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/path_glob.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/path_pattern.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/read_blocks.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/read_experiment.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/read_file.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/read_log.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/read_memory.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/read_run.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/read_run_file.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/runs_columns.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tables/summarize_experiments.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/templates/base.html +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/templates/editor_imports.html +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/templates/experiment.html +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/templates/index.html +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/templates/note.html +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/templates/run.html +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/__init__.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/browse_app.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/browse_tui.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/check_view_response.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/config.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/dim.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/experiment_screen.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/experiments_screen.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/fill_table.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/format_cell.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/format_elapsed.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/group_cells.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/invocation_columns.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/invocation_rows.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/leave_prompt.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/log_block.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/log_blocks.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/native_rows.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/reload_on_change.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/run_app.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/run_cells.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/run_output.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/run_screen.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/run_tui.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/runs_table.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/runs_view.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/stopped_title.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/view_column.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/tui/view_process.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/utils/__init__.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/utils/format_bytes.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/utils/process_alive.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/utils/run_usage.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/utils/tree_rss.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/utils/tree_usage.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/view/__init__.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/view/answer.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/view/build.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/view/respond.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/view/serve.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/wait_for_note.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/src/labnotes/watch_rows.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/testing-conventions.toml +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/tests/conftest.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/tests/e2e/conftest.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/tests/integration/conftest.py +0 -0
- {labnotes-0.1.1 → labnotes-0.1.2}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: labnotes
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
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>
|
|
@@ -121,7 +121,8 @@ line per event instead.
|
|
|
121
121
|
- `--concurrency N` runs N at a time (default 1).
|
|
122
122
|
- `-e PATH` reads another file instead of `experiment.toml`.
|
|
123
123
|
- `--PARAM=VALUE` runs only the cells where that param has that value, like
|
|
124
|
-
`--model=small`.
|
|
124
|
+
`--model=small`. Repeat a param to run several values:
|
|
125
|
+
`--model=small --model=large`.
|
|
125
126
|
- With runs going, Ctrl-C asks first. Enter (or a second Ctrl-C) stops the running scripts and records their end,
|
|
126
127
|
then kills any still going 5 seconds later. Escape goes back. SIGTERM and
|
|
127
128
|
SIGHUP stop them the same way.
|
|
@@ -96,7 +96,8 @@ line per event instead.
|
|
|
96
96
|
- `--concurrency N` runs N at a time (default 1).
|
|
97
97
|
- `-e PATH` reads another file instead of `experiment.toml`.
|
|
98
98
|
- `--PARAM=VALUE` runs only the cells where that param has that value, like
|
|
99
|
-
`--model=small`.
|
|
99
|
+
`--model=small`. Repeat a param to run several values:
|
|
100
|
+
`--model=small --model=large`.
|
|
100
101
|
- With runs going, Ctrl-C asks first. Enter (or a second Ctrl-C) stops the running scripts and records their end,
|
|
101
102
|
then kills any still going 5 seconds later. Escape goes back. SIGTERM and
|
|
102
103
|
SIGHUP stop them the same way.
|
|
@@ -192,8 +192,10 @@ going. Elsewhere, it prints a line per event instead.
|
|
|
192
192
|
- `--PARAM=VALUE` runs only the cells where that param has that value, e.g.
|
|
193
193
|
`labnotes experiments NAME run --model=small`. PARAM must be a key in
|
|
194
194
|
`[params]` and VALUE one of its values, written as it shows in `runs`
|
|
195
|
-
(`true`, `2`); anything else is an error.
|
|
196
|
-
|
|
195
|
+
(`true`, `2`); anything else is an error. Repeat a param to run any of
|
|
196
|
+
several values (`--model=small --model=large`); give several params to
|
|
197
|
+
narrow further (`--model=small --lang=en`). Values are never split on
|
|
198
|
+
commas. It changes only what
|
|
197
199
|
this `run` starts: counts, progress and `repeats` still cover the full
|
|
198
200
|
matrix, so a later plain `run` fills in the rest. Use it instead of editing
|
|
199
201
|
`experiment.toml` to run a slice.
|
|
@@ -33,7 +33,8 @@ class PassthroughCommand(click.Command):
|
|
|
33
33
|
cls=PassthroughCommand,
|
|
34
34
|
help="List experiments, show one, list its runs, or run it."
|
|
35
35
|
" `new [NAME]` creates one. With run, --PARAM=VALUE runs only the"
|
|
36
|
-
" matrix cells where that param has that value
|
|
36
|
+
" matrix cells where that param has that value (repeat it for several"
|
|
37
|
+
" values), and anything after --"
|
|
37
38
|
" is appended to every run's command and recorded in run.json, so never"
|
|
38
39
|
" pass secrets there.",
|
|
39
40
|
context_settings={"ignore_unknown_options": True, "allow_extra_args": True},
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
def parse_subset(args: list[str]) -> dict[str, str]:
|
|
2
|
-
only: dict[str, str] = {}
|
|
1
|
+
def parse_subset(args: list[str]) -> dict[str, list[str]]:
|
|
2
|
+
only: dict[str, list[str]] = {}
|
|
3
3
|
for arg in args:
|
|
4
4
|
param, equals, value = arg.removeprefix("--").partition("=")
|
|
5
5
|
if not arg.startswith("--") or not equals or not param:
|
|
6
6
|
raise ValueError(f"Unexpected {arg}. Pick params with --PARAM=VALUE.")
|
|
7
|
-
|
|
8
|
-
raise ValueError(f"--{param} given twice. Pass one value per param.")
|
|
9
|
-
only[param] = value
|
|
7
|
+
only.setdefault(param, []).append(value)
|
|
10
8
|
return only
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
from labnotes.format_value import format_value
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
def check_subset(params: dict[str, list[object]], only: dict[str, str]) -> None:
|
|
5
|
-
for param,
|
|
4
|
+
def check_subset(params: dict[str, list[object]], only: dict[str, list[str]]) -> None:
|
|
5
|
+
for param, wanted in only.items():
|
|
6
6
|
if param not in params:
|
|
7
7
|
declared = ", ".join(params) or "none"
|
|
8
8
|
raise ValueError(f"No param {param}. Params: {declared}.")
|
|
9
9
|
values = [format_value(option) for option in params[param]]
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
for value in wanted:
|
|
11
|
+
if value not in values:
|
|
12
|
+
raise ValueError(
|
|
13
|
+
f"No value {value} for {param}. Values: {', '.join(values)}."
|
|
14
|
+
)
|
|
@@ -13,7 +13,7 @@ async def prepare_experiment(
|
|
|
13
13
|
name: str,
|
|
14
14
|
experiment_config: Path | None,
|
|
15
15
|
concurrency: int | None,
|
|
16
|
-
only: dict[str, str] | None = None,
|
|
16
|
+
only: dict[str, list[str]] | None = None,
|
|
17
17
|
args: list[str] | None = None,
|
|
18
18
|
setup: str | None = None,
|
|
19
19
|
teardown: str | None = None,
|
|
@@ -47,7 +47,7 @@ async def run_experiment(
|
|
|
47
47
|
listen: Listen,
|
|
48
48
|
timeout: float | None = None,
|
|
49
49
|
retry_seconds: float = RETRY_SECONDS,
|
|
50
|
-
only: dict[str, str] | None = None,
|
|
50
|
+
only: dict[str, list[str]] | None = None,
|
|
51
51
|
args: list[str] | None = None,
|
|
52
52
|
environment: dict[str, str] | None = None,
|
|
53
53
|
snapshot: ProjectSnapshot | None = None,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|