FlexLock Documentation
FlexLock is a lightweight Python library for reproducible, composable, and scalable computational experiments.
Getting Started
User Guide
- FlexLock Usage Guide
- Table of Contents
- 1. Overview
- 2. Installation & first run
- 3. Configuration model
- 4. Submitting work — three flavors
- 5.
py2cfg— build configs from Python - 6. Sweeps
- 7. Snapshots & reproducibility
- 8. Smart run / caching
- 9. HPC backends
- 10. MLflow integration
- 11. Debugging
- 12. Exceptions
- 13. Environment variables
- 14. Common recipes
- 15. FAQ / gotchas
- See also
- Agentic Workflows
- Debugging with FlexLock
- HPC Integration
- Overview
- Quick Start
- Files Written by an HPC Submission
- PBS Configuration
- Slurm Configuration
- Singularity Containers
- Parameter Sweeps on HPC
- Wait Behavior
- Monitoring Jobs
- Smart Caching with HPC
- Multi-Stage Pipelines on HPC
- Advanced Usage
- Troubleshooting
- Best Practices
- Performance Tips
- Example: Complete HPC Workflow
- See Also
- Summary
- Chaining scheduler jobs
API Reference
- Python API Reference
- CLI Reference
flexlock— Experiment Management CLIflexlock-diff— Compare Snapshotsflexlock-run— Run Experiments- Basic Usage
- Configuration Loading
- Configuration Selection
- Configuration Overrides
- Parameter Sweeps
- Execution Control
- HPC Backend Configuration
- Configuration Merging Order
- Common Patterns
- Advanced Override Options
- See Also
- OmegaConf Resolvers
- MLflow Integration Guide
- Reference
- API Reference
FlexLockBackendErrorFlexLockCacheErrorFlexLockConfigErrorFlexLockErrorFlexLockExecutionErrorFlexLockRunnerFlexLockSnapshotErrorFlexLockValidationErrorProjectdebug_on_fail()enqueue_to_file()flexcli()get_git_tree_hash()hash_data()load_python_defaults()load_sweep()log_to_file()mlflow_context()parse_sweep_string()py2cfg()select_and_freeze_root_refs()snapshot()submit()BackendJobJobEnvironmentPBSBackendPBSJobSlurmBackendSlurmJobvalidate_slurm_script()dirhash()hash_data()debug_on_fail()code_drift()create_shadow_snapshot()create_shadow_tree()get_git_commit()get_git_tree_hash()sanitize_ref_name()shadow_index()RunDiffcompare_snapshots()load_snapshot_from_db()load_snapshot_from_dir()main()run_comparison()main()export_all_tasks()export_task()main()load_stage_from_path()mlflow_context()ParallelExecutorload_tasks()defer_unpinned_runs()deferred_stubbed()frozen_resolvers()latest_resolver()now_resolver()register_resolvers()resolve_deferred()run_lock_resolver()run_resolver()vinc_resolver()FlexLockRunnermain()print_all_tasks()print_failed_tasks()print_status_summary()print_tags_breakdown()watch_status()ChainedResultExecutionResultProjectStatusRunRecordis_placeholder_lock()load_lock_data()materialize_lock()merge_master_into_task_snapshot()claim_next_task()claim_next_tasks()dump_to_yaml()finish_task()finish_tasks()get_all_tasks()get_failed_tasks()get_status_counts()get_status_counts_by_tag()get_task_snapshot()get_task_status()list_task_snapshots()mark_orphans_interrupted()pending_count()queue_tasks()reclaim_running()reset_db()update_task_snapshot()Swapapply_overrides()collect_target_include_patterns()collect_task_repos()defaults_module()enqueue_to_file()expand_swaps()extract_tracking_info()instantiate()load_python_defaults()load_sweep()log_to_file()merge_task_into_cfg()parse_sweep_string()py2cfg()resolve_module_to_repo_path()resolve_swap()to_dictconfig()worker_loop()
Additional