Source code for dfvfs.resolver_helpers.manager

# -*- coding: utf-8 -*-
"""The path specification resolver helper manager."""


[docs] class ResolverHelperManager(object): """Path specification resolver helper manager.""" _resolver_helpers = {}
[docs] @classmethod def DeregisterHelper(cls, resolver_helper): """Deregisters a path specification resolver helper. Args: resolver_helper (ResolverHelper): resolver helper. Raises: KeyError: if resolver helper object is not set for the corresponding type indicator. """ if resolver_helper.type_indicator not in cls._resolver_helpers: raise KeyError(( f'Resolver helper object not set for type indicator: ' f'{resolver_helper.type_indicator:s}.')) del cls._resolver_helpers[resolver_helper.type_indicator]
[docs] @classmethod def GetHelper(cls, type_indicator): """Retrieves the path specification resolver helper for the specified type. Args: type_indicator (str): type indicator. Returns: ResolverHelper: a resolver helper. Raises: KeyError: if resolver helper is not set for the corresponding type indicator. """ if type_indicator not in cls._resolver_helpers: raise KeyError( f'Resolver helper not set for type indicator: {type_indicator:s}.') return cls._resolver_helpers[type_indicator]
[docs] @classmethod def RegisterHelper(cls, resolver_helper): """Registers a path specification resolver helper. Args: resolver_helper (ResolverHelper): resolver helper. Raises: KeyError: if resolver helper object is already set for the corresponding type indicator. """ if resolver_helper.type_indicator in cls._resolver_helpers: raise KeyError(( f'Resolver helper object already set for type indicator: ' f'{resolver_helper.type_indicator!s}.')) cls._resolver_helpers[resolver_helper.type_indicator] = resolver_helper