From a07dc686397fff4c9b40ed1207b5cf0793855d7e 2007-04-21 18:44:15 From: vivainio Date: 2007-04-21 18:44:15 Subject: [PATCH] add ipy_extutil.py --- diff --git a/IPython/Extensions/ipy_extutil.py b/IPython/Extensions/ipy_extutil.py new file mode 100644 index 0000000..4a01615 --- /dev/null +++ b/IPython/Extensions/ipy_extutil.py @@ -0,0 +1,43 @@ +""" IPython extension management tools. + +After installation, you'll have the 'extutil' object in your namespace. +to. +""" + +# for the purposes of this module, every module that has the name 'ip' globally +# installed as below is an IPython extension + +import IPython.ipapi +ip = IPython.ipapi.get() + +import sys,textwrap,inspect + +def indent(s, ind= ' '): + return '\n'.join([ind +l for l in s.splitlines()]) + +class ExtUtil: + """ IPython extensios (ipy_* etc.) management utilities """ + + def describe(self): + for n,mod in self._active(): + doc = inspect.getdoc(mod) + if doc: + print '== %s ==' % n + print indent(doc) + + + def ls(self): + """ Show list of installed extensions. """ + for n,m in self._active(): + print '%-20s %s' % (n,m.__file__.replace('\\','/')) + def _active(self): + act = [] + for mname,m in sys.modules.items(): + o = getattr(m, 'ip', None) + if isinstance(o, IPython.ipapi.IPApi): + act.append((mname,m)) + act.sort() + return act + +extutil = ExtUtil() +ip.to_user_ns('extutil') diff --git a/doc/ChangeLog b/doc/ChangeLog index 420481a..0dc2a42 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,8 @@ +2007-04-21 Ville Vainio + + * Extensions/ipy_extutil.py: added extension to manage other ipython + extensions. Now only supports 'ls' == list extensions. + 2007-04-20 Fernando Perez * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that