Get __doc__ from main module in imported module.

Alf P. Steinbach alfps at
Thu Feb 11 02:31:37 CET 2010

* David:
> I have a module with some functions I use often.  One of
> these functions displays a usage message (__doc__).
> def usage(messages=[], exit=-1):
>     """Print the doc string as wells as any useful messages."""
>     print(__doc__)
>     for message in messages:
>         print("\033[91m{}\033[0m".format(message))

Consider using a terminal control library such as 'curses' instead of embedding 
escape sequences directly in the text, since escape sequences vary from terminal 
to terminal.

>     if exit >= 0:
>         sys.exit(exit)
> I import this module into another module, with the doc string I want
> to display.  However, calling usage prints toolkit's doc string
> (None), not the current module's doc string.

The function doesn't know where it's called from.

You have to tell it, or dynamically create a module-specific function.

One way to tell it is to pass the current module as an argument.

> How can I access the top level module's doc string from toolkit?


     import __main__
     print_usage( __main__ )

with suitable definition of 'usage'.

Cheers & hth.,

- Alf

More information about the Python-list mailing list