Selur's Little Message Board
current status of vapoursynth/havsfunc in Arch Linux - Printable Version

+- Selur's Little Message Board (https://forum.selur.net)
+-- Forum: Talk, Talk, Talk (https://forum.selur.net/forum-5.html)
+--- Forum: A/V Talk (https://forum.selur.net/forum-6.html)
+--- Thread: current status of vapoursynth/havsfunc in Arch Linux (/thread-4232.html)



current status of vapoursynth/havsfunc in Arch Linux - tda - 11.10.2025

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:

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/vapoursynth-plugin-havsfunc-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/HomeOfVapourSynthEvolution/havsfunc/issues/95


RE: current status of vapoursynth/havsfunc in Arch Linux - Selur - 11.10.2025

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


RE: current status of vapoursynth/havsfunc in Arch Linux - Selur - 11.10.2025

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

Looking at vsdenoise:
https://github.com/Jaded-Encoding-Thaumaturgy/vs-denoise/blob/b37bdc3d3b38e11c840add5968dc666818a084b1/vsdenoise/bm3d.py#L561
it seems like BM3D is defined in bm3d.py
and
the vsdenoise/__init__.py
https://github.com/Jaded-Encoding-Thaumaturgy/vs-denoise/blob/b37bdc3d3b38e11c840add5968dc666818a084b1/vsdenoise/__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/HomeOfVapourSynthEvolution/havsfunc?tab=readme-ov-file only mentions vs-jetpack, and looking at:
https://github.com/Jaded-Encoding-Thaumaturgy/vs-jetpack/blob/main/vsdenoise/__init__.py
and seeing that it calls "from .blockmatch import *" and
https://github.com/Jaded-Encoding-Thaumaturgy/vs-jetpack/blob/4c322a663f740e811e151f3547f170d788272bfc/vsdenoise/blockmatch.py#L36C13-L36C17
defines
__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


RE: current status of vapoursynth/havsfunc in Arch Linux - tda - 12.10.2025

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/vapoursynth-plugin-havsfunc-git?all_deps=1#pkgdeps


RE: current status of vapoursynth/havsfunc in Arch Linux - Selur - 12.10.2025

Then in havsfunc, instead of BM3D ''bm3d' should be included in havsfunc.
from vsdenoise import BM3D, nl_means, prefilter_to_full_range
should be:
from vsdenoise import bm3d, nl_means, prefilter_to_full_range

Cu Selur


RE: current status of vapoursynth/havsfunc in Arch Linux - tda - 13.10.2025

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

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)



RE: current status of vapoursynth/havsfunc in Arch Linux - Selur - 13.10.2025

Judging by:
https://github.com/HomeOfVapourSynthEvolution/havsfunc/blob/master/havsfunc/havsfunc.py#L330C53-L330C58
and
https://github.com/Jaded-Encoding-Thaumaturgy/vs-jetpack/blob/29d77c00650d425c52b39d8e726c9768cc120ba5/vsexprtools/exprop.py#L695
you probably need to replace every occurrence of 'complexpr_available' with 'ExprOp'.


Cu Selur


RE: current status of vapoursynth/havsfunc in Arch Linux - tda - 13.10.2025

Thanks, that seems to have fixed it!