Find functions explicitly defined in a module (python)
Question: Ok I know you can use the dir() method to list everything in a module, but is
there any way to see only the functions that are defined in that module? For
example, assume my module looks like this:

    
    
    from datetime import date, datetime
    
    def test():
        return "This is a real method"
    

Even if i use inspect() to filter out the builtins, I'm still left with
anything that was imported. E.g I'll see:

['date', 'datetime', 'test']

Is there any way to exclude imports? Or another way to find out what's defined
in a module?


Answer: Are you looking for something like this?

    
    
    import sys, inspect
    
    def is_mod_function(mod, func):
        return inspect.isfunction(func) and inspect.getmodule(func) == mod
    
    def list_functions(mod):
        return [func.__name__ for func in mod.__dict__.itervalues() 
                if is_mod_function(mod, func)]
    
    
    print 'functions in current module:\n', list_functions(sys.modules[__name__])
    print 'functions in inspect module:\n', list_functions(inspect)
    

EDIT: Changed variable names from 'meth' to 'func' to avoid confusion (we're
dealing with functions, not methods, here).

