Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Factory:Rebuild
python-Yapsy
replace-deprecated-apis.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File replace-deprecated-apis.patch of Package python-Yapsy
From 29286320673f9e853559cf20aeb3456e541afbd4 Mon Sep 17 00:00:00 2001 From: Ameya Vikram Singh <ameya.v.singh@gmail.com> Date: Mon, 6 Feb 2023 13:31:23 +0530 Subject: [PATCH 1/2] 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.singh@gmail.com> --- package/test/test_PluginInfo.py | 3 ++- package/yapsy/PluginInfo.py | 6 +++--- package/yapsy/PluginManager.py | 17 ++++++++++------- package/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 @@ from yapsy.PluginInfo import PluginInfo +from packaging.version import Version class PluginInfoTest(unittest.TestCase): @@ -20,7 +21,7 @@ def testDefaultValuesAndAccessors(self): 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 @@ """ from yapsy.compat import ConfigParser -from distutils.version import StrictVersion +from packaging.version import Version class PluginInfo(object): @@ -105,7 +105,7 @@ def __setPath(self,path): 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 @@ def setVersion(self, vstring): 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 @@ 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 @@ def _importModule(plugin_module_name, candidate_filepath): .. 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 @@ """ -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): From 6be89ef3ae923fc344579175f886b9967b834c88 Mon Sep 17 00:00:00 2001 From: Ameya Vikram Singh <ameya.v.singh@gmail.com> Date: Sat, 18 Mar 2023 10:43:24 +0530 Subject: [PATCH 2/2] Simplify implementation based on the PR comments --- package/yapsy/PluginManager.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yapsy/PluginManager.py b/yapsy/PluginManager.py index b72de93..9b82187 100644 --- a/yapsy/PluginManager.py +++ b/yapsy/PluginManager.py @@ -575,16 +575,16 @@ def _importModule(plugin_module_name, candidate_filepath): """ # use imp to correctly load the plugin as a module candidate_module = None + filepath_base = candidate_filepath.split('/')[-1] if os.path.isdir(candidate_filepath): - 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) + location = candidate_filepath + '/__init__.py' else: - 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) + location = candidate_filepath + '.py' + + if (spec := importlib.util.spec_from_file_location(filepath_base, location)): + 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,
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor