From c50367325ef58c4ad11441e4aac63a2b24f36bc4 Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Wed, 27 Mar 2019 16:31:31 +0000 Subject: [PATCH] jupyter --- packages/python/swig/prolog/yapi.yap | 20 +-- .../yap_kernel/yap_ipython/prolog/jupyter.yap | 48 +++---- .../python/yap_kernel/yap_ipython/yapi.py | 136 +++++++++--------- 3 files changed, 99 insertions(+), 105 deletions(-) diff --git a/packages/python/swig/prolog/yapi.yap b/packages/python/swig/prolog/yapi.yap index bc287d938..a4d06b556 100644 --- a/packages/python/swig/prolog/yapi.yap +++ b/packages/python/swig/prolog/yapi.yap @@ -3,16 +3,16 @@ %% @brief support yap shell %% - :- module(yapi, [ - python_ouput/0, - show_answer/2, - show_answer/3, - yap_query/4, - python_query/2, - python_query/3, - python_import/1, - yapi_query/2 - ]). + %% :- module(yapi, [ + %% python_ouput/0, + %% show_answer/2, + %% show_answer/3, + %% yap_query/4, + %% python_query/2, + %% python_query/3, + %% python_import/1, + %% yapi_query/2 + %% ]). %:- yap_flag(verbose, silent). diff --git a/packages/python/yap_kernel/yap_ipython/prolog/jupyter.yap b/packages/python/yap_kernel/yap_ipython/prolog/jupyter.yap index 04e68ff6d..f319253d3 100644 --- a/packages/python/yap_kernel/yap_ipython/prolog/jupyter.yap +++ b/packages/python/yap_kernel/yap_ipython/prolog/jupyter.yap @@ -6,22 +6,22 @@ */ %:- yap_flag(gc_trace,verbose). - :- module( jupyter, - [jupyter_query/3, - jupyter_query/4, - op(100,fy,('$')), - op(950,fy,:=), - op(950,yfx,:=), -% op(950,fx,<-), -% op(950,yfx,<-), - op(50, yf, []), - op(50, yf, '()'), - op(100, xfy, '.'), - op(100, fy, '.'), - blank/1, - streams/1 - ] - ). +%% :- module( jupyter, +%% [jupyter_query/3, +%% jupyter_query/4, +%% op(100,fy,('$')), +%% op(950,fy,:=), +%% op(950,yfx,:=), +%% % op(950,fx,<-), +%% % op(950,yfx,<-), +%% op(50, yf, []), +%% op(50, yf, '()'), +%% op(100, xfy, '.'), +%% op(100, fy, '.'), +%% blank/1, +%% streams/1 +%% ] +%% ). :- use_module(library(hacks)). @@ -37,15 +37,10 @@ :- python_import(sys). -:- meta_predicate jupyter_query(+,:,+,-), jupyter_query(+,:,+). +%:- meta_predicate jupyter_query(+,:,+,-), jupyter_query(+,:,+). jupyter_query(Caller, Cell, Line, Bindings ) :- - gated_call( - streams(true), - jupyter_cell(Caller, Cell, Line, Bindings), - Port, - next_streams( Caller, Port, Bindings ) - ). + jupyter_cell(Caller, Cell, Line, Bindings). jupyter_query(Caller, Cell, Line ) :- jupyter_query( Caller, Cell, Line, _Bindings ). @@ -58,8 +53,8 @@ next_streams( _Caller, answer, _Bindings ) :- !. next_streams(_, redo, _ ) :- !. -next_streams( _, _, _ ) :- - streams(false). +next_streams( _, _, _ ). % :- + % streams(false). @@ -105,9 +100,8 @@ jupyter_consult(Cell) :- load_files(user:Stream,[stream(Stream)| Options]) ), error(A,B), - (close(Stream), system_error(A,B)) + system_error(A,B) ), - close(Stream), fail. jupyter_consult(_Cell). diff --git a/packages/python/yap_kernel/yap_ipython/yapi.py b/packages/python/yap_kernel/yap_ipython/yapi.py index 882e3723c..2be1ba7ff 100644 --- a/packages/python/yap_kernel/yap_ipython/yapi.py +++ b/packages/python/yap_kernel/yap_ipython/yapi.py @@ -614,6 +614,13 @@ class YAPRun(InteractiveShell): `result : :class:`ExecutionResult` """ + if store_history: + # Write output to the database. Does nothing unless + # history output logging is enabled. + self.shell.history_manager.store_output(self.shell.execution_count) + # Each cell is a *single* input, regardless of how many lines it has + self.shell.execution_count += 1 + # construct a query from a one-line string # q is opaque to Python # vs is the list of variables @@ -649,8 +656,6 @@ class YAPRun(InteractiveShell): # # Display the exception if input processing failed. if preprocessing_exc_tuple is not None: self.showtraceback(preprocessing_exc_tuple) - if store_history: - self.shell.execution_count += 1 return self.error_before_exec(preprocessing_exc_tuple[2]) # Our own compiler remembers the __future__ environment. If we want to @@ -695,7 +700,7 @@ class YAPRun(InteractiveShell): # can fill in the output value. self.shell.displayhook.exec_result = result (program,squery,_ ,howmany) = self.prolog_cell(cell) - print(program, squery, howmany) + print("program",program, "q", squery, "h",howmany) if howmany <= 0 and not program: return result if self.syntaxErrors(program+squery+".\n") : @@ -741,13 +746,6 @@ class YAPRun(InteractiveShell): if not silent: self.shell.events.trigger('post_run_cell') - if store_history: - # Write output to the database. Does nothing unless - # history output logging is enabled. - self.shell.history_manager.store_output(self.shell.execution_count) - # Each cell is a *single* input, regardless of how many lines it has - self.shell.execution_count += 1 - self.engine.mgoal(streams(False),"user", True) return @@ -758,8 +756,8 @@ class YAPRun(InteractiveShell): def pcell(s): - """ - Trasform a text into program+query. A query is the + """ + Trasform a text into program+query. A query is the last line if the last line is non-empty and does not terminate on a dot. You can also finish with @@ -768,64 +766,66 @@ def pcell(s): If the line terminates on a `*/` or starts on a `%` we assume the line is a comment. - """ - try: - sl = s.splitlines() - l = len(sl) - i = 0 - while i