Variable resolver decorator. Function or method decorated with it is
        used to resolve the config variable.

        .. note::
            Variable is resolved only once.
            Next gets are returned from the cache.

        :param var_name: Variable name
        :return: Function decorator

def resolver(cls, var_name: str) -> FunctionType:
        """
        Variable resolver decorator. Function or method decorated with it is
        used to resolve the config variable.

        .. note::
            Variable is resolved only once.
            Next gets are returned from the cache.

        :param var_name: Variable name
        :return: Function decorator
        """
        def dec(f):
            if var_name in cls().resolvers:
                raise ConfigurationError(
                    f'Resolver for {var_name} already registered')
            cls().resolvers[var_name] = f
            return f

        return dec