This commit is contained in:
Vítor Santos Costa
2018-05-26 00:22:27 +01:00
parent c4a0d5766b
commit 4fe08fd82a
10 changed files with 68 additions and 61 deletions

View File

@@ -69,6 +69,7 @@ static void *py_open(VFS_t *me, const char *name, const char *io_mode,
}
st->u.private_data = pystream;
st->vfs = me;
st->file = NULL;
python_release_GIL(ctk);
return st;
}

View File

@@ -30,15 +30,15 @@ class Engine( YAPEngine ):
args.setYapPLDIR(yap_lib_path)
args.setSavedState(join(yap_lib_path, "startup.yss"))
YAPEngine.__init__(self, args)
self.goal(set_prolog_flag('verbose', 'silent'), recover=True)
self.goal(compile(library('yapi')), recover=True)
self.goal(set_prolog_flag('verbose', 'normal'), release=True)
self.goal(set_prolog_flag('verbose', 'silent'),True)
self.goal(compile(library('yapi')), True)
self.goal(set_prolog_flag('verbose', 'normal'), True)
def run(self, g, m=None, release=False):
if m:
self.mgoal(g, m, release=release)
self.mgoal(g, m, release)
else:
self.goal(release=release)
self.goal(release)
class EngineArgs( YAPEngineArgs ):
@@ -56,6 +56,7 @@ class Predicate( YAPPredicate ):
class Query:
"""Goal is a predicate instantiated under a specific environment """
def __init__(self, engine, g):
engine.reSet();
self.q = engine.query(g)
if self.q:
self.port = "call"
@@ -79,8 +80,10 @@ class Query:
raise StopIteration()
def close( self ):
self.q.close()
self.q = None
engine.reSet()
if self.q:
self.q.close()
self.q = None
def name( name, arity):
@@ -108,7 +111,7 @@ class YAPShell:
def numbervars( self ):
Dict = {}
self.engine.goal(show_answer( self, Dict))
self.engine.goal(show_answer( self, Dict), True)
return Dict
# rc = self.q.namedVarsVector()
# self.q.r = self.q.goal().numbervars()

View File

@@ -112,7 +112,7 @@ class YAPInputSplitter(InputSplitter):
if not line:
line = text.rstrip()
self.errors = []
engine.mgoal(errors(self, line),"user")
engine.mgoal(errors(self, line),"user",True)
return self.errors != []
@@ -494,7 +494,7 @@ class YAPCompleter(Completer):
ensure that each completion object will only be present once.
"""
self.matches = []
prolog_res = self.shell.yapeng.mgoal(completions(text, self), "user")
prolog_res = self.shell.yapeng.mgoal(completions(text, self), "user",True)
if self.matches:
return text, self.matches
magic_res = self.magic_matches(text)
@@ -511,7 +511,7 @@ class YAPRun:
self.yapeng = Engine()
global engine
engine = self.yapeng
self.yapeng.goal(use_module(library("jupyter")))
self.yapeng.goal(use_module(library("jupyter")),True)
self.query = None
self.os = None
self.it = None
@@ -527,7 +527,7 @@ class YAPRun:
return self.errors
self.errors=[]
(text,_,_,_) = self.clean_end(text)
self.yapeng.mgoal(errors(self,text),"user")
self.yapeng.mgoal(errors(self,text),"user",True)
return self.errors
def jupyter_query(self, s):
@@ -724,10 +724,10 @@ class YAPRun:
# run the new command using the given tracer
#
try:
self.yapeng.mgoal(streams(True),"user")
self.yapeng.mgoal(streams(True),"user", True)
#state = tracer.runfunc(f,self,cell)
state = self.jupyter_query( cell )
self.yapeng.mgoal(streams(False),"user")
self.yapeng.mgoal(streams(False),"user", True)
except Exception as e:
has_raised = True
self.yapeng.mgoal(streams("off"),"user")