RDFLib / FuXi

Chimezie Ogbuji's FuXi reasoner. NON-FUNCTIONING, RETAINED FOR ARCHIVAL PURPOSES. For working code plus version and associated support requirements see:
http://code.google.com/p/fuxi/
51 stars 28 forks source link

"Magic Set Method" and "Backward-chaining inference" not working #7

Closed RomainEndelin closed 10 years ago

RomainEndelin commented 10 years ago

I am trying to follow the tutorial given in https://github.com/RDFLib/FuXi/blob/master/docs/Tutorial.rst, but sections Magic Set Method and Backward-chaining inference do not seem to work.

I use Python 3.3 inside a VirtualEnv

Here is the code for Magic Set Method:

from rdflib import Variable, Namespace
from rdflib import Graph
from FuXi.Rete.RuleStore import SetupRuleStore
from FuXi.Rete.Util import generateTokenSet
from FuXi.Horn.HornRules import HornFromN3
from FuXi.Rete.Magic import MagicSetTransformation, AdornLiteral
from FuXi.SPARQL import RDFTuplesToSPARQL

exNs = Namespace('http://dev.w3.org/2000/10/swap/test/cwm/fam.n3#')

rules = HornFromN3('http://dev.w3.org/2000/10/swap/test/cwm/fam-rules.n3')
factGraph = Graph().parse('http://dev.w3.org/2000/10/swap/test/cwm/fam.n3',format='n3')
factGraph.bind(u'ex',exNs)
dPreds = [exNs.ancestor]

rule_store, rule_graph, network = SetupRuleStore(makeNetwork=True)
network.nsMap = {u'ex':exNs}
closureDeltaGraph=Graph()
network.inferredFacts = closureDeltaGraph

goals = [(exNs.david,exNs.ancestor,Variable('ANCESTOR'))]
for rule in MagicSetTransformation(factGraph,rules,goals,dPreds):
    network.buildNetworkFromClause(rule)
    # network.rules.add(rule)
    print("\t", rule)

And here is the Error:

--------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-160-8b4bb87e1c32> in <module>()
      1 goals = [(exNs.david, exNs.ancestor, Variable('ANCESTOR'))]
----> 2 for rule in MagicSetTransformation(factGraph, rules, goals, derivedPreds=dPreds):
      3     network.buildNetworkFromClause(rule)
      4 
      5 network.rules

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/FuXi-1.4.dev-py3.3.egg/FuXi/Rete/Magic.py in MagicSetTransformation(factGraph, rules, GOALS, derivedPreds, strictCheck, noMagic, defaultPredicates)
    197                                    derivedPreds=derivedPreds,
    198                                    strictCheck=strictCheck,
--> 199                                    defaultPredicates=defaultPredicates)
    200     newRules = []
    201     for rule in adornedProgram:

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/FuXi-1.4.dev-py3.3.egg/FuXi/Rete/Magic.py in SetupDDLAndAdornProgram(factGraph, rules, GOALS, derivedPreds, strictCheck, defaultPredicates, ignoreUnboundDPreds, hybridPreds2Replace)
    127                         derivedPreds,
    128                         ignoreUnboundDPreds,
--> 129                         hybridPreds2Replace=hybridPreds2Replace)
    130     if adornedProgram != set([]):
    131         rt = reduce(lambda l, r: l + r,

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/FuXi-1.4.dev-py3.3.egg/FuXi/Rete/Magic.py in AdornProgram(factGraph, rs, goals, derivedPreds, ignoreUnboundDPreds, hybridPreds2Replace)
    489                                           term,
    490                                           ignoreUnboundDPreds=ignoreUnboundDPreds,
--> 491                                           hybridPreds2Replace=hybridPreds2Replace)
    492                     adornedProgram.add(adornedRule)
    493                     #The adorned version of a rule contains additional adorned

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/FuXi-1.4.dev-py3.3.egg/FuXi/Rete/Magic.py in AdornRule(derivedPreds, clause, newHead, ignoreUnboundDPreds, hybridPreds2Replace)
    367                         adornedHead,
    368                         hybridPreds2Replace=hybridPreds2Replace,
--> 369                         ignoreUnboundDPreds=ignoreUnboundDPreds)
    370     bodyPredReplace = {}
    371 

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/FuXi-1.4.dev-py3.3.egg/FuXi/Rete/SidewaysInformationPassing.py in BuildNaturalSIP(clause, derivedPreds, adornedHead, hybridPreds2Replace, ignoreUnboundDPreds)
    385         for N, prop, q in sipGraph.query(
    386             'SELECT ?N ?prop ?q {  ?prop a magic:SipArc . ?N ?prop ?q . }',
--> 387             initNs={u'magic': MAGIC}):
    388             if occurLookup[q] not in derivedPreds and (
    389                     occurLookup[q] not in hybridPreds2Replace if hybridPreds2Replace else False

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/rdflib/graph.py in query(self, query_object, processor, result, initNs, initBindings, use_store_provided, **kwargs)
   1080 
   1081         return result(processor.query(
-> 1082             query_object, initBindings, initNs, **kwargs))
   1083 
   1084     def update(self, update_object, processor='sparql',

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/rdflib/plugins/sparql/processor.py in query(self, strOrQuery, initBindings, initNs, base, DEBUG)
     70 
     71         if not isinstance(strOrQuery, Query):
---> 72             parsetree = parseQuery(strOrQuery)
     73             query = translateQuery(parsetree, base, initNs)
     74         else:

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/rdflib/plugins/sparql/parser.py in parseQuery(q)
   1050 
   1051     q = expandUnicodeEscapes(q)
-> 1052     return Query.parseString(q, parseAll=True)
   1053 
   1054 

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in parseString(self, instring, parseAll)
   1085             instring = instring.expandtabs()
   1086         try:
-> 1087             loc, tokens = self._parse( instring, 0 )
   1088             if parseAll:
   1089                 #loc = self.preParse( instring, loc )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
    958             if self.mayIndexError or loc >= len(instring):
    959                 try:
--> 960                     loc,tokens = self.parseImpl( instring, preloc, doActions )
    961                 except IndexError:
    962                     raise ParseException( instring, len(instring), self.errmsg, self )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
   2422                     raise ParseSyntaxException( ParseException(instring, len(instring), self.errmsg, self) )
   2423             else:
-> 2424                 loc, exprtokens = e._parse( instring, loc, doActions )
   2425             if exprtokens or exprtokens.keys():
   2426                 resultlist += exprtokens

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
    958             if self.mayIndexError or loc >= len(instring):
    959                 try:
--> 960                     loc,tokens = self.parseImpl( instring, preloc, doActions )
    961                 except IndexError:
    962                     raise ParseException( instring, len(instring), self.errmsg, self )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
   2532         for e in self.exprs:
   2533             try:
-> 2534                 ret = e._parse( instring, loc, doActions )
   2535                 return ret
   2536             except ParseException as err:

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
    958             if self.mayIndexError or loc >= len(instring):
    959                 try:
--> 960                     loc,tokens = self.parseImpl( instring, preloc, doActions )
    961                 except IndexError:
    962                     raise ParseException( instring, len(instring), self.errmsg, self )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
   2677     def parseImpl( self, instring, loc, doActions=True ):
   2678         if self.expr is not None:
-> 2679             return self.expr._parse( instring, loc, doActions, callPreParse=False )
   2680         else:
   2681             raise ParseException("",loc,self.errmsg,self)

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
    958             if self.mayIndexError or loc >= len(instring):
    959                 try:
--> 960                     loc,tokens = self.parseImpl( instring, preloc, doActions )
    961                 except IndexError:
    962                     raise ParseException( instring, len(instring), self.errmsg, self )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
   2422                     raise ParseSyntaxException( ParseException(instring, len(instring), self.errmsg, self) )
   2423             else:
-> 2424                 loc, exprtokens = e._parse( instring, loc, doActions )
   2425             if exprtokens or exprtokens.keys():
   2426                 resultlist += exprtokens

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
    958             if self.mayIndexError or loc >= len(instring):
    959                 try:
--> 960                     loc,tokens = self.parseImpl( instring, preloc, doActions )
    961                 except IndexError:
    962                     raise ParseException( instring, len(instring), self.errmsg, self )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
   2532         for e in self.exprs:
   2533             try:
-> 2534                 ret = e._parse( instring, loc, doActions )
   2535                 return ret
   2536             except ParseException as err:

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
    958             if self.mayIndexError or loc >= len(instring):
    959                 try:
--> 960                     loc,tokens = self.parseImpl( instring, preloc, doActions )
    961                 except IndexError:
    962                     raise ParseException( instring, len(instring), self.errmsg, self )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
   2824     def parseImpl( self, instring, loc, doActions=True ):
   2825         # must be at least one
-> 2826         loc, tokens = self.expr._parse( instring, loc, doActions, callPreParse=False )
   2827         try:
   2828             hasIgnoreExprs = ( len(self.ignoreExprs) > 0 )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
    958             if self.mayIndexError or loc >= len(instring):
    959                 try:
--> 960                     loc,tokens = self.parseImpl( instring, preloc, doActions )
    961                 except IndexError:
    962                     raise ParseException( instring, len(instring), self.errmsg, self )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
   2677     def parseImpl( self, instring, loc, doActions=True ):
   2678         if self.expr is not None:
-> 2679             return self.expr._parse( instring, loc, doActions, callPreParse=False )
   2680         else:
   2681             raise ParseException("",loc,self.errmsg,self)

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
    958             if self.mayIndexError or loc >= len(instring):
    959                 try:
--> 960                     loc,tokens = self.parseImpl( instring, preloc, doActions )
    961                 except IndexError:
    962                     raise ParseException( instring, len(instring), self.errmsg, self )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
   2677     def parseImpl( self, instring, loc, doActions=True ):
   2678         if self.expr is not None:
-> 2679             return self.expr._parse( instring, loc, doActions, callPreParse=False )
   2680         else:
   2681             raise ParseException("",loc,self.errmsg,self)

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
    958             if self.mayIndexError or loc >= len(instring):
    959                 try:
--> 960                     loc,tokens = self.parseImpl( instring, preloc, doActions )
    961                 except IndexError:
    962                     raise ParseException( instring, len(instring), self.errmsg, self )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
   2532         for e in self.exprs:
   2533             try:
-> 2534                 ret = e._parse( instring, loc, doActions )
   2535                 return ret
   2536             except ParseException as err:

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
    985             else:
    986                 for fn in self.parseAction:
--> 987                     tokens = fn( instring, tokensStart, retTokens )
    988                     if tokens is not None:
    989                         retTokens = ParseResults( tokens,

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in tmp(s, l, t)
    825             if numargs == 2:
    826                 def tmp(s,l,t):
--> 827                     return f(l,t)
    828             elif numargs == 1:
    829                 def tmp(s,l,t):

TypeError: postParse2() takes 2 positional arguments but 3 were given

And the code for Backward-chaining inference:

from FuXi.SPARQL.BackwardChainingStore import TopDownSPARQLEntailingStore
from FuXi.Horn.HornRules import HornFromN3
from rdflib import Graph
from rdflib import Namespace
from pprint import pprint

famNs = Namespace('http://dev.w3.org/2000/10/swap/test/cwm/fam.n3#')
nsMapping = {u'fam' : famNs}
rules = HornFromN3('http://dev.w3.org/2000/10/swap/test/cwm/fam-rules.n3')
factGraph = Graph().parse('http://dev.w3.org/2000/10/swap/test/cwm/fam.n3',format='n3')
factGraph.bind(u'fam',famNs)
dPreds = [famNs.ancestor]

topDownStore = TopDownSPARQLEntailingStore(factGraph.store, factGraph, idb=rules, derivedPredicates=dPreds, nsBindings=nsMapping)
targetGraph = Graph(topDownStore)
targetGraph.bind(u'ex', famNs)
pprint(list(targetGraph.query('SELECT ?ANCESTOR { fam:david fam:ancestor ?ANCESTOR }',initNs=nsMapping)))

It raises the same Exception, from the query method of rdflib.graph:

--------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-166-95a431c7fa0e> in <module>()
      2 targetGraph = Graph(topDownStore)
      3 targetGraph.bind(u'ex', famNs)
----> 4 targetGraph.query('SELECT ?ANCESTOR { fam:david fam:ancestor ?ANCESTOR }',initNs=nsMapping)

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/rdflib/graph.py in query(self, query_object, processor, result, initNs, initBindings, use_store_provided, **kwargs)
   1080 
   1081         return result(processor.query(
-> 1082             query_object, initBindings, initNs, **kwargs))
   1083 
   1084     def update(self, update_object, processor='sparql',

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/rdflib/plugins/sparql/processor.py in query(self, strOrQuery, initBindings, initNs, base, DEBUG)
     70 
     71         if not isinstance(strOrQuery, Query):
---> 72             parsetree = parseQuery(strOrQuery)
     73             query = translateQuery(parsetree, base, initNs)
     74         else:

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/rdflib/plugins/sparql/parser.py in parseQuery(q)
   1050 
   1051     q = expandUnicodeEscapes(q)
-> 1052     return Query.parseString(q, parseAll=True)
   1053 
   1054 

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in parseString(self, instring, parseAll)
   1085             instring = instring.expandtabs()
   1086         try:
-> 1087             loc, tokens = self._parse( instring, 0 )
   1088             if parseAll:
   1089                 #loc = self.preParse( instring, loc )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
    958             if self.mayIndexError or loc >= len(instring):
    959                 try:
--> 960                     loc,tokens = self.parseImpl( instring, preloc, doActions )
    961                 except IndexError:
    962                     raise ParseException( instring, len(instring), self.errmsg, self )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
   2422                     raise ParseSyntaxException( ParseException(instring, len(instring), self.errmsg, self) )
   2423             else:
-> 2424                 loc, exprtokens = e._parse( instring, loc, doActions )
   2425             if exprtokens or exprtokens.keys():
   2426                 resultlist += exprtokens

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
    958             if self.mayIndexError or loc >= len(instring):
    959                 try:
--> 960                     loc,tokens = self.parseImpl( instring, preloc, doActions )
    961                 except IndexError:
    962                     raise ParseException( instring, len(instring), self.errmsg, self )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
   2532         for e in self.exprs:
   2533             try:
-> 2534                 ret = e._parse( instring, loc, doActions )
   2535                 return ret
   2536             except ParseException as err:

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
    958             if self.mayIndexError or loc >= len(instring):
    959                 try:
--> 960                     loc,tokens = self.parseImpl( instring, preloc, doActions )
    961                 except IndexError:
    962                     raise ParseException( instring, len(instring), self.errmsg, self )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
   2677     def parseImpl( self, instring, loc, doActions=True ):
   2678         if self.expr is not None:
-> 2679             return self.expr._parse( instring, loc, doActions, callPreParse=False )
   2680         else:
   2681             raise ParseException("",loc,self.errmsg,self)

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
    958             if self.mayIndexError or loc >= len(instring):
    959                 try:
--> 960                     loc,tokens = self.parseImpl( instring, preloc, doActions )
    961                 except IndexError:
    962                     raise ParseException( instring, len(instring), self.errmsg, self )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
   2422                     raise ParseSyntaxException( ParseException(instring, len(instring), self.errmsg, self) )
   2423             else:
-> 2424                 loc, exprtokens = e._parse( instring, loc, doActions )
   2425             if exprtokens or exprtokens.keys():
   2426                 resultlist += exprtokens

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
    958             if self.mayIndexError or loc >= len(instring):
    959                 try:
--> 960                     loc,tokens = self.parseImpl( instring, preloc, doActions )
    961                 except IndexError:
    962                     raise ParseException( instring, len(instring), self.errmsg, self )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
   2532         for e in self.exprs:
   2533             try:
-> 2534                 ret = e._parse( instring, loc, doActions )
   2535                 return ret
   2536             except ParseException as err:

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
    958             if self.mayIndexError or loc >= len(instring):
    959                 try:
--> 960                     loc,tokens = self.parseImpl( instring, preloc, doActions )
    961                 except IndexError:
    962                     raise ParseException( instring, len(instring), self.errmsg, self )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
   2824     def parseImpl( self, instring, loc, doActions=True ):
   2825         # must be at least one
-> 2826         loc, tokens = self.expr._parse( instring, loc, doActions, callPreParse=False )
   2827         try:
   2828             hasIgnoreExprs = ( len(self.ignoreExprs) > 0 )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
    958             if self.mayIndexError or loc >= len(instring):
    959                 try:
--> 960                     loc,tokens = self.parseImpl( instring, preloc, doActions )
    961                 except IndexError:
    962                     raise ParseException( instring, len(instring), self.errmsg, self )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
   2677     def parseImpl( self, instring, loc, doActions=True ):
   2678         if self.expr is not None:
-> 2679             return self.expr._parse( instring, loc, doActions, callPreParse=False )
   2680         else:
   2681             raise ParseException("",loc,self.errmsg,self)

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
    958             if self.mayIndexError or loc >= len(instring):
    959                 try:
--> 960                     loc,tokens = self.parseImpl( instring, preloc, doActions )
    961                 except IndexError:
    962                     raise ParseException( instring, len(instring), self.errmsg, self )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
   2677     def parseImpl( self, instring, loc, doActions=True ):
   2678         if self.expr is not None:
-> 2679             return self.expr._parse( instring, loc, doActions, callPreParse=False )
   2680         else:
   2681             raise ParseException("",loc,self.errmsg,self)

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
    958             if self.mayIndexError or loc >= len(instring):
    959                 try:
--> 960                     loc,tokens = self.parseImpl( instring, preloc, doActions )
    961                 except IndexError:
    962                     raise ParseException( instring, len(instring), self.errmsg, self )

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
   2532         for e in self.exprs:
   2533             try:
-> 2534                 ret = e._parse( instring, loc, doActions )
   2535                 return ret
   2536             except ParseException as err:

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
    985             else:
    986                 for fn in self.parseAction:
--> 987                     tokens = fn( instring, tokensStart, retTokens )
    988                     if tokens is not None:
    989                         retTokens = ParseResults( tokens,

/home/kilik/.virtualenvs/ubiSimu3.3/lib/python3.3/site-packages/pyparsing.py in tmp(s, l, t)
    825             if numargs == 2:
    826                 def tmp(s,l,t):
--> 827                     return f(l,t)
    828             elif numargs == 1:
    829                 def tmp(s,l,t):

TypeError: postParse2() takes 2 positional arguments but 3 were given

Thank you

gromgull commented 10 years ago

The problems happen deep inside pyparsing, which version do you have installed?

Try up/down-grading it, it may be a pyparsing bug?

RomainEndelin commented 10 years ago

Indeed, it wasn't related to FuXi: I was running pyparsing 1.5.5, it works well after upgrading to 1.5.6.

Thanks :-)