vyper icon indicating copy to clipboard operation
vyper copied to clipboard

Robust handling of nested field.

Open jperkelens opened this issue 4 years ago • 0 comments

Currently, the _find method resolves config values in priority order. However, it does not treat nested value robustly. Plenty of work has been done to support env binding support for nested config values. However, overrides & defaults will not respect nesting unless retrieved from the level in which they were set.

Example:

config:
     file_settings:
          name: cool_file
          permissions: rw
vyper.read_in_config(config.yaml)
vyper.set_default("config.file_settings.extension" , "txt")
vyper.set("config.file_settings.permissions" , "r")

vyper.get("config.file_settings.extension") # Returns: "txt"
vyper.get("config.file_settings.permissions") # Returns: "r"
vyper.get("config.file_settings") # Returns: { name: cool_file, permissions: rw }

The complexity of managing this in the _find method seems untenable and the library seems to be calling for some sort of composable, self referential construct built on config read to handle this appropriately. These are nascent thought but I'll try to work through a POC over the weekend.

jperkelens avatar Mar 25 '20 17:03 jperkelens