pypyr.steps.default
initialize the context with default values
Sets values in context if they do not exist already. Does not overwrite existing values. Supports nested hierarchies.
This is especially useful for setting default values in context, for example when using optional arguments from the cli.
This step sets the contents of the context key defaults
into context
where keys in defaults
do not exist in context already. The contents
of the defaults
key must be a dictionary.
By comparison, the in
step decorator, and also the steps
contextcopy, set and
contextmerge overwrite values even if they are in
context already.
The recursive if-not-exists-then-set check happens for dictionaries, but not for items in Lists, Sets and Tuples. You can set default values of type List, Set or Tuple if their keys don’t exist in context already, but this step will not recurse through the List, Set or Tuple itself.
Supports substitutions. String interpolation applies to keys and values.
example
Given a context like this:
key1: value1
key2:
key2.1: value2.1
key3: None
And defaults
input like this:
- name: pypyr.steps.default
in:
defaults:
key1: updated value here won't overwrite since it already exists
key2:
key2.2: value2.2
key3: key 3 exists so I won't overwrite
Will result in context:
key1: value1
key2:
key2.1: value2.1
key2.2: value2.2
key3: None
See a worked example for setting default values.