Skip to content

Commit fa5ab81

Browse files
committed
[processing] scripts also can be feature-based algorithms
1 parent cd7bb16 commit fa5ab81

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

python/plugins/processing/script/ScriptEditorDialog.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,11 @@
3737
QFileDialog)
3838

3939
from qgis.gui import QgsGui, QgsErrorDialog
40-
from qgis.core import QgsApplication, QgsSettings, QgsError, QgsProcessingAlgorithm
40+
from qgis.core import (QgsApplication,
41+
QgsSettings,
42+
QgsError,
43+
QgsProcessingAlgorithm,
44+
QgsProcessingFeatureBasedAlgorithm)
4145
from qgis.utils import iface, OverrideCursor
4246

4347
from processing.gui.AlgorithmDialog import AlgorithmDialog
@@ -208,7 +212,7 @@ def runAlgorithm(self):
208212

209213
alg = None
210214
for k, v in d.items():
211-
if inspect.isclass(v) and issubclass(v, QgsProcessingAlgorithm) and v.__name__ != "QgsProcessingAlgorithm":
215+
if inspect.isclass(v) and issubclass(v, (QgsProcessingAlgorithm, QgsProcessingFeatureBasedAlgorithm)) and v.__name__ not in ("QgsProcessingAlgorithm", "QgsProcessingFeatureBasedAlgorithm"):
212216
alg = v()
213217
break
214218

python/plugins/processing/script/ScriptUtils.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@
3131

3232
from qgis.PyQt.QtCore import QCoreApplication
3333

34-
from qgis.core import QgsProcessingAlgorithm, QgsMessageLog
34+
from qgis.core import (QgsProcessingAlgorithm,
35+
QgsProcessingFeatureBasedAlgorithm,
36+
QgsMessageLog
37+
)
3538

3639
from processing.core.ProcessingConfig import ProcessingConfig
3740
from processing.tools.system import mkdir, userFolder
@@ -64,7 +67,7 @@ def loadAlgorithm(moduleName, filePath):
6467
spec.loader.exec_module(module)
6568
for x in dir(module):
6669
obj = getattr(module, x)
67-
if inspect.isclass(obj) and issubclass(obj, QgsProcessingAlgorithm) and obj.__name__ != "QgsProcessingAlgorithm":
70+
if inspect.isclass(obj) and issubclass(obj, (QgsProcessingAlgorithm, QgsProcessingFeatureBasedAlgorithm)) and obj.__name__ not in ("QgsProcessingAlgorithm", "QgsProcessingFeatureBasedAlgorithm"):
6871
scriptsRegistry[x] = filePath
6972
return obj()
7073
except ImportError as e:

0 commit comments

Comments
 (0)