Project

Profile

Help

Should print(result) in Python work where result = xpath_processor.evaluate()?

Added by Martin Honnen 10 months ago

I have managed to build the Python HE 1.2.0 module on Windows 10 64bit but I am struggling with some simple things like trying to output results.

For the sample Python program

import saxonc

with saxonc.PySaxonProcessor(license=False) as proc:
    print(proc.version)
    
    xpathProcessor = proc.new_xpath_processor()
    
    result = xpathProcessor.evaluate('(1, 2, 3, 4, 5)')
    
    print(result.item_at(0))
    
    print(result)

I get an output for the first print() call but then an error on the second

Traceback (most recent call last):
  File "C:\SomeFolder\saxonc-1.2-python\xpath-test4.py", line 12, in <module>
    print(result)
  File "saxonc.pyx", line 3257, in saxonc.PyXdmValue.__str__
    ustring = c_string.decode('UTF-8') if c_string is not NULL else None
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe0 in position 0: unexpected end of data

Is that expected?


Replies (8)

Please register to reply

RE: Should print(result) in Python work where result = xpath_processor.evaluate()? - Added by O'Neil Delpratt 10 months ago

Hi Martin,

Thanks for reporting this issue.

This looks like a bug to me. The PyXdmValue class should be converting itself to a serialised string but the str function is failing.

I will investigate this further.

RE: Should print(result) in Python work where result = xpath_processor.evaluate()? - Added by O'Neil Delpratt 10 months ago

This bug has now been resolved in the files mentioned in the bug issue #4352

RE: Should print(result) in Python work where result = xpath_processor.evaluate()? - Added by Martin Honnen 10 months ago

I am still getting the error, only with a slightly different line number:

Traceback (most recent call last):
  File ".\xpath-test4.py", line 12, in <module>
    print(result)
  File "saxonc.pyx", line 3260, in saxonc.PyXdmValue.__str__
    ustring = c_string.decode('UTF-8') if c_string is not NULL else None
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe0 in position 0: unexpected end of data

on the print(result) call.

RE: Should print(result) in Python work where result = xpath_processor.evaluate()? - Added by O'Neil Delpratt 10 months ago

Bug fixed. Changes made to the saxonc.pyx, XdmValue.h and XdmValue.cpp files.

RE: Should print(result) in Python work where result = xpath_processor.evaluate()? - Added by Martin Honnen 10 months ago

I have the Python code running on one machine but I had to update a lot of more files like https://dev.saxonica.com/repos/archive/opensource/latest9.9/hec/Saxon.C.API/SaxonProcessor.h or saxoncClasses.pxd before the saxon-setup.py build_ext -if worked , so thanks for all the fixes.

As it is a bit difficult keeping track of all the changes, are you planning a 1.2.1 release as soon as you have fixed the currently known issues?

RE: Should print(result) in Python work where result = xpath_processor.evaluate()? - Added by O'Neil Delpratt 10 months ago

I had hoped to get a release out this week but now hitting some memory issues with XdmValues, which is holding the release up. I am still investigating it.

RE: Should print(result) in Python work where result = xpath_processor.evaluate()? - Added by O'Neil Delpratt 10 months ago

Memory issue fixed. Now doing a full test. Therefore hopefully a release tomorrow.

    (1-8/8)

    Please register to reply