Return formatted text that lists the module-level and class-level
    embedded documentation.  The function should be called exactly
    as:

        taskforce.utils.module_description(__name__, __doc__, __file__)

    The most common use for this function is to produce the help
    message for test code in a library module, which might look
    something like:

    if __name__ == "__main__":
        import ns_utils, argparse

        p = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter,
                description=taskforce.utils.module_description(__name__, __doc__, __file__))

def module_description(module__name__, module__doc__, module__file__):
    """
    Return formatted text that lists the module-level and class-level
    embedded documentation.  The function should be called exactly
    as:

        taskforce.utils.module_description(__name__, __doc__, __file__)

    The most common use for this function is to produce the help
    message for test code in a library module, which might look
    something like:

    if __name__ == "__main__":
        import ns_utils, argparse

        p = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter,
                description=taskforce.utils.module_description(__name__, __doc__, __file__))
"""
    mod_name = os.path.splitext(os.path.basename(module__file__))[0]

    mod_desc = (lambda x: x + '\n' + '='*len(x) + '\n')('Module '+mod_name) if mod_name else ''
    for name, obj in inspect.getmembers(sys.modules[module__name__]):
        if inspect.isclass(obj) and '__doc__' in dir(obj) and obj.__doc__:
            mod_desc += '\n' + (lambda x: x + '\n' + '-'*len(x) + '\n')('Class '+name)
            mod_desc += obj.__doc__.lstrip()
    return mod_desc