Context¶
The context holds the variables available when rendering a template. It is a nested key/value data structure.
Building the context¶
Patterns provide the core context by asking the user a question and associating the answer with a key.
Patterns, Overlays, and Compositions all have extra_context attributes that provide a method to add key/values to the context without prompting the user.
Overlays provide an answer_map attribute to map one pattern key/value to another.
Compositions use merge_keys to merge the values of common pattern keys.
Contexts are built iteratively question by question and pattern by pattern.
The default answer of a question to be the answer to a previous question.
Patterns may have keys that whose answers should be the same, but their keys are different. For example, one pattern might use project_name and another might use library_name. The overlay’s answer_map allows you to map the answer of project_name to answer of library_name.
Patterns that define complex data structures, such as lists or dicts, may be merged between patterns using the composition’s merge_keys attribute. For example, if several patterns define a requirements dict as in their extra_context, you can have the composition merge all the values of requirements.