##// END OF EJS Templates
This is a manual merge of certain things in the ipython1-dev branch, revision 46, into the main ...
This is a manual merge of certain things in the ipython1-dev branch, revision 46, into the main ipython branch. This is not a true merge in the formal sense because all history is not coming over with the files. For a detailed history of the added files, please see the ipython1-dev branch or the svn repository on scipy.org that ipython1-dev came from. More specifically, here is what I have done in this commit: 1) Moved the following by hand ipython1.config -> IPython.config ipython1.kernel -> IPython.kernel ipython1.external -> IPython.external ipython1.core -> IPython.kernel.core ipython1.testutils -> IPython.testing ipython1.tools -> IPython.tools 2) Moved IPython.tools.guid -> IPython1.external.guid 3) Renamed: ipython1 -> IPython IPython.core -> IPython.kernel.core IPython.testutils -> IPython.testing 4) Then did a "bzr add" for all the new stuff. That is all folks!

File last commit:

r1234:52b55407
r1234:52b55407
Show More
client.py
95 lines | 2.8 KiB | text/x-python | PythonLexer
# encoding: utf-8
"""This module contains blocking clients for the controller interfaces.
Unlike the clients in `asyncclient.py`, the clients in this module are fully
blocking. This means that methods on the clients return the actual results
rather than a deferred to the result. Also, we manage the Twisted reactor
for you. This is done by running the reactor in a thread.
The main classes in this module are:
* MultiEngineClient
* TaskClient
* Task
* CompositeError
"""
__docformat__ = "restructuredtext en"
#-------------------------------------------------------------------------------
# Copyright (C) 2008 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Imports
#-------------------------------------------------------------------------------
import sys
# from IPython.tools import growl
# growl.start("IPython1 Client")
from twisted.internet import reactor
from IPython.kernel.clientconnector import ClientConnector
from IPython.kernel.twistedutil import ReactorInThread
from IPython.kernel.twistedutil import blockingCallFromThread
# These enable various things
from IPython.kernel import codeutil
import IPython.kernel.magic
# Other things that the user will need
from IPython.kernel.task import Task
from IPython.kernel.error import CompositeError
#-------------------------------------------------------------------------------
# Code
#-------------------------------------------------------------------------------
_client_tub = ClientConnector()
def get_multiengine_client(furl_or_file=''):
"""Get the blocking MultiEngine client.
:Parameters:
furl_or_file : str
A furl or a filename containing a furl. If empty, the
default furl_file will be used
:Returns:
The connected MultiEngineClient instance
"""
client = blockingCallFromThread(_client_tub.get_multiengine_client,
furl_or_file)
return client.adapt_to_blocking_client()
def get_task_client(furl_or_file=''):
"""Get the blocking Task client.
:Parameters:
furl_or_file : str
A furl or a filename containing a furl. If empty, the
default furl_file will be used
:Returns:
The connected TaskClient instance
"""
client = blockingCallFromThread(_client_tub.get_task_client,
furl_or_file)
return client.adapt_to_blocking_client()
MultiEngineClient = get_multiengine_client
TaskClient = get_task_client
# Now we start the reactor in a thread
rit = ReactorInThread()
rit.setDaemon(True)
rit.start()