def _create_result_default(tree: Optional[DefaultsTreeNode], node: InputDefault) -> Optional[ResultDefault]: if node.is_virtual(): return None if node.get_name() is None: return None res = ResultDefault() if node.is_self(): assert tree is not None res.config_path = tree.node.get_config_path() res.is_self = True pn = tree.parent_node() if pn is not None: res.parent = pn.get_config_path() else: res.parent = None res.package = tree.node.get_final_package() res.primary = tree.node.primary else: res.config_path = node.get_config_path() if tree is not None: res.parent = tree.node.get_config_path() res.package = node.get_final_package() if isinstance(node, GroupDefault): res.override_key = node.get_override_key() res.primary = node.primary if res.config_path == "_dummy_empty_config_": return None return res
def set_known_choice(self, default: InputDefault) -> None: if isinstance(default, GroupDefault): key = default.get_override_key() if key not in self.known_choices: self.known_choices[key] = default.get_name() else: prev = self.known_choices[key] if default.get_name() != prev: raise ConfigCompositionException( f"Multiple values for {key}." f" To override a value use 'override {key}: {prev}'") group = default.get_group_path() if group not in self.known_choices_per_group: self.known_choices_per_group[group] = set() self.known_choices_per_group[group].add(key)
def is_deleted(self, default: InputDefault) -> bool: if not isinstance(default, GroupDefault): return False key = default.get_override_key() if key in self.deletions: deletion = self.deletions[key] if deletion.name is None: return True else: return deletion.name == default.get_name() return False