##// END OF EJS Templates
Moving extensions to either quarantine or deathrow....
Moving extensions to either quarantine or deathrow. When a module is moved to quarantine, it means that while we intend to keep it, it is currently broken or sufficiently untested that it can't be in the main IPython codebase. To be moved back into the main IPython codebase a module must: 1. Work fully. 2. Have a test suite. 3. Be a proper IPython extension and tie into the official APIs. 3. Have members of the IPython dev team who are willing to maintain it. When a module is moved to deathrow, it means that the code is either broken and not worth repairing, deprecated, replaced by newer functionality, or code that should be developed and maintained by a third party.

File last commit:

r2267:928c921b
r2267:928c921b
Show More
ipy_extutil.py
44 lines | 1.2 KiB | text/x-python | PythonLexer
""" 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
from IPython.core import ipapi
ip = ipapi.get()
from IPython.core.iplib import InteractiveShell
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, InteractiveShell):
act.append((mname,m))
act.sort()
return act
extutil = ExtUtil()
ip.push('extutil')