commit: 5ea488e55517f8e43b4d9a03a346d44b9e7e2bdd
Author: Michał Górny gentoo org>
AuthorDate: Sat Nov 4 15:04:10 2023 +
Commit: Michał Górny gentoo org>
CommitDate: Sat Nov 4 18:03:05 2023 +
URL:https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5ea488e5
dev-python/yapsy: Backport py3.12 fixes
Signed-off-by: Michał Górny gentoo.org>
dev-python/yapsy/files/yapsy-1.12.2-py312.patch | 138
dev-python/yapsy/metadata.xml | 2 +-
dev-python/yapsy/yapsy-1.12.2-r2.ebuild | 34 ++
3 files changed, 173 insertions(+), 1 deletion(-)
diff --git a/dev-python/yapsy/files/yapsy-1.12.2-py312.patch
b/dev-python/yapsy/files/yapsy-1.12.2-py312.patch
new file mode 100644
index ..6842a495af2d
--- /dev/null
+++ b/dev-python/yapsy/files/yapsy-1.12.2-py312.patch
@@ -0,0 +1,138 @@
+From 29286320673f9e853559cf20aeb3456e541afbd4 Mon Sep 17 00:00:00 2001
+From: Ameya Vikram Singh
+Date: Mon, 6 Feb 2023 13:31:23 +0530
+Subject: [PATCH] Remove Deprecated API's
+
+* Replaced packaging.version instead of distutils.version
+* Replaced imp module to importlib
+
+**Note:** Probably Deprecates Python 2.7 supports, and maybe some initial
versions of Python 3.x.
+
+Signed-off-by: Ameya Vikram Singh
+---
+ test/test_PluginInfo.py | 3 ++-
+ yapsy/PluginInfo.py | 6 +++---
+ yapsy/PluginManager.py | 17 ++---
+ yapsy/VersionedPluginManager.py | 8
+ 4 files changed, 19 insertions(+), 15 deletions(-)
+
+diff --git a/test/test_PluginInfo.py b/test/test_PluginInfo.py
+index 0863671..29c736a 100644
+--- a/test/test_PluginInfo.py
b/test/test_PluginInfo.py
+@@ -6,6 +6,7 @@ import unittest
+
+
+ from yapsy.PluginInfo import PluginInfo
++from packaging.version import Version
+
+
+ class PluginInfoTest(unittest.TestCase):
+@@ -20,7 +21,7 @@ class PluginInfoTest(unittest.TestCase):
+ self.assertEqual(None,pi.plugin_object)
+ self.assertEqual([],pi.categories)
+ self.assertEqual(None,pi.error)
+- self.assertEqual("0.0",pi.version)
++ self.assertEqual(Version("0.0"),pi.version)
+ self.assertEqual("Unknown",pi.author)
+ self.assertEqual("Unknown",pi.copyright)
+ self.assertEqual("None",pi.website)
+diff --git a/yapsy/PluginInfo.py b/yapsy/PluginInfo.py
+index 69d220e..700374e 100644
+--- a/yapsy/PluginInfo.py
b/yapsy/PluginInfo.py
+@@ -12,7 +12,7 @@ API
+ """
+
+ from yapsy.compat import ConfigParser
+-from distutils.version import StrictVersion
++from packaging.version import Version
+
+
+ class PluginInfo(object):
+@@ -105,7 +105,7 @@ class PluginInfo(object):
+
+
+ def __getVersion(self):
+- return
StrictVersion(self.details.get("Documentation","Version"))
++ return Version(self.details.get("Documentation","Version"))
+
+ def setVersion(self, vstring):
+ """
+@@ -114,7 +114,7 @@ class PluginInfo(object):
+ Used by subclasses to provide different handling of the
+ version number.
+ """
+- if isinstance(vstring,StrictVersion):
++ if isinstance(vstring,Version):
+ vstring = str(vstring)
+ if not self.details.has_section("Documentation"):
+ self.details.add_section("Documentation")
+diff --git a/yapsy/PluginManager.py b/yapsy/PluginManager.py
+index 81a7c2b..b72de93 100644
+--- a/yapsy/PluginManager.py
b/yapsy/PluginManager.py
+@@ -128,10 +128,7 @@ API
+
+ import sys
+ import os
+-try:
+- import importlib.abc.Loader as imp
+-except ImportError:
+- import imp
++import importlib
+
+ from yapsy import log
+ from yapsy import NormalizePluginNameForModuleName
+@@ -577,11 +574,17 @@ class PluginManager(object):
+ .. note:: Isolated and provided to be reused, but not to be
reimplemented !
+ """
+ # use imp to correctly load the plugin as a module
++ candidate_module = None
+ if os.path.isdir(candidate_filepath):
+- candidate_module =
imp.load_module(plugin_module_name,None,candidate_filepath,("py","r",imp.PKG_DIRECTORY))
++ if (spec :=
importlib.util.spec_from_file_location(candidate_filepath.split('/')[-1],
candidate_filepath + "/__init__.py")) is not None:
++ candidate_module =
importlib.util.module_from_spec(spec)
++ sys.modules[plugin_module_name] =
candidate_module
++ spec.loader.exec_module(candidate_module)
+ else:
+- with open(candidate_filepath+".py","r") as plugin_file:
+- candidate_module =
imp.load_module(plugin_module_name,plugin_file,candidate_filepath+".py",("py","r",imp.PY_SOURCE))
++