def _get_parse_input(parse_args, args_in, dict_in):
    """Return default for parse_input.

    This is to decide if context_parser should run or not.

    To make it easy on an API consumer, default behavior is ALWAYS to run
    parser UNLESS dict_in initializes context and there is no args_in.

    If dict_in specified, but no args_in: False
    If dict_in specified, AND args_in too: True
    If no dict_in specified, but args_in is: True
    If no dict_in AND no args_in: True
    If parse_args explicitly set, always honor its value.

    Args:
        parse_args (bool): Whether to run context parser.
        args_in (list[str]): String arguments as passed from the cli.
        dict_in (dict): Initialize context with this dict.

    Returns:
        Boolean. True if should parse input.
    """
    if parse_args is None:
        return not (args_in is None and dict_in is not None)

    return parse_args