##// END OF EJS Templates
Fix bug where "don't leave" dialog was appearing when not needed in nb....
Fix bug where "don't leave" dialog was appearing when not needed in nb. Closes #1058

File last commit:

r4872:34c10438
r5502:52fc956c
Show More
ipy_extutil.py
44 lines | 1.2 KiB | text/x-python | PythonLexer
vivainio
crlf cleanup
r680 """ 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
Brian Granger
ipapi.py => core/ipapi.py and imports updated.
r2027 from IPython.core import ipapi
ip = ipapi.get()
Brian Granger
Continuing a massive refactor of everything.
r2205 from IPython.core.iplib import InteractiveShell
vivainio
crlf cleanup
r680
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 """
Bernardo B. Marques
remove all trailling spaces
r4872
vivainio
crlf cleanup
r680 def describe(self):
for n,mod in self._active():
doc = inspect.getdoc(mod)
if doc:
print '== %s ==' % n
print indent(doc)
Bernardo B. Marques
remove all trailling spaces
r4872
vivainio
crlf cleanup
r680 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)
Brian Granger
Continuing a massive refactor of everything.
r2205 if isinstance(o, InteractiveShell):
vivainio
crlf cleanup
r680 act.append((mname,m))
Bernardo B. Marques
remove all trailling spaces
r4872 act.sort()
vivainio
crlf cleanup
r680 return act
Bernardo B. Marques
remove all trailling spaces
r4872 extutil = ExtUtil()
Brian Granger
Continuing a massive refactor of everything.
r2205 ip.push('extutil')