Is this unoconv issue a regression in libreoffice?

At the day of this writing I have upgraded libreoffice 25.8.4 → 26.2.0.

Version: 26.2.0.3 (X86_64)
Build ID: 620(Build:3)
CPU threads: 2; OS: Linux 6.18; UI render: default; VCL: gtk3
Locale: en-US (en_US.UTF-8); UI: en-US
26.2.0-1
Calc: threaded

unoconv, which is a separate Python executable, seemed to be working well up to 25.8.4. With 26.2.0, it output

    $ unoconv --format txt --stdout whatever.odt
    Traceback (most recent call last):
      File "/usr/bin/unoconv", line 1436, in <module>
        main()
        ~~~~^^
      File "/usr/bin/unoconv", line 1352, in main
        convertor.convert(inputfn)
        ~~~~~~~~~~~~~~~~~^^^^^^^^^
      File "/usr/bin/unoconv", line 1003, in convert
        inputurl = unohelper.absolutize(self.cwd, unohelper.systemPathToFileUrl(inputfn))
                   ^^^^^^^^^^^^^^^^^^^^
    AttributeError: module 'unohelper' has no attribute 'absolutize'

Quoting Universal Office Converter - Office document conversion# Troubleshooting instructions

try unoconv with a different minor or major LibreOffice version to test whether it is a regression in LibreOffice

Is this a regression in LibreOffice? Is it a known issue?

$ diff libreoffice25.8/program/unohelper.py libreoffice26.2/program/unohelper.py
186,189d185
< def absolutize( path, relativeUrl ):
< “returns an absolute file url from the given urls”
< return pyuno.absolutize( path, relativeUrl )
<

reveals that absolutize has been removed from unohelper.py and that the old version calls absolutize in pyuno.so, which itself has been modified too.

After restoring the function in the python module, everything seems to be working again. I don’t know why it has been removed. Mind that 26.2 is not finished yet.

https://opengrok.libreoffice.org/history/core/pyuno/source/module/unohelper.py

Drop unohelper.absolutize, and use uno.absolutize to avoid duplication

Deprecate unoconv · unoconv/unoconv@36f1435 · GitHub

… Please switch to Unoserver

Looking at it now, with your question in view, yes it is.

No. If you want it fixed, please file a bug report (and CC me there). The duplicate function seems to be part of the API (sigh), so I would need to revert its removal.

If you want it fixed, please file a bug report (and CC me there).

Summary of my post: I am not filing a bug at this time. Instead, I am going to try unoserver, and post again.

If you want it fixed

Now I understand the libreoffice project, or some of its developers, had in mind to

… Please switch to Unoserver

In other words, switching to unoserver should give a unoconv like solution. I don’t want it just fixed. I want a solution which integrates the past and the future. A solution which will not make me, as a user, turn daily work aside for a long time in order to learn something new; which can also turns out buggy and not stable. And at the same time I want libreoffice to keep evolving. Therefore, I have decided to postpone filing a bug for a while. Instead, I will try to use unoserver for a while.
A short list of upsides and downsides for each of unoconv and unoserver I can come up with, with no particular order, is

  • I am used to unoconv.
  • For a long time, unoconv seems to have a glitch that at its 1st run, it throws some python error about distutils, if I remember correctly, and exits. But its consequent runs works mostly as expected. It has, or had, another glitch that sometimes it succeeds, but also prints a message about some string error. I have not reported neither of these glitches. It could be someone else did. I am also not sure the string issue is a unoconv bug and not libreoffice bug. And the whole string issue might have been fixed by now. I can not tell.
  • With keeping unoconv, there is the problem of maintaining duplication of unohelper.absolutize, and uno.absolutize.

unoconv github page declares unconv to be deprecated while still stating unoserver does not have all unoconv features. unserver github page has some technical background and a comparison with unoconv.
unoconv · PyPI seems to have much more details about `unoconv’.

Bottom line: I will try unoserver and post again.