yap_kernel

This commit is contained in:
Vitor Santos Costa 2018-12-05 09:09:19 +00:00
parent 6372151bf1
commit 1797e5132e
3 changed files with 68 additions and 64 deletions

View File

@ -795,7 +795,7 @@ WARN_LOGFILE =
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.
INPUT = @CMAKE_SOURCE_DIR@
INPUT = @DOC_INPUT_FILES@S
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses

View File

@ -2660,8 +2660,12 @@ class InteractiveShell(SingletonConfigurable):
-------
result : :class:`ExecutionResult`
"""
info = ExecutionInfo(
raw_cell, store_history, silent, shell_futures)
result = ExecutionResult(info)
result.error_before_exec = None
result = None
try:
# import trace
# tracer = trace.Trace(
@ -2675,8 +2679,8 @@ class InteractiveShell(SingletonConfigurable):
# raw_cell, store_history,
# silent, shell_futures)
result = self._yrun_cell(
raw_cell, store_history, silent, shell_futures)
self._yrun_cell(
raw_cell, result, store_history, silent, shell_futures)
finally:
self.events.trigger('post_execute')
if not silent:

View File

@ -9,11 +9,14 @@ from yap4py.yapi import *
from IPython.core.completer import Completer
# import IPython.core
from traitlets import Instance
from IPython.core import interactiveshell
from IPython.core.displayhook import DisplayHook
from IPython.core.inputsplitter import *
from IPython.core.inputtransformer import *
from IPython.core.interactiveshell import *
from ipython_genutils.py3compat import builtin_mod
from IPython.core import interactiveshell
from yap_kernel.displayhook import ZMQShellDisplayHook
from collections import namedtuple
import traceback
@ -280,7 +283,7 @@ class YAPCompleter(Completer):
help="""Activate greedy completion
PENDING DEPRECTION. this is now mostly taken care of with Jedi.
This will enable completion on elements of lists, self.results of function calls, etc.,
This will enable completion on elements of lists, results of function calls, etc.,
but can be unsafe because the code is actually evaluated on TAB.
"""
).tag(config=True)
@ -398,7 +401,7 @@ class YAPCompleter(Completer):
return comp
def magic_config_matches(self, text:str) -> List[str]:
def magic_config_matches(self, text:str) -> List:
""" Match class names and attributes for %config magic """
texts = text.strip().split()
@ -434,7 +437,7 @@ class YAPCompleter(Completer):
return []
def magic_color_matches(self, text:str) -> List[str] :
def magic_color_matches(self, text:str) -> List:
""" Match color schemes for %colors magic"""
texts = text.split()
if text.endswith(' '):
@ -580,11 +583,11 @@ class YAPRun(InteractiveShell):
if self.port == "exit":
self.os = None
#sys.stderr.write('Done, with'+str(self.answers)+'\n')
self.result.result = True,self.bindings
return self.result
result.result = True,self.bindings
return result
if stop or howmany == self.iterations:
self.result.result = True, self.answers
return self.result
result.result = True, self.answers
return result
if found:
sys.stderr.write('Done, with '+str(self.answers)+'\n')
else:
@ -592,18 +595,18 @@ class YAPRun(InteractiveShell):
self.query.close()
self.query = None
sys.stderr.write('Fail\n')
self.result.result = True,self.bindings
return self.result
result.result = True,self.bindings
return result
except Exception as e:
sys.stderr.write('Exception '+str(e)+'in query '+ str(self.query)+
':'+pg+'\n '+str( self.bindings)+ '\n')
has_raised = True
self.result.result = False
return self.result
result.result = False
return result
def _yrun_cell(self, raw_cell, store_history=True, silent=False,
def _yrun_cell(self, raw_cell, result, store_history=True, silent=False,
shell_futures=True):
"""Run a complete IPython cell.
@ -630,7 +633,7 @@ class YAPRun(InteractiveShell):
Returns
-------
`self.result : :class:`Executionself.result`
`result : :class:`ExecutionResult`
"""
# construct a query from a one-line string
@ -640,37 +643,7 @@ class YAPRun(InteractiveShell):
# the right side wraps a handle to a variable
#import pdb; pdb.set_trace()
# #pdb.set_trace()
# atom match either symbols, or if no symbol exists, strings, In this case
# variable names should match strings
# ask = True
# launch the query
cell = raw_cell # cell has to exist so it can be stored/logged
info = interactiveshell.ExecutionInfo(
raw_cell, store_history, silent, shell_futures)
self.result = interactiveshell.ExecutionResult(info)
self.result.error_before_exec = None
if (raw_cell == "") or raw_cell.isspace():
self.shell.last_execution_succeeded = True
return self.result
if silent:
store_history = False
if store_history:
self.result.execution_count = self.shell.execution_count+1
def error_before_exec(self, value):
self.result.error_before_exec = value
self.shell.last_execution_succeeded = False
return self.result
self.shell.events.trigger('pre_execute')
if not silent:
self.shell.events.trigger('pre_run_cell')
# If any of our input transformation (input_transformer_manager or
# atom match either symbols, or if no symbol exists, strings, In this case # If any of our input transformation (input_transformer_manager or
# prefilter_manager) raises an exception, we store it in this variable
# so that we can display the error after logging the input and storing
# it in the history.
@ -680,6 +653,7 @@ class YAPRun(InteractiveShell):
# cell = self.shell.input_transformer_manager.transform_cell(raw_cell)
# except SyntaxError:
# preprocessing_exc_tuple = self.shell.syntax_error() # sys.exc_info()
cell = raw_cell
for i in self.errors:
try:
(_,lin,pos,text) = i
@ -706,27 +680,53 @@ class YAPRun(InteractiveShell):
# compiler
# compiler = self.shell.compile if shell_futures else CachingCompiler()
self.cell_name = str( self.shell.execution_count)
if cell[0] == '%':
txt0 = cell.split(maxsplit = 1, sep = '\n')
self.shell.displayhook.exec_result= result
cell = raw_cell.strip()
while cell[0] == '%':
if cell[1] == '%':
## cell magic
txt0 = cell[2:].split(maxsplit = 1, sep = '\n')
try:
body = txt0[1][1:]
magic = txt0[0].strip()
except:
magic = cell[2:].strip()
body = ""
linec = False
magic = txt[0].lstrip('%%').strip()
body = txt[1]
self.result = True, self.shell.run_cell_magic(magic, line, body)
try:
[magic,line] = magic.split(maxsplit=1)
except:
line = ""
self.shell.last_execution_succeeded = True
self.shell.run_cell_magic(magic, line, body)
result.result = True
return
else:
linec = True
magic = cell.lstrip('%').strip()
txt = txt0[0].split(maxsplit = 2)
magic = txt[0]
self.shell.run_line_magic(magic, line)
rcell = cell[1:].strip()
print(cell)
try:
[magic,cell] = rcell.split(maxsplit = 1, sep = '\n')
except:
magic = rcell.strip()
cell = ""
try:
[magic,line] = magic.split(maxsplit=1)
except:
line = ""
self.shell.last_execution_succeeded = True
self.shell.run_line_magic(magic, line)
# go execute the body
# Give the displayhook a reference to our ExecutionResult so it
# can fill in the output value.
self.shell.displayhook.exec_result = self.result
self.shell.displayhook.exec_result = result
if self.syntaxErrors(cell):
self.result.result = False
result.result = False
return
has_raised = False
try:
builtin_mod.input = self.shell.sys_raw_input
builtin_mod.input = input
self.shell.input = input
self.yapeng.mgoal(streams(True),"user", True)
if cell.strip('\n \t'):
#create a Trace object, telling it what to ignore, and whether to
@ -746,10 +746,10 @@ class YAPRun(InteractiveShell):
self.jupyter_query( cell )
# state = tracer.runfunc(jupyter_query( self, cell ) )
self.shell.last_execution_succeeded = True
result.result = True
except Exception as e:
has_raised = True
self.result.result = False
result.result = False
try:
(etype, value, tb) = e
traceback.print_exception(etype, value, tb)
@ -774,7 +774,7 @@ class YAPRun(InteractiveShell):
self.shell.execution_count += 1
self.yapeng.mgoal(streams(False),"user", True)
return self.result
return result
def clean_end(self,s):
"""