Skip to content

Commit 03e40f7

Browse files
committedJun 5, 2017
[processing] Remove all remaining algorithm copies
Algorithms are no longer copied - just a single const instance of each algorithm is used
1 parent 8b4bf88 commit 03e40f7

19 files changed

+18
-94
lines changed
 

‎python/core/processing/qgsprocessingalgorithm.sip

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,6 @@ class QgsProcessingAlgorithm
110110
:rtype: QgsProcessingProvider
111111
%End
112112

113-
void setProvider( QgsProcessingProvider *provider );
114-
115113
QgsProcessingParameterDefinitions parameterDefinitions() const;
116114
%Docstring
117115
Returns an ordered list of parameter definitions utilized by the algorithm.

‎python/plugins/processing/algs/gdal/GdalAlgorithm.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,12 +92,11 @@ def shortHelp(self):
9292
'''.format(self.commandName(), url))
9393

9494
def commandName(self):
95-
alg = self.getCopy()
96-
for output in alg.outputs:
95+
for output in self.outputs:
9796
output.setValue("dummy")
98-
for param in alg.parameters:
97+
for param in self.parameters:
9998
param.setValue("1")
100-
name = alg.getConsoleCommands()[0]
99+
name = self.getConsoleCommands()[0]
101100
if name.endswith(".py"):
102101
name = name[:-3]
103102
return name

‎python/plugins/processing/algs/grass7/Grass7Algorithm.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,6 @@ def __init__(self, descriptionfile):
9797
except ImportError:
9898
self.module = None
9999

100-
def getCopy(self):
101-
return self
102-
103100
def name(self):
104101
return self._name
105102

‎python/plugins/processing/algs/saga/SagaAlgorithm.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,6 @@ def __init__(self, descriptionfile):
7878
self._display_name = ''
7979
self._group = ''
8080

81-
def getCopy(self):
82-
return self
83-
8481
def icon(self):
8582
if self._icon is None:
8683
self._icon = QIcon(os.path.join(pluginPath, 'images', 'saga.png'))

‎python/plugins/processing/core/GeoAlgorithm.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -74,15 +74,6 @@ def __init__(self):
7474

7575
self.defineCharacteristics()
7676

77-
def getCopy(self):
78-
"""Returns a new instance of this algorithm, ready to be used
79-
for being executed.
80-
"""
81-
newone = self
82-
newone.parameters = copy.deepcopy(self.parameters)
83-
newone.outputs = copy.deepcopy(self.outputs)
84-
return newone
85-
8677
# methods to overwrite when creating a custom geoalgorithm
8778

8879
def _formatHelp(self, text):

‎python/plugins/processing/core/Processing.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,6 @@ def runAlgorithm(algOrName, onFinish, *args, **kwargs):
130130
QgsMessageLog.logMessage(Processing.tr('Error: Algorithm {0} not found\n').format(algOrName),
131131
Processing.tr("Processing"))
132132
return
133-
# hack - remove when getCopy is removed
134-
provider = alg.provider()
135-
alg = alg.getCopy()
136-
#hack pt2
137-
alg.setProvider(provider)
138133

139134
if len(args) == 1 and isinstance(args[0], dict):
140135
# Set params by name and try to run the alg even if not all parameter values are provided,

‎python/plugins/processing/gui/BatchAlgorithmDialog.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,7 @@ def accept(self):
7272
self.canceled = False
7373

7474
for row in range(self.mainWidget.tblParameters.rowCount()):
75-
alg = self.alg.getCopy()
76-
# hack - remove when getCopy is removed
77-
alg.setProvider(self.alg.provider())
75+
alg = self.alg
7876
col = 0
7977
for param in alg.parameters:
8078
if param.hidden:

‎python/plugins/processing/gui/BatchPanel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ def save(self):
182182
algParams = {}
183183
algOutputs = {}
184184
col = 0
185-
alg = self.alg.getCopy()
185+
alg = self.alg
186186
for param in alg.parameters:
187187
if param.hidden:
188188
continue

‎python/plugins/processing/gui/EditRenderingStylesDialog.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def __init__(self, alg):
4848
super(EditRenderingStylesDialog, self).__init__(None)
4949
self.setupUi(self)
5050

51-
self.alg = alg.getCopy()
51+
self.alg = alg
5252

5353
self.tblStyles.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
5454
self.setWindowTitle(self.alg.displayName())

‎python/plugins/processing/gui/ProcessingToolbox.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -246,11 +246,6 @@ def executeAlgorithmAsBatchProcess(self):
246246
item = self.algorithmTree.currentItem()
247247
if isinstance(item, TreeAlgorithmItem):
248248
alg = QgsApplication.processingRegistry().algorithmById(item.alg.id())
249-
#hack - remove when getCopy is removed
250-
provider = alg.provider()
251-
alg = alg.getCopy()
252-
#hack pt 2
253-
alg.setProvider(provider)
254249
dlg = BatchAlgorithmDialog(alg)
255250
dlg.show()
256251
dlg.exec_()
@@ -270,11 +265,6 @@ def executeAlgorithm(self):
270265
dlg.exec_()
271266
return
272267

273-
# temporary hack - TODO remove this getCopy when parameters are moved from algorithm
274-
provider = alg.provider()
275-
alg = alg.getCopy()
276-
alg.setProvider(provider)
277-
278268
if (alg.countVisibleParameters() + alg.getVisibleOutputsCount()) > 0:
279269
dlg = alg.getCustomParametersDialog()
280270
if not dlg:

‎python/plugins/processing/gui/menus.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -203,12 +203,6 @@ def _executeAlgorithm(alg):
203203
dlg.exec_()
204204
return
205205

206-
# hack - remove when getCopy is removed
207-
provider = alg.provider()
208-
alg = alg.getCopy()
209-
#hack pt 2
210-
alg.setProvider(provider)
211-
212206
context = dataobjects.createContext()
213207
if (alg.countVisibleParameters() + alg.getVisibleOutputsCount()) > 0:
214208
dlg = alg.getCustomParametersDialog()

‎python/plugins/processing/modeler/EditModelAction.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,7 @@ def isEnabled(self):
4040
return isinstance(self.itemData, ModelerAlgorithm)
4141

4242
def execute(self):
43-
alg = self.itemData.getCopy()
44-
#hack - remove when getCopy is removed
45-
alg.setProvider(self.itemData.provider())
43+
alg = self.itemData
4644
dlg = ModelerDialog(alg)
4745
dlg.update_model.connect(self.updateModel)
4846
dlg.show()

‎python/plugins/processing/modeler/ModelerAlgorithm.py

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -225,21 +225,6 @@ class ModelerAlgorithm(GeoAlgorithm):
225225

226226
CANVAS_SIZE = 4000
227227

228-
def getCopy(self):
229-
newone = ModelerAlgorithm()
230-
231-
newone.algs = {}
232-
for algname, alg in self.algs.items():
233-
newone.algs[algname] = Algorithm()
234-
newone.algs[algname].__dict__.update(copy.deepcopy(alg.todict()))
235-
newone.inputs = copy.deepcopy(self.inputs)
236-
newone.defineCharacteristics()
237-
newone._name = self._name
238-
newone._group = self._group
239-
newone.descriptionFile = self.descriptionFile
240-
newone.helpContent = copy.deepcopy(self.helpContent)
241-
return newone
242-
243228
def __init__(self):
244229
self._name = self.tr('Model', 'ModelerAlgorithm')
245230
# The dialog where this model is being edited

‎python/plugins/processing/modeler/ModelerDialog.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ def _dropEvent(event):
112112
else:
113113
alg = QgsApplication.processingRegistry().algorithmById(text)
114114
if alg is not None:
115-
self._addAlgorithm(alg.getCopy(), event.pos())
115+
self._addAlgorithm(alg, event.pos())
116116
event.accept()
117117
else:
118118
event.ignore()
@@ -269,7 +269,7 @@ def closeEvent(self, evt):
269269
evt.accept()
270270

271271
def editHelp(self):
272-
alg = self.alg.getCopy()
272+
alg = self.alg
273273
dlg = HelpEditionDialog(alg)
274274
dlg.exec_()
275275
if dlg.descriptions:
@@ -281,12 +281,7 @@ def runModel(self):
281281
self.bar.pushMessage("", "Model doesn't contain any algorithm and/or parameter and can't be executed", level=QgsMessageBar.WARNING, duration=5)
282282
return
283283

284-
# hack - remove when above getCopy is removed
285-
provider = self.alg.provider()
286-
alg = self.alg.getCopy()
287-
# hack pt 2
288-
alg.setProvider(provider)
289-
dlg = AlgorithmDialog(alg)
284+
dlg = AlgorithmDialog(self.alg)
290285
dlg.exec_()
291286

292287
def save(self):
@@ -554,7 +549,7 @@ def addAlgorithm(self):
554549
item = self.algorithmTree.currentItem()
555550
if isinstance(item, TreeAlgorithmItem):
556551
alg = QgsApplication.processingRegistry().algorithmById(item.alg.id())
557-
self._addAlgorithm(alg.getCopy())
552+
self._addAlgorithm(alg)
558553

559554
def _addAlgorithm(self, alg, pos=None):
560555
dlg = alg.getCustomModelerParametersDialog(self.alg)

‎python/plugins/processing/preconfigured/NewPreconfiguredAlgorithmAction.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,6 @@ def isEnabled(self):
4242
not isinstance(self.itemData, PreconfiguredAlgorithm))
4343

4444
def execute(self):
45-
alg = self.itemData.getCopy() # make copy so we do not taint the original one in the dialog
45+
alg = self.itemData
4646
dlg = PreconfiguredAlgorithmDialog(alg, self.toolbox)
4747
dlg.exec_()

‎python/plugins/processing/preconfigured/PreconfiguredAlgorithm.py

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,19 +55,12 @@ def name(self):
5555
def flags(self):
5656
return QgsProcessingAlgorithm.FlagHideFromModeler
5757

58-
def getCopy(self):
59-
newone = self
60-
newone.outputs = []
61-
newone._name = self._name
62-
newone._group = self._group
63-
return newone
64-
6558
def defineCharacteristics(self):
6659
self._name = self.description["name"]
6760
self._group = self.description["group"]
6861

6962
def execute(self, context=None, feedback=None, model=None):
70-
self.alg = QgsApplication.processingRegistry().algorithmById(self.description["algname"]).getCopy()
63+
self.alg = QgsApplication.processingRegistry().algorithmById(self.description["algname"])
7164
for name, value in list(self.description["parameters"].items()):
7265
self.alg.setParameterValue(name, value)
7366
for name, value in list(self.description["outputs"].items()):

‎python/plugins/processing/script/ScriptAlgorithm.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,6 @@ def __init__(self, descriptionFile, script=None):
7272
if descriptionFile is not None:
7373
self.defineCharacteristicsFromFile()
7474

75-
def getCopy(self):
76-
newone = self
77-
return newone
78-
7975
def icon(self):
8076
return self._icon
8177

‎python/plugins/processing/tools/general.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ def algorithmHelp(id):
6363
"""
6464
alg = QgsApplication.processingRegistry().algorithmById(id)
6565
if alg is not None:
66-
alg = alg.getCopy()
6766
print(str(alg))
6867
algorithmOptions(id)
6968
else:

‎src/core/processing/qgsprocessingalgorithm.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -122,12 +122,6 @@ class CORE_EXPORT QgsProcessingAlgorithm
122122
*/
123123
QgsProcessingProvider *provider() const;
124124

125-
/**
126-
* Associates this algorithm with its provider. No transfer of ownership is involved.
127-
*/
128-
//TEMPORARY - remove when algorithms are no longer copied in python code
129-
void setProvider( QgsProcessingProvider *provider );
130-
131125
/**
132126
* Returns an ordered list of parameter definitions utilized by the algorithm.
133127
* \see addParameter()
@@ -282,6 +276,11 @@ class CORE_EXPORT QgsProcessingAlgorithm
282276
QgsProcessingProvider *mProvider = nullptr;
283277
QgsProcessingParameterDefinitions mParameters;
284278

279+
/**
280+
* Associates this algorithm with its provider. No transfer of ownership is involved.
281+
*/
282+
void setProvider( QgsProcessingProvider *provider );
283+
285284
// friend class to access setProvider() - we do not want this public!
286285
friend class QgsProcessingProvider;
287286
friend class TestQgsProcessing;

0 commit comments

Comments
 (0)
Please sign in to comment.