You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is a minimal PR providing the possibibility to pass the same flags to OmegaConf.load() that can be used when calling OmegaConf.create().
Why?
I created a custom resolver that allows setting tuples as config values.
It worked perfectly when testing it like this OmegaConf.create("tup: ${as_tuple:1,2,3}").
However, it failed when loading the config file
tup: ${as_tuple:1,2,3}
since I am calling OmegaConf.resolve() after OmegaConf.load() (for a good reason that is out of scope here).
The error was
omegaconf.errors.UnsupportedValueType: Value 'tuple' is not a supported primitive type
I could resolve that error by altering the allow_objects flag
config._set_flag("allow_objects", True)
Despite the disclaimers in the comments about the flags API, I think it would be nice to be able to directly set them when creating a config from a file the same way we can do it when creating it programmatically.
What do you think? Did I miss anything?
How?
Please see the code. The change is straightforward.
We are actually considering introducing a headers mechanism to files similar to # @package abc in Hydra (#anchor
Such a mechanism could be used to support allow_objects or other OmegaConf flags and would somewhat conflict with this PR (Need to determine the strategy for merging in-file flags with the provided flags, a likely solution is to override the flags in the file with the flags from the API call).
Thanks, @omry for your quick reply. I am not familiar with that header mechanism you mentioned, thus don't immediately see how these are conflicting.
Anyways, if you don't want this PR, we can close it.
I will let @Jasha10 decide on accepting this.
I am not too thrilled because it will make the headers support more complicated and the mechanism there would in principle allow for a cleaner solution (specifying the flags in the file itself).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
What?
This is a minimal PR providing the possibibility to pass the same flags to
OmegaConf.load()that can be used when callingOmegaConf.create().Why?
I created a custom resolver that allows setting tuples as config values.
It worked perfectly when testing it like this
OmegaConf.create("tup: ${as_tuple:1,2,3}").However, it failed when loading the config file
since I am calling
OmegaConf.resolve()afterOmegaConf.load()(for a good reason that is out of scope here).The error was
I could resolve that error by altering the
allow_objectsflagDespite the disclaimers in the comments about the flags API, I think it would be nice to be able to directly set them when creating a config from a file the same way we can do it when creating it programmatically.
What do you think? Did I miss anything?
How?
Please see the code. The change is straightforward.