in lib/ramble/ramble/context.py [0:0]
def merge_context(self, in_context):
"""Merges another Context into this Context."""
internal_sections = [
namespace.custom_executables,
namespace.executables,
namespace.executable_injection,
]
if in_context.variables:
self.variables.update(in_context.variables)
if in_context.variants:
self.variants.update(in_context.variants)
if in_context.env_variables:
self.env_variables.append(in_context.env_variables)
if in_context.internals:
for internal_section in internal_sections:
if internal_section in in_context.internals:
if isinstance(in_context.internals[internal_section], dict):
if internal_section not in self.internals:
self.internals[internal_section] = {}
section_dict = in_context.internals[internal_section]
for key, val in section_dict.items():
self.internals[internal_section][key] = val
elif isinstance(in_context.internals[internal_section], list):
if internal_section not in self.internals:
self.internals[internal_section] = []
self.internals[internal_section].extend(
in_context.internals[internal_section]
)
else:
self.internals[internal_section] = in_context.internals[internal_section]
if in_context.chained_experiments:
for chained_exp in in_context.chained_experiments:
self.chained_experiments.append(chained_exp.copy())
if in_context.modifiers:
for modifier in in_context.modifiers:
self.modifiers.append(modifier.copy())
if in_context.templates is not None:
self.is_template = in_context.templates
if in_context.exclude:
self.exclude = in_context.exclude
if in_context.zips:
self.zips.update(in_context.zips)
if in_context.matrices:
self.matrices = in_context.matrices
if in_context.tags:
self.tags.extend(in_context.tags)
if in_context.n_repeats != 0:
self.n_repeats = int(in_context.n_repeats)
if in_context.formatted_executables:
self.formatted_executables.update(in_context.formatted_executables)