def type_from_runtime(val: object, visitor: Optional['NameCheckVisitor']=None, node: Optional[ast.AST]=None, globals: Optional[Mapping[(str, object)]]=None, ctx: Optional[Context]=None) -> Value:
    'Given a runtime annotation object, return a\n    :class:`Value <pyanalyze.value.Value>`.\n\n    :param val: Object to evaluate. This will usually come from an\n                ``__annotations__`` dictionary.\n\n    :param visitor: Visitor class to use. This is used in the default\n                    :class:`Context` to resolve names and show errors.\n                    This is ignored if `ctx` is given.\n\n    :param node: AST node that the annotation derives from. This is\n                 used for showing errors. Ignored if `ctx` is given.\n\n    :param globals: Dictionary of global variables that can be used\n                    to resolve names. Ignored if `ctx` is given.\n\n    :param ctx: :class:`Context` to use for evaluation.\n\n    '
    if (ctx is None):
        ctx = _DefaultContext(visitor, node, globals)
    return _type_from_runtime(val, ctx)
Given a runtime annotation object, return a
:class:`Value <pyanalyze.value.Value>`.

:param val: Object to evaluate. This will usually come from an
            ``__annotations__`` dictionary.

:param visitor: Visitor class to use. This is used in the default
                :class:`Context` to resolve names and show errors.
                This is ignored if `ctx` is given.

:param node: AST node that the annotation derives from. This is
             used for showing errors. Ignored if `ctx` is given.

:param globals: Dictionary of global variables that can be used
                to resolve names. Ignored if `ctx` is given.

:param ctx: :class:`Context` to use for evaluation.
def type_from_runtime(val: object, visitor: Optional['NameCheckVisitor']=None, node: Optional[ast.AST]=None, globals: Optional[Mapping[(str, object)]]=None, ctx: Optional[Context]=None) -> Value:
    'Given a runtime annotation object, return a\n    :class:`Value <pyanalyze.value.Value>`.\n\n    :param val: Object to evaluate. This will usually come from an\n                ``__annotations__`` dictionary.\n\n    :param visitor: Visitor class to use. This is used in the default\n                    :class:`Context` to resolve names and show errors.\n                    This is ignored if `ctx` is given.\n\n    :param node: AST node that the annotation derives from. This is\n                 used for showing errors. Ignored if `ctx` is given.\n\n    :param globals: Dictionary of global variables that can be used\n                    to resolve names. Ignored if `ctx` is given.\n\n    :param ctx: :class:`Context` to use for evaluation.\n\n    '
    if (ctx is None):
        ctx = _DefaultContext(visitor, node, globals)
    return _type_from_runtime(val, ctx)