Larry Martell wrote: > I have some code that is using the pyke package > (https://sourceforge.net/projects/pyke/). That project seems fairly > dead, so asking here. > > There is a pyke function that returns a context manager with an > iterable map. In py2.7 I did this: > > from pyke import knowledge_engine > vasculopathy_engine = > knowledge_engine.engine((rule_base_source_folder, > (compiled_rule_base_folder))) > with vasculopathy_engine.prove_goal(...) as presentationGen: > for vals, plan in presentationGen: > > But in py3 that fails with: AttributeError: module 'itertools' has no > attribute 'imap'
In Python 3 the map() builtin is "lazy", so you can use that instead. > I tried converting presentationGen to a list but get the same error. > > How can I make this work in py3? The problem is in the project rather than in your code -- you have to port pyke to Python 3 before you can use it. If you want to go that route you may give the 2to3 tool a try: $ cat demo.py import itertools for i in itertools.imap(abs, [-1, 1]): print i $ 2to3 -w demo.py [...] $ cat demo.py import itertools for i in map(abs, [-1, 1]): print(i) $ -- https://mail.python.org/mailman/listinfo/python-list