Skip to content

Commit 699ba40

Browse files
Prevent accumulation of pseudo uploader observers
1 parent c7f1171 commit 699ba40

1 file changed

Lines changed: 11 additions & 0 deletions

File tree

  • src/aiidalab_qe/app/configuration/advanced/pseudos

src/aiidalab_qe/app/configuration/advanced/pseudos/pseudos.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from __future__ import annotations
22

3+
import typing as t
4+
35
import ipywidgets as ipw
46

57
from aiida import orm
@@ -55,6 +57,8 @@ def __init__(self, model: PseudosConfigurationSettingsModel, **kwargs):
5557
["ecutwfc", "ecutrho"],
5658
)
5759

60+
self._uploader_dictionary_observers: list[t.Callable] = []
61+
5862
def render(self):
5963
if self.rendered:
6064
return
@@ -223,6 +227,7 @@ def render(self):
223227
self.refresh(specific="widgets")
224228

225229
def _on_input_structure_change(self, _):
230+
self._unsubscribe_uploader_observations()
226231
self.refresh(specific="structure")
227232

228233
def _on_protocol_change(self, _):
@@ -259,6 +264,11 @@ def _update_ui(self):
259264
self._build_pseudos_list()
260265
self._model.update_family_header()
261266

267+
def _unsubscribe_uploader_observations(self):
268+
for observer in self._uploader_dictionary_observers:
269+
self._model.unobserve(observer, "dictionary")
270+
self._uploader_dictionary_observers.clear()
271+
262272
def _toggle_upload_warning(self):
263273
self._model.show_upload_warning = not self._model.family
264274

@@ -316,6 +326,7 @@ def synchronize_pseudo(
316326
synchronize_pseudo,
317327
"dictionary",
318328
)
329+
self._uploader_dictionary_observers.append(synchronize_pseudo)
319330

320331
uploader = PseudoPotentialUploader(model=uploader_model)
321332
uploader.render()

0 commit comments

Comments
 (0)