git: dbd3ca6f415f - main - scikit-fusion: Unbreak by replacing import imp with importlib.util

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Sat, 11 Jul 2026 01:00:15 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=dbd3ca6f415fbdc44426530140ccd30e9a902884

commit dbd3ca6f415fbdc44426530140ccd30e9a902884
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2026-07-11 00:50:34 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2026-07-11 01:00:12 +0000

    scikit-fusion: Unbreak by replacing import imp with importlib.util
    
    Reported by:    fallout
---
 misc/py-scikit-fusion/Makefile             |  2 --
 misc/py-scikit-fusion/files/patch-setup.py | 27 +++++++++++++++++++++++++++
 2 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/misc/py-scikit-fusion/Makefile b/misc/py-scikit-fusion/Makefile
index d1737dfd88af..f5bbc52d36b1 100644
--- a/misc/py-scikit-fusion/Makefile
+++ b/misc/py-scikit-fusion/Makefile
@@ -12,8 +12,6 @@ WWW=		https://github.com/marinkaz/scikit-fusion
 LICENSE=	BSD2CLAUSE
 LICENSE_FILE=	${WRKSRC}/LICENSE.txt
 
-BROKEN=		not compatible with Python 3.12 (upstream last the project updated 6 years ago)
-
 RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}numpy>=1.16:math/py-numpy@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}joblib>=0.8.4:devel/py-joblib@${PY_FLAVOR} \
 		${PYTHON_PKGNAMEPREFIX}scipy>=0.12.0:science/py-scipy@${PY_FLAVOR}
diff --git a/misc/py-scikit-fusion/files/patch-setup.py b/misc/py-scikit-fusion/files/patch-setup.py
new file mode 100644
index 000000000000..b66fb2a9b71a
--- /dev/null
+++ b/misc/py-scikit-fusion/files/patch-setup.py
@@ -0,0 +1,27 @@
+-- Fix setup.py for Python 3.12 compatibility.
+-- The 'imp' module was removed in Python 3.12; replace imp.load_source
+-- with importlib.util.module_from_spec/spec_from_file_location.
+
+--- setup.py.orig	2023-04-10 00:00:00 UTC
++++ setup.py
+@@ -4,7 +4,7 @@ descr = """A Python module for data fusion built on top of factorized models."""
+ from setuptools import setup, find_packages
+ import subprocess
+ import os
+-import imp
++import importlib.util
+
+ DISTNAME = 'scikit-fusion'
+ DESCRIPTION = 'A Python module for data fusion built on top of factorized models.'
+@@ -69,8 +69,11 @@ def write_version_py(filename='skfusion/version.py'):
+     elif os.path.exists('skfusion/version.py'):
+         # must be a source distribution, use existing version file
+-        version = imp.load_source("skfusion.version", "skfusion/version.py")
+-        GIT_REVISION = version.git_revision
++        spec = importlib.util.spec_from_file_location("skfusion.version",
++                                                       "skfusion/version.py")
++        version = importlib.util.module_from_spec(spec)
++        spec.loader.exec_module(version)
++        GIT_REVISION = getattr(version, 'git_revision', "Unknown")
+     else:
+         GIT_REVISION = "Unknown"