summaryrefslogtreecommitdiff
path: root/dev-python/yapsy/files/yapsy-1.12.2-py312.patch
blob: 6842a495af2d4ad85ecdc3c52a1694fc8ad03c39 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
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] 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>
---
 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