|
|
""" An example of one way to embed IPython in your own application
|
|
|
|
|
|
This basically means starting up IPython with some of your programs objects visible in the IPython
|
|
|
user namespace.
|
|
|
|
|
|
"""
|
|
|
|
|
|
import sys
|
|
|
sys.path.insert(1,'..')
|
|
|
|
|
|
import IPython.ipapi
|
|
|
|
|
|
|
|
|
|
|
|
def test_session(shellclass):
|
|
|
print "*****************\nLaunch shell for",shellclass
|
|
|
my_ns = dict(a=10)
|
|
|
ses = IPython.ipapi.make_session(my_ns, shellclass=shellclass)
|
|
|
|
|
|
# Now get the ipapi instance, to be stored somewhere in your program for manipulation of the running
|
|
|
# IPython session. See http://ipython.scipy.org/moin/IpythonExtensionApi
|
|
|
|
|
|
ip = ses.IP.getapi()
|
|
|
|
|
|
# let's play with the ipapi a bit, creating a magic function for a soon-to-be-started IPython
|
|
|
def mymagic_f(self,s):
|
|
|
print "mymagic says",s
|
|
|
|
|
|
ip.expose_magic("mymagic",mymagic_f)
|
|
|
|
|
|
# And finally, start the IPython interaction! This will block until you say Exit.
|
|
|
|
|
|
ses.mainloop()
|
|
|
|
|
|
print "IPython session for shell ",shellclass," finished! namespace content:"
|
|
|
for k,v in my_ns.items():
|
|
|
print k,':',str(v)[:80].rstrip()
|
|
|
|
|
|
import IPython.Shell
|
|
|
|
|
|
def do_test(arg_line):
|
|
|
test_session(IPython.Shell._select_shell(arg_line.split()))
|
|
|
|
|
|
do_test('')
|
|
|
do_test('ipython -gthread')
|
|
|
do_test('ipython -q4thread')
|
|
|
do_test('ipython -pylab')
|
|
|
do_test('ipython -pylab -gthread')
|