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.
For #150.
Creates a
custom_yaml
object that has alternative "representers" registered to it to modify the default output structures.Summary:
tuple
is treated as a listset
is treated as a list, but is sorted to ensure that they're serialized in a deterministic way.PurePath
and subclasses are stringifiedReportType
,ScheduleType
, andSimTime
haveyaml_representer
static methods and are registered to thecustom_yaml
object in thecustom_yaml.py
file.object
and its subclasses to catch anything else that is passed in. It creates aWARNING
-level log entry to prompt the user that an "implicit" serialization was performed.ReportType
had__lt__
defined so that aset[ReportType]
could be deterministically serialized, as mentioned above.Some mediocre testing was included.
NOTE: I believe that
import yaml
andfrom nrel...custom_yaml import custom_yaml as yaml
both import the same object, so it's not clear to me if the unmodifiedyaml
package would be available. The "package-local" import was still used to make it clear that it is modified.