Split ROMSComponent.input_datasets
attribute up
#95
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The key goal here is to split
ROMSComponent.input_datasets
up into several more specific attributes, e.g.ROMSComponent.model_grid
, closing #94 . This has implications in other places in the code.It's already clear this is leading to a lot of reshuffling. I pondered for a good while yesterday how to split the various obstacles up, but they're pretty entangled, so I'm going to open this as a draft and push (non-working) commits to hopefully make it easier to follow along.
Problem 1
Description
Case.from_blueprint
creates all the objects that go into a component, including InputDataset objects, before creating the Component object itself from those objects. As such it already has some nasty logic that is hyper-specific to, e.g. ROMSComponent. Implementing this change toROMSComponent.input_datasets
will involve rewriting large parts ofCase.from_blueprint
, and it would make sense to hand off component-specific aspects like this to the relevant Component subclasses.Attempted solution
To start, I'm attempting to create a
Component.from_dict
class method, so thatCase.from_blueprint
can just call this method on each component in turn, passing the relevant subsection of the blueprint yaml file.