Selur's Little Message Board

Full Version: current status of vapoursynth/havsfunc in Arch Linux
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I am wondering if anyone knows of how to get havsfunc working on Arch Linux. I have successfully used it for a couple years, but the vapoursynth-plugin-havsfunc-git package no longer works. When running a vpy script, I get this error:

Code:
ImportError: cannot import name 'BM3D' from 'vsdenoise' (/usr/lib/python3.13/site-packages/vsdenoise/__init__.py). Did you mean: 'bm3d'?

This exact error has been mentioned in the comments of the AUR package webpage in June/July, but it has not been addressed:
https://aur.archlinux.org/packages/vapou...vsfunc-git

This exact error has also been mentioned as an issue on the havsfunc Github page below in June (with 7 likes), but it has not been addressed:
https://github.com/HomeOfVapourSynthEvol.../issues/95
Hybrid only does not use havsfunc at all.
I removed the last reliances to havsfunc in February iirc.
Hybrid uses these scripts: https://github.com/Selur/VapoursynthScriptsInHybrid/

=> moving to 'A/V Talk' since it's not related to Hybrid.

Cu Selur
Here are my 2 cents about the problem. (untested)

Looking at vsdenoise:
https://github.com/Jaded-Encoding-Thauma...3d.py#L561
it seems like BM3D is defined in bm3d.py
and
the vsdenoise/__init__.py
https://github.com/Jaded-Encoding-Thauma..._init__.py
does include:
"from .bm3d import *"

=>
Is vsdenoise installed ? (pip show vsdenoise)
Does it contain 'from .bm3d import *' ?
(grep -A3 'from .bm3d' /usr/lib/python3.13/site-packages/vsdenoise/__init__.py)


Hmm,.. seeing that https://github.com/HomeOfVapourSynthEvol...me-ov-file only mentions vs-jetpack, and looking at:
https://github.com/Jaded-Encoding-Thauma..._init__.py
and seeing that it calls "from .blockmatch import *" and
https://github.com/Jaded-Encoding-Thauma...C13-L36C17
defines
Code:
__all__ = ["bm3d", "wnnm"]

a. you should deinstall vsdenoise and install vs-jetpack
b. instead of BM3D , 'bm3d' probably needs to be includes in havsfunc.

Cu Selur
Thanks for the response. The vapoursynth-plugin-havsfunc-git package has vapoursynth-plugin-vsjetpack-git and vapoursynth-plugin-bm3d-git as dependencies. There are packages called vapoursnyth-plugin-vsdenoise and vapoursynth-plugin-vsdenoise-git, but those conflict with the vapoursynth-plugin-vsjetpack-git package.

https://aur.archlinux.org/packages/vapou...=1#pkgdeps
Then in havsfunc, instead of BM3D ''bm3d' should be included in havsfunc.
Code:
from vsdenoise import BM3D, nl_means, prefilter_to_full_range
should be:
Code:
from vsdenoise import bm3d, nl_means, prefilter_to_full_range

Cu Selur
Thanks, I tried that and now I'm getting this error:

Code:
Script evaluation failed:
Python exception: cannot import name 'complexpr_available' from 'vsexprtools' (/usr/lib/python3.13/site-packages/vsexprtools/__init__.py)

Traceback (most recent call last):
  File "src/cython/vapoursynth.pyx", line 3378, in vapoursynth._vpy_evaluate
  File "src/cython/vapoursynth.pyx", line 3379, in vapoursynth._vpy_evaluate
  File "temp.vpy", line 2, in <module>
    import havsfunc as haf
  File "/usr/lib/python3.13/site-packages/havsfunc/__init__.py", line 1, in <module>
    from .havsfunc import *
  File "/usr/lib/python3.13/site-packages/havsfunc/havsfunc.py", line 8, in <module>
    from vsexprtools import complexpr_available, norm_expr
ImportError: cannot import name 'complexpr_available' from 'vsexprtools' (/usr/lib/python3.13/site-packages/vsexprtools/__init__.py)
Judging by:
https://github.com/HomeOfVapourSynthEvol...53-L330C58
and
https://github.com/Jaded-Encoding-Thauma...op.py#L695
you probably need to replace every occurrence of 'complexpr_available' with 'ExprOp'.


Cu Selur
Thanks, that seems to have fixed it!