def get_funcnames_from_modpath(modpath, include_methods=True):
    """
    Get all functions defined in module
    """
    import utool as ut
    if True:
        import jedi
        source = ut.read_from(modpath)
        #script = jedi.Script(source=source, source_path=modpath, line=source.count('\n') + 1)
        definition_list = jedi.names(source)
        funcname_list = [definition.name for definition in definition_list if definition.type == 'function']
        if include_methods:
            classdef_list = [definition for definition in definition_list if definition.type == 'class']
            defined_methods = ut.flatten([definition.defined_names() for definition in classdef_list])
            funcname_list += [method.name for method in defined_methods
                              if method.type == 'function' and not method.name.startswith('_')]
    else:
        import redbaron
        # Pares a FULL syntax tree that keeps blockcomments
        sourcecode = ut.read_from(modpath)
        baron = redbaron.RedBaron(sourcecode)
        funcname_list = [node.name for node in baron.find_all('def', recursive=include_methods)
                         if not node.name.startswith('_')]
    return funcname_list
Get all functions defined in module