commit: 5ea488e55517f8e43b4d9a03a346d44b9e7e2bdd Author: Michał Górny <mgorny <AT> gentoo <DOT> org> AuthorDate: Sat Nov 4 15:04:10 2023 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Sat Nov 4 18:03:05 2023 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5ea488e5
dev-python/yapsy: Backport py3.12 fixes Signed-off-by: Michał Górny <mgorny <AT> 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 000000000000..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 <ameya.v.si...@gmail.com> +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 <ameya.v.si...@gmail.com> +--- + 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)) ++ if (spec := importlib.util.spec_from_file_location(candidate_filepath.split('/')[-1], candidate_filepath + ".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) + return candidate_module + + def instanciateElementWithImportInfo(self, element, element_name, +diff --git a/yapsy/VersionedPluginManager.py b/yapsy/VersionedPluginManager.py +index 83ad4fd..686a52a 100644 +--- a/yapsy/VersionedPluginManager.py ++++ b/yapsy/VersionedPluginManager.py +@@ -12,7 +12,7 @@ API + """ + + +-from distutils.version import StrictVersion ++from packaging.version import Version + + from yapsy.PluginInfo import PluginInfo + from yapsy.IPlugin import IPlugin +@@ -27,11 +27,11 @@ class VersionedPluginInfo(PluginInfo): + + def __init__(self, plugin_name, plugin_path): + PluginInfo.__init__(self, plugin_name, plugin_path) +- # version number is now required to be a StrictVersion object +- self.version = StrictVersion("0.0") ++ # version number is now required to be a Version object ++ self.version = Version("0.0") + + def setVersion(self, vstring): +- self.version = StrictVersion(vstring) ++ self.version = Version(vstring) + + + class VersionedPluginManager(PluginManagerDecorator): +-- +2.42.0 + diff --git a/dev-python/yapsy/metadata.xml b/dev-python/yapsy/metadata.xml index 8c2be5a80f4c..8d49735ada95 100644 --- a/dev-python/yapsy/metadata.xml +++ b/dev-python/yapsy/metadata.xml @@ -6,7 +6,7 @@ <name>Python</name> </maintainer> <upstream> - <remote-id type="sourceforge">yapsy</remote-id> + <remote-id type="github">tibonihoo/yapsy</remote-id> <remote-id type="pypi">Yapsy</remote-id> </upstream> </pkgmetadata> diff --git a/dev-python/yapsy/yapsy-1.12.2-r2.ebuild b/dev-python/yapsy/yapsy-1.12.2-r2.ebuild new file mode 100644 index 000000000000..54be1b3e434d --- /dev/null +++ b/dev-python/yapsy/yapsy-1.12.2-r2.ebuild @@ -0,0 +1,34 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{10..12} ) + +inherit distutils-r1 + +MY_P="Yapsy-${PV}" +DESCRIPTION="A fat-free DIY Python plugin management toolkit" +HOMEPAGE=" + https://github.com/tibonihoo/yapsy/ + https://pypi.org/project/Yapsy/ +" +SRC_URI="mirror://sourceforge/yapsy/${MY_P}/${MY_P}.tar.gz" +S=${WORKDIR}/${MY_P} + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~riscv ~x86" + +RDEPEND=" + dev-python/packaging[${PYTHON_USEDEP}] +" + +distutils_enable_sphinx doc +distutils_enable_tests unittest + +PATCHES=( + # https://github.com/tibonihoo/yapsy/commit/29286320673f9e853559cf20aeb3456e541afbd4 + "${FILESDIR}/${P}-py312.patch" +)