Add utilities objects [AI]#1590
Conversation
9db1e36 to
652204f
Compare
There was a problem hiding this comment.
Code Review
This pull request introduces the concept of external utilities (dependencies) to Ramble, adding a new UtilityBase class, a bootstrap pipeline, workspace commands, configuration schemas, and documentation. The review feedback highlights several critical issues that need to be addressed: directory name mismatches (bootstrapped_utilities vs. bootstrapped_tools) that affect archiving and deployment; logic bugs in UtilityBase that ignore conditional environment modifications; potential TypeErrors from unfiltered fetch arguments and unhashable lists in configuration tuples; inconsistent configuration option names; and the need for robust command parsing using shlex.split.
Ramble Performance Test MetricsResults produced with commit: 6788f25
|
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## develop #1590 +/- ##
===========================================
- Coverage 92.95% 92.93% -0.03%
===========================================
Files 344 357 +13
Lines 33258 34159 +901
===========================================
+ Hits 30916 31744 +828
- Misses 2342 2415 +73 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
7643893 to
fce4051
Compare
c3a2937 to
ec3b0d5
Compare
|
/genini review |
ec3b0d5 to
8705a45
Compare
This commit adds a new object type representing bootstrapped or required external utilities. These can be dependencies that an experiment needs to run on a certain system, or dependencies that Ramble should fetch as part of setting up the experiments. Other objects can require utilities, and when they do they are allowed to specify minimum and maximum versions (or to pin the version at a specific value). A new pipeline is defined `ramble workspace bootstrap` which can be used to bootstrap any utilities that would be bootstrapped. Bootstrapping also happens as part of the setup pipeline.
Changes include: - Updated Sphinx conf.py to auto-generate utility_list.html and base_utility_list.html. - Added utilities.rst to the Basics section outlining how to configure utility bootstrapping. - Added a Developer Guide detailing the UtilityBase API, env modifications, and declarative version checking. - Added a tutorial for creating utility definitions from scratch.
8705a45 to
6788f25
Compare
This merge adds utilities as a new object type. Utilities represent external dependencies that experiments (or other objects) can require. These can include things like spack (package managers) or pdsh. A language, documentation, and tests are added to help developers create new utilities.