def test_clear_resolvers(): assert OmegaConf.get_resolver('foo') is None try: OmegaConf.register_resolver('foo', lambda x: int(x) + 10) assert OmegaConf.get_resolver('foo') is not None finally: OmegaConf.clear_resolvers() assert OmegaConf.get_resolver('foo') is None
def _resolve_simple_interpolation( self, key: Any, inter_type: str, inter_key: str, throw_on_missing: bool, throw_on_resolution_failure: bool, ) -> Optional["Node"]: from omegaconf import OmegaConf from .nodes import ValueNode inter_type = ("str:" if inter_type is None else inter_type)[0:-1] if inter_type == "str": root_node, inter_key = self._resolve_key_and_root(inter_key) parent, last_key, value = root_node._select_impl( inter_key, throw_on_missing=throw_on_missing, throw_on_resolution_failure=throw_on_resolution_failure, ) # if parent is None or (value is None and last_key not in parent): # type: ignore if parent is None or value is None: if throw_on_resolution_failure: raise ConfigKeyError( f"{inter_type} interpolation key '{inter_key}' not found" ) else: return None assert isinstance(value, Node) return value else: resolver = OmegaConf.get_resolver(inter_type) if resolver is not None: root_node = self._get_root() try: value = resolver(root_node, inter_key) return ValueNode( value=value, parent=self, metadata=Metadata(ref_type=None, object_type=None, key=key, optional=True), ) except Exception as e: if throw_on_resolution_failure: self._format_and_raise(key=inter_key, value=None, cause=e) assert False else: return None else: if throw_on_resolution_failure: raise UnsupportedInterpolationType( f"Unsupported interpolation type {inter_type}") else: return None
def _resolve_value(root_node, inter_type, inter_key): from omegaconf import OmegaConf inter_type = ('str:' if inter_type is None else inter_type)[0:-1] if inter_type == 'str': ret = root_node.select(inter_key) if ret is None: raise KeyError("{} interpolation key '{}' not found".format( inter_type, inter_key)) else: resolver = OmegaConf.get_resolver(inter_type) if resolver is not None: ret = resolver(root_node, inter_key) else: raise ValueError( "Unsupported interpolation type {}".format(inter_type)) return ret
def _resolve_value(root_node, inter_type, inter_key): from omegaconf import OmegaConf inter_type = ("str:" if inter_type is None else inter_type)[0:-1] if inter_type == "str": parent, last_key, value = root_node._select_impl(inter_key) if parent is None or (value is None and last_key not in parent): raise KeyError("{} interpolation key '{}' not found".format( inter_type, inter_key)) else: resolver = OmegaConf.get_resolver(inter_type) if resolver is not None: value = resolver(root_node, inter_key) else: raise UnsupportedInterpolationType( "Unsupported interpolation type {}".format(inter_type)) return value
def _resolve_interpolation( self, key: Any, inter_type: str, inter_key: str, throw_on_missing: bool, ) -> "Node": from omegaconf import OmegaConf from .nodes import ValueNode root_node = self._get_root() inter_type = ("str:" if inter_type is None else inter_type)[0:-1] if inter_type == "str": parent, last_key, value = root_node._select_impl( inter_key) # type: ignore if parent is None or (value is None and last_key not in parent): raise KeyError("{} interpolation key '{}' not found".format( inter_type, inter_key)) if throw_on_missing and isinstance(value, Node) and value._is_missing(): raise MissingMandatoryValue(parent._get_full_key(str(key))) assert isinstance(value, Node) return value else: resolver = OmegaConf.get_resolver(inter_type) if resolver is not None: value = resolver(root_node, inter_key) assert isinstance(self, Container) node = self.get_node(key) return ValueNode( value=value, parent=self, key=key, is_optional=node._metadata.optional, ) else: raise UnsupportedInterpolationType( "Unsupported interpolation type {}".format(inter_type))
def test_clear_resolvers(restore_resolvers: Any) -> None: assert OmegaConf.get_resolver("foo") is None OmegaConf.register_resolver("foo", lambda x: int(x) + 10) assert OmegaConf.get_resolver("foo") is not None OmegaConf.clear_resolvers() assert OmegaConf.get_resolver("foo") is None
def test_get_resolver_deprecation() -> None: with warns( UserWarning, match=re.escape("https://github.com/omry/omegaconf/issues/608")): assert OmegaConf.get_resolver("foo") is None