Resolve an expression with possibly a dedicated expression resolvers.

    :param str name: expression resolver registered name. Default is the
        first registered expression resolver.
    :param bool safe: if True (Default), resolve in a safe context
        (without I/O).
    :param bool tostr: if True (False by default), transform the result into
        a string format.
    :param dict scope: scope execution resolution.
    :param bool besteffort: if True (default) auto import unknown var.

    :raises: KeyError if no expression resolver has been registered or if
        name does not exist in expression resolvers.

def resolve(
        expr, name=None,
        safe=DEFAULT_SAFE, tostr=DEFAULT_TOSTR, scope=DEFAULT_SCOPE,
        besteffort=DEFAULT_BESTEFFORT
):
    """Resolve an expression with possibly a dedicated expression resolvers.

    :param str name: expression resolver registered name. Default is the
        first registered expression resolver.
    :param bool safe: if True (Default), resolve in a safe context
        (without I/O).
    :param bool tostr: if True (False by default), transform the result into
        a string format.
    :param dict scope: scope execution resolution.
    :param bool besteffort: if True (default) auto import unknown var.

    :raises: KeyError if no expression resolver has been registered or if
        name does not exist in expression resolvers.
    """

    return _RESOLVER_REGISTRY.resolve(
        expr=expr, name=name, safe=safe, tostr=tostr, scope=scope,
        besteffort=besteffort
    )