void-packages/srcpkgs/quodlibet/patches/a8b6f6bb34864a6821174edbf78...

73 lines
2.5 KiB
Diff

From a8b6f6bb34864a6821174edbf7802b689e440db3 Mon Sep 17 00:00:00 2001
From: LuK1337 <priv.luk@gmail.com>
Date: Wed, 23 Aug 2023 17:13:23 +0200
Subject: [PATCH] Fix startup on Python 3.12
---
quodlibet/_import.py | 6 ++++++
quodlibet/util/config.py | 2 +-
quodlibet/util/importhelper.py | 6 +++---
3 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/quodlibet/_import.py b/quodlibet/_import.py
index 5e76b67295..22bd5e3140 100644
--- a/quodlibet/_import.py
+++ b/quodlibet/_import.py
@@ -8,6 +8,7 @@
import sys
import importlib
+import importlib.util
class RedirectImportHook:
@@ -31,6 +32,11 @@ def __init__(self, name, packages):
self._name = name
self._packages = packages
+ def find_spec(self, fullname, path, target=None):
+ loader = self.find_module(fullname, path)
+ if loader is not None:
+ return importlib.util.spec_from_loader(fullname, loader)
+
def find_module(self, fullname, path=None):
package = fullname.split(".")[0]
if package in self._packages:
diff --git a/quodlibet/util/config.py b/quodlibet/util/config.py
index 1c214ac0b4..f0688f9bf9 100644
--- a/quodlibet/util/config.py
+++ b/quodlibet/util/config.py
@@ -377,7 +377,7 @@ def read(self, filename):
with open(filename, "rb") as fileobj:
fileobj = StringIO(
fileobj.read().decode("utf-8", "surrogateescape"))
- self._config.readfp(fileobj, filename)
+ self._config.read_file(fileobj, filename)
except (IOError, OSError):
return
diff --git a/quodlibet/util/importhelper.py b/quodlibet/util/importhelper.py
index f14b11f4b6..c82ded5878 100644
--- a/quodlibet/util/importhelper.py
+++ b/quodlibet/util/importhelper.py
@@ -92,8 +92,8 @@ def load_module(name, package, path):
except KeyError:
pass
- loader = importlib.find_loader(fullname, [path])
- if loader is None:
+ spec = importlib.machinery.PathFinder.find_spec(fullname, [path])
+ if spec is None:
return
# modules need a parent package
@@ -101,7 +101,7 @@ def load_module(name, package, path):
spec = importlib.machinery.ModuleSpec(package, None, is_package=True)
sys.modules[package] = importlib.util.module_from_spec(spec)
- mod = loader.load_module(fullname)
+ mod = spec.loader.load_module(fullname)
# make it accessible from the parent, like __import__ does
vars(sys.modules[package])[name] = mod