allows kwargs to be specified on the commandline from testfuncs

    Args:
        func (function):

    Kwargs:
        lbl, verbose, only_specified, force_keys, type_hint, alias_dict

    Returns:
        dict: funckw

    CommandLine:
        python -m utool.util_inspect argparse_funckw

    SeeAlso:
        exec_funckw
        recursive_parse_kwargs
        parse_kwarg_keys

    Example:
        >>> # ENABLE_DOCTEST
        >>> from utool.util_inspect import *  # NOQA
        >>> import utool as ut
        >>> func = get_instance_attrnames
        >>> funckw = argparse_funckw(func)
        >>> result = ('funckw = %s' % (ut.repr3(funckw),))
        >>> print(result)
        funckw = {
            'default': True,
            'with_methods': True,
            'with_properties': True,
        }

def argparse_funckw(func, defaults={}, **kwargs):
    """
    allows kwargs to be specified on the commandline from testfuncs

    Args:
        func (function):

    Kwargs:
        lbl, verbose, only_specified, force_keys, type_hint, alias_dict

    Returns:
        dict: funckw

    CommandLine:
        python -m utool.util_inspect argparse_funckw

    SeeAlso:
        exec_funckw
        recursive_parse_kwargs
        parse_kwarg_keys

    Example:
        >>> # ENABLE_DOCTEST
        >>> from utool.util_inspect import *  # NOQA
        >>> import utool as ut
        >>> func = get_instance_attrnames
        >>> funckw = argparse_funckw(func)
        >>> result = ('funckw = %s' % (ut.repr3(funckw),))
        >>> print(result)
        funckw = {
            'default': True,
            'with_methods': True,
            'with_properties': True,
        }
    """
    import utool as ut
    funckw_ = ut.get_funckw(func, recursive=True)
    funckw_.update(defaults)
    funckw = ut.argparse_dict(funckw_, **kwargs)
    return funckw