uvelichitel writes

Traceback (most recent call last): File "/usr/share/recoll/filters/rclpdf.py", line 386, in <module > rclexecm.main(proto, extract) File "/usr/share/recoll/filters/rclexecm.py", line 338, in main proto.mainloop(extract) File "/usr/share/recoll/filters/rclexecm.py", line 265, in mainloop self.processmessage(processor, params) File "/usr/share/recoll/filters/rclexecm.py", line 245, in processmessage self.answer(data, ipath, eof) File "/usr/share/recoll/filters/rclexecm.py", line 192, in answer for nm,value in self.fields.iteritems(): AttributeError: dict object has no attribute iteritems :2:internfile/mh_execm.cpp:89::MHExecMultiple: getline error :2:internfile/internfile.cpp:738::FileInterner::internfile: next_document error [/home/uvelichitel/Downloads/Books/GoFunctionsInAssembly.pdf] application/pdf :2:internfile/internfile.cpp:812::FileInterner: requested document does not exist

########### Reason: because of Python3 deprecate method iteritems() for dictionary type, just dict.items() can be used instead. Proposal to resolve: $recoll/filters/rclexecm.py:192 —  for nm,value in self.fields.iteritems(): ++ for nm,value in self.fields.items():

medoc writes

Recoll actually requires python 2 for some of the input filters to work (some libs are not compatible with python3, the one used to extract from excel files for example). As items() is less efficient than iteritems() in Python2, there is no way to write code which will be both efficient and correct in both versions. I’ll keep iteritems() for now, it will go whenever there is a final switch to Python3.

efermi writes

@medoc, does this affect content indexing, because I see the same error on pdf/epub files and none of them are searchable?

medoc writes

Yes this affects both indexing and preview, the same code is used to extract the data.

Are you running Arch ?

I’m asking, because, as far as I know, this is the only distribution to alias python to python3 (against python https://www.python.org/dev/peps/pep-0394/). The correct solution would probably to have a packaging script to fix the first line in the script from #!/usr/bin/python to #!/usr/bin/python2 on Arch.

medoc writes

Thinking a bit more about the issue, I am going to change the shebang lines to python2: there are important input handlers (e.g. rclxls) which will probably not be converted to python3 in the the foreseeable future (because of a lib dep), so this is probably the most robust approach.

The only risk would be that there are platforms around with python version 2 installed and no python2 command, but I think that the risk is small, and the workaround is in any case trivial.

This will only happen in a future release though, so it does not solve your immediate problem.

efermi writes

Yes I’m on manjaro which is arch based. Thank you for pinpointing the problem, I’m using [the trick with a symlink to python2](https://wiki.archlinux.org/index.php/python#Python_2) for now and will wait for the new version.