From 34c62a7b0def481020e152389698f621ac28d298 Mon Sep 17 00:00:00 2001 From: Hmkz0x00 Date: Thu, 13 Aug 2026 15:33:55 +0530 Subject: [PATCH] Make the renderers plugin directory a package The pyinstaller specs gather plugin modules two different ways. The .py files are shipped verbatim by collect_data_files(include_py_files=True), while collect_submodules() supplies the hiddenimports that pyinstaller actually analyses for dependencies. The first walks the filesystem, the second walks pkgutil, and pkgutil skips a directory with no __init__.py. volatility3/framework/plugins/renderers has been such a directory since the arrow and parquet renderers moved into it, so parquet_renderer.py was copied into the binary but never analysed, and the pyarrow it imports was left out. The frozen build still advertised the arrow and parquet renderers, because the framework finds them at runtime with os.walk, and then died with an unhandled RuntimeError when either was selected. Adding the __init__.py makes pkgutil descend into the directory, which is all collect_submodules needs, and matches every other plugin subpackage. Both specs use the same collect_submodules line, so neither needs editing. --- volatility3/framework/plugins/renderers/__init__.py | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 volatility3/framework/plugins/renderers/__init__.py diff --git a/volatility3/framework/plugins/renderers/__init__.py b/volatility3/framework/plugins/renderers/__init__.py new file mode 100644 index 000000000..f9099056b --- /dev/null +++ b/volatility3/framework/plugins/renderers/__init__.py @@ -0,0 +1,8 @@ +# This file is Copyright 2025 Volatility Foundation and licensed under the Volatility Software License 1.0 +# which is available at https://www.volatilityfoundation.org/license/vsl-v1.0 +# +"""All core renderer plugins. + +These modules should only be imported from volatility3.plugins NOT +volatility3.framework.plugins +"""