class InterpreterInterface(BaseInterpreterInterface): ''' The methods in this class should be registered in the xml-rpc server. ''' def __init__(self, host, client_port, mainThread): BaseInterpreterInterface.__init__(self, mainThread) self.client_port = client_port self.host = host self.interpreter = PyDevFrontEnd(host, client_port) self._input_error_printed = False self.notification_succeeded = False self.notification_tries = 0 self.notification_max_tries = 3 self.notify_about_magic() def get_greeting_msg(self): return self.interpreter.get_greeting_msg() def doAddExec(self, codeFragment): self.notify_about_magic() if (codeFragment.text.rstrip().endswith('??')): print('IPython-->') try: res = bool(self.interpreter.addExec(codeFragment.text)) finally: if (codeFragment.text.rstrip().endswith('??')): print('<--IPython') return res def getNamespace(self): return self.interpreter.getNamespace() def getCompletions(self, text, act_tok): return self.interpreter.getCompletions(text, act_tok) def close(self): sys.exit(0) def notify_about_magic(self): if not self.notification_succeeded: self.notification_tries+=1 if self.notification_tries>self.notification_max_tries: return completions = self.getCompletions("%", "%") magic_commands = [x[0] for x in completions] server = self.get_server() if server is not None: try: server.NotifyAboutMagic(magic_commands, self.interpreter.is_automagic()) self.notification_succeeded = True except : self.notification_succeeded = False
class InterpreterInterface(BaseInterpreterInterface): ''' The methods in this class should be registered in the xml-rpc server. ''' def __init__(self, host, client_port, server): BaseInterpreterInterface.__init__(self, server) self.client_port = client_port self.host = host self.interpreter = PyDevFrontEnd(pydev_host=host, pydev_client_port=client_port) self._input_error_printed = False def doAddExec(self, line): return bool(self.interpreter.addExec(line)) def getNamespace(self): return self.interpreter.getNamespace() def getCompletions(self, text, act_tok): return self.interpreter.getCompletions(text, act_tok) def close(self): sys.exit(0)
class InterpreterInterface(BaseInterpreterInterface): ''' The methods in this class should be registered in the xml-rpc server. ''' def __init__(self, host, client_port, mainThread): BaseInterpreterInterface.__init__(self, mainThread) self.client_port = client_port self.host = host self.interpreter = PyDevFrontEnd(host, client_port) self._input_error_printed = False self.notification_succeeded = False self.notification_tries = 0 self.notification_max_tries = 3 self.notify_about_magic() def get_greeting_msg(self): return self.interpreter.get_greeting_msg() def doAddExec(self, codeFragment): self.notify_about_magic() if (codeFragment.text.rstrip().endswith('??')): print('IPython-->') try: res = bool(self.interpreter.addExec(codeFragment.text)) finally: if (codeFragment.text.rstrip().endswith('??')): print('<--IPython') return res def getNamespace(self): return self.interpreter.getNamespace() def getCompletions(self, text, act_tok): return self.interpreter.getCompletions(text, act_tok) def close(self): sys.exit(0) def notify_about_magic(self): if not self.notification_succeeded: self.notification_tries += 1 if self.notification_tries > self.notification_max_tries: return completions = self.getCompletions("%", "%") magic_commands = [x[0] for x in completions] server = self.get_server() if server is not None: try: server.NotifyAboutMagic(magic_commands, self.interpreter.is_automagic()) self.notification_succeeded = True except: self.notification_succeeded = False
def __init__(self, host, client_port, mainThread): BaseInterpreterInterface.__init__(self, mainThread) self.client_port = client_port self.host = host self.interpreter = PyDevFrontEnd() self._input_error_printed = False self.notification_succeeded = False self.notification_tries = 0 self.notification_max_tries = 3 self.notify_about_magic()
def __init__(self, host, client_port, server, exec_queue): BaseInterpreterInterface.__init__(self, server, exec_queue) self.client_port = client_port self.host = host self.exec_queue = exec_queue self.interpreter = PyDevFrontEnd(pydev_host=host, pydev_client_port=client_port, exec_queue=exec_queue) self._input_error_printed = False
class InterpreterInterface(BaseInterpreterInterface): ''' The methods in this class should be registered in the xml-rpc server. ''' def __init__(self, host, client_port, server, exec_queue): BaseInterpreterInterface.__init__(self, server, exec_queue) self.client_port = client_port self.host = host self.exec_queue = exec_queue self.interpreter = PyDevFrontEnd(pydev_host=host, pydev_client_port=client_port, exec_queue=exec_queue) self._input_error_printed = False def doAddExec(self, line): return bool(self.interpreter.addExec(line)) def getNamespace(self): return self.interpreter.getNamespace() def getCompletions(self, text, act_tok): return self.interpreter.getCompletions(text, act_tok) def interrupt(self): self.interpreter.interrupt() if os.name == 'posix': os.kill(os.getpid(), signal.SIGINT) elif os.name == 'nt' and hasattr(signal, 'CTRL_C_EVENT'): os.kill(os.getpid(), signal.CTRL_C_EVENT) else: thread.interrupt_main() def close(self): sys.exit(0)
class InterpreterInterface(BaseInterpreterInterface): ''' The methods in this class should be registered in the xml-rpc server. ''' def __init__(self, host, client_port, mainThread): BaseInterpreterInterface.__init__(self, mainThread) self.client_port = client_port self.host = host self.interpreter = PyDevFrontEnd() self._input_error_printed = False self.notification_succeeded = False self.notification_tries = 0 self.notification_max_tries = 3 self.notify_about_magic() def get_greeting_msg(self): return self.interpreter.get_greeting_msg() def doAddExec(self, line): self.notify_about_magic() if (line.rstrip().endswith('??')): print('IPython-->') try: res = bool(self.interpreter.addExec(line)) finally: if (line.rstrip().endswith('??')): print('<--IPython') return res def getNamespace(self): return self.interpreter.getNamespace() def getCompletions(self, text, act_tok): try: ipython_completion = text.startswith('%') if not ipython_completion: s = re.search(r'\bcd\b', text) if s is not None and s.start() == 0: ipython_completion = True if text is None: text = "" TYPE_LOCAL = '9' _line, completions = self.interpreter.complete(text) ret = [] append = ret.append for completion in completions: if completion.startswith('%'): append((completion[1:], '', '%', TYPE_LOCAL)) else: append((completion, '', '', TYPE_LOCAL)) if ipython_completion: return ret #Otherwise, use the default PyDev completer (to get nice icons) from _completer import Completer completer = Completer(self.getNamespace(), None) completions = completer.complete(act_tok) cset = set() for c in completions: cset.add(c[0]) for c in ret: if c[0] not in cset: completions.append(c) return completions except: import traceback traceback.print_exc() return [] def close(self): sys.exit(0) def ipython_editor(self, file, line): server = self.get_server() if server is not None: return server.IPythonEditor(os.path.realpath(file), line) def notify_about_magic(self): if not self.notification_succeeded: self.notification_tries+=1 if self.notification_tries>self.notification_max_tries: return completions = self.getCompletions("%", "%") magic_commands = [x[0] for x in completions] server = self.get_server() if server is not None: try: server.NotifyAboutMagic(magic_commands, self.interpreter.is_automagic()) self.notification_succeeded = True except : self.notification_succeeded = False
class InterpreterInterface(BaseInterpreterInterface): ''' The methods in this class should be registered in the xml-rpc server. ''' def __init__(self, host, client_port, mainThread): BaseInterpreterInterface.__init__(self, mainThread) self.client_port = client_port self.host = host self.interpreter = PyDevFrontEnd() self._input_error_printed = False self.notification_succeeded = False self.notification_tries = 0 self.notification_max_tries = 3 self.notify_about_magic() def get_greeting_msg(self): return self.interpreter.get_greeting_msg() def doAddExec(self, line): self.notify_about_magic() if (line.rstrip().endswith('??')): print('IPython-->') try: res = bool(self.interpreter.addExec(line)) finally: if (line.rstrip().endswith('??')): print('<--IPython') return res def getNamespace(self): return self.interpreter.getNamespace() def getCompletions(self, text, act_tok): try: ipython_completion = text.startswith('%') if not ipython_completion: s = re.search(r'\bcd\b', text) if s is not None and s.start() == 0: ipython_completion = True if text is None: text = "" TYPE_LOCAL = '9' _line, completions = self.interpreter.complete(text) ret = [] append = ret.append for completion in completions: if completion.startswith('%'): append((completion[1:], '', '%', TYPE_LOCAL)) else: append((completion, '', '', TYPE_LOCAL)) if ipython_completion: return ret #Otherwise, use the default PyDev completer (to get nice icons) from _completer import Completer completer = Completer(self.getNamespace(), None) completions = completer.complete(act_tok) cset = set() for c in completions: cset.add(c[0]) for c in ret: if c[0] not in cset: completions.append(c) return completions except: import traceback traceback.print_exc() return [] def close(self): sys.exit(0) def ipython_editor(self, file, line): server = self.get_server() if server is not None: return server.IPythonEditor(os.path.realpath(file), line) def notify_about_magic(self): if not self.notification_succeeded: self.notification_tries += 1 if self.notification_tries > self.notification_max_tries: return completions = self.getCompletions("%", "%") magic_commands = [x[0] for x in completions] server = self.get_server() if server is not None: try: server.NotifyAboutMagic(magic_commands, self.interpreter.is_automagic()) self.notification_succeeded = True except: self.notification_succeeded = False
def __init__(self, host, client_port, server): BaseInterpreterInterface.__init__(self, server) self.client_port = client_port self.host = host self.interpreter = PyDevFrontEnd(pydev_host=host, pydev_client_port=client_port) self._input_error_printed = False
# PyDevFrontEnd depends on singleton in IPython, so you # can't make multiple versions. So we reuse front_end for # all the tests orig_stdout = sys.stdout orig_stderr = sys.stderr stdout = sys.stdout = StringIO() stderr = sys.stderr = StringIO() from pydev_ipython_console_011 import PyDevFrontEnd s = socket.socket() s.bind(('', 0)) client_port = s.getsockname()[1] s.close() front_end = PyDevFrontEnd(get_localhost(), client_port) def addExec(code, expected_more=False): more = front_end.addExec(code) eq_(expected_more, more) class TestBase(unittest.TestCase): def setUp(self): front_end.input_splitter.reset() stdout.truncate(0) stdout.seek(0) stderr.truncate(0) stderr.seek(0)