aiidalab / aiidalab-widgets-base

Reusable widgets for AiiDAlab applications
MIT License
7 stars 17 forks source link

Selection of Tigu computer crashes the create computer widget #355

Closed cpignedoli closed 1 year ago

cpignedoli commented 2 years ago

This error is from the create computer widget when selecting Tigu from the database

---------------------------------------------------------------------------
TraitError                                Traceback (most recent call last)
/opt/conda/lib/python3.8/site-packages/ipywidgets/widgets/widget.py in _handle_msg(self, msg)
    754                 if 'buffer_paths' in data:
    755                     _put_buffers(state, data['buffer_paths'], msg['buffers'])
--> 756                 self.set_state(state)
    757 
    758         # Handle a state request.

/opt/conda/lib/python3.8/site-packages/ipywidgets/widgets/widget.py in set_state(self, sync_data)
    623                     from_json = self.trait_metadata(name, 'from_json',
    624                                                     self._trait_from_json)
--> 625                     self.set_trait(name, from_json(sync_data[name], self))
    626 
    627     def send(self, content, buffers=None):

/opt/conda/lib/python3.8/contextlib.py in __exit__(self, type, value, traceback)
    118         if type is None:
    119             try:
--> 120                 next(self.gen)
    121             except StopIteration:
    122                 return False

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in hold_trait_notifications(self)
   1369                 for changes in cache.values():
   1370                     for change in changes:
-> 1371                         self.notify_change(change)
   1372 
   1373     def _notify_trait(self, name, old_value, new_value):

/opt/conda/lib/python3.8/site-packages/ipywidgets/widgets/widget.py in notify_change(self, change)
    684                 # Send new state to front-end
    685                 self.send_state(key=name)
--> 686         super(Widget, self).notify_change(change)
    687 
    688     def __repr__(self):

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in notify_change(self, change)
   1384     def notify_change(self, change):
   1385         """Notify observers of a change event"""
-> 1386         return self._notify_observers(change)
   1387 
   1388     def _notify_observers(self, event):

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in _notify_observers(self, event)
   1429                 c = getattr(self, c.name)
   1430 
-> 1431             c(event)
   1432 
   1433     def _add_notifiers(self, handler, name, type):

/opt/conda/lib/python3.8/site-packages/ipywidgets/widgets/widget_selection.py in _propagate_index(self, change)
    233             self.label = label
    234         if self.value is not value:
--> 235             self.value = value
    236 
    237     @validate('value')

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in __set__(self, obj, value)
    713             raise TraitError('The "%s" trait is read-only.' % self.name)
    714         else:
--> 715             self.set(obj, value)
    716 
    717     def _validate(self, obj, value):

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in set(self, obj, value)
    702             # we explicitly compare silent to True just in case the equality
    703             # comparison above returns something other than True/False
--> 704             obj._notify_trait(self.name, old_value, new_value)
    705 
    706     def __set__(self, obj, value):

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in _notify_trait(self, name, old_value, new_value)
   1372 
   1373     def _notify_trait(self, name, old_value, new_value):
-> 1374         self.notify_change(
   1375             Bunch(
   1376                 name=name,

/opt/conda/lib/python3.8/site-packages/ipywidgets/widgets/widget.py in notify_change(self, change)
    684                 # Send new state to front-end
    685                 self.send_state(key=name)
--> 686         super(Widget, self).notify_change(change)
    687 
    688     def __repr__(self):

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in notify_change(self, change)
   1384     def notify_change(self, change):
   1385         """Notify observers of a change event"""
-> 1386         return self._notify_observers(change)
   1387 
   1388     def _notify_observers(self, event):

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in _notify_observers(self, event)
   1429                 c = getattr(self, c.name)
   1430 
-> 1431             c(event)
   1432 
   1433     def _add_notifiers(self, handler, name, type):

~/.local/lib/python3.8/site-packages/aiidalab_widgets_base/databases.py in update_computers(self, _)
    281 
    282     def update_computers(self, _=None):
--> 283         self.computer.options = [
    284             key for key in self.database[self.domain.value].keys() if key != "default"
    285         ]

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in __set__(self, obj, value)
    713             raise TraitError('The "%s" trait is read-only.' % self.name)
    714         else:
--> 715             self.set(obj, value)
    716 
    717     def _validate(self, obj, value):

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in set(self, obj, value)
    702             # we explicitly compare silent to True just in case the equality
    703             # comparison above returns something other than True/False
--> 704             obj._notify_trait(self.name, old_value, new_value)
    705 
    706     def __set__(self, obj, value):

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in _notify_trait(self, name, old_value, new_value)
   1372 
   1373     def _notify_trait(self, name, old_value, new_value):
-> 1374         self.notify_change(
   1375             Bunch(
   1376                 name=name,

/opt/conda/lib/python3.8/site-packages/ipywidgets/widgets/widget.py in notify_change(self, change)
    684                 # Send new state to front-end
    685                 self.send_state(key=name)
--> 686         super(Widget, self).notify_change(change)
    687 
    688     def __repr__(self):

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in notify_change(self, change)
   1384     def notify_change(self, change):
   1385         """Notify observers of a change event"""
-> 1386         return self._notify_observers(change)
   1387 
   1388     def _notify_observers(self, event):

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in _notify_observers(self, event)
   1429                 c = getattr(self, c.name)
   1430 
-> 1431             c(event)
   1432 
   1433     def _add_notifiers(self, handler, name, type):

/opt/conda/lib/python3.8/site-packages/ipywidgets/widgets/widget_selection.py in _propagate_options(self, change)
    214                     self._notify_trait('index', 0, 0)
    215                 else:
--> 216                     self.index = 0
    217             else:
    218                 self.index = None

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in __set__(self, obj, value)
    713             raise TraitError('The "%s" trait is read-only.' % self.name)
    714         else:
--> 715             self.set(obj, value)
    716 
    717     def _validate(self, obj, value):

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in set(self, obj, value)
    702             # we explicitly compare silent to True just in case the equality
    703             # comparison above returns something other than True/False
--> 704             obj._notify_trait(self.name, old_value, new_value)
    705 
    706     def __set__(self, obj, value):

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in _notify_trait(self, name, old_value, new_value)
   1372 
   1373     def _notify_trait(self, name, old_value, new_value):
-> 1374         self.notify_change(
   1375             Bunch(
   1376                 name=name,

/opt/conda/lib/python3.8/site-packages/ipywidgets/widgets/widget.py in notify_change(self, change)
    684                 # Send new state to front-end
    685                 self.send_state(key=name)
--> 686         super(Widget, self).notify_change(change)
    687 
    688     def __repr__(self):

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in notify_change(self, change)
   1384     def notify_change(self, change):
   1385         """Notify observers of a change event"""
-> 1386         return self._notify_observers(change)
   1387 
   1388     def _notify_observers(self, event):

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in _notify_observers(self, event)
   1429                 c = getattr(self, c.name)
   1430 
-> 1431             c(event)
   1432 
   1433     def _add_notifiers(self, handler, name, type):

/opt/conda/lib/python3.8/site-packages/ipywidgets/widgets/widget_selection.py in _propagate_index(self, change)
    233             self.label = label
    234         if self.value is not value:
--> 235             self.value = value
    236 
    237     @validate('value')

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in __set__(self, obj, value)
    713             raise TraitError('The "%s" trait is read-only.' % self.name)
    714         else:
--> 715             self.set(obj, value)
    716 
    717     def _validate(self, obj, value):

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in set(self, obj, value)
    702             # we explicitly compare silent to True just in case the equality
    703             # comparison above returns something other than True/False
--> 704             obj._notify_trait(self.name, old_value, new_value)
    705 
    706     def __set__(self, obj, value):

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in _notify_trait(self, name, old_value, new_value)
   1372 
   1373     def _notify_trait(self, name, old_value, new_value):
-> 1374         self.notify_change(
   1375             Bunch(
   1376                 name=name,

/opt/conda/lib/python3.8/site-packages/ipywidgets/widgets/widget.py in notify_change(self, change)
    684                 # Send new state to front-end
    685                 self.send_state(key=name)
--> 686         super(Widget, self).notify_change(change)
    687 
    688     def __repr__(self):

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in notify_change(self, change)
   1384     def notify_change(self, change):
   1385         """Notify observers of a change event"""
-> 1386         return self._notify_observers(change)
   1387 
   1388     def _notify_observers(self, event):

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in _notify_observers(self, event)
   1429                 c = getattr(self, c.name)
   1430 
-> 1431             c(event)
   1432 
   1433     def _add_notifiers(self, handler, name, type):

~/.local/lib/python3.8/site-packages/aiidalab_widgets_base/databases.py in update_settings(self, _)
    298             computer_configure = computer_settings["computer-configure"]
    299             for setting in computer_configure:
--> 300                 self.set_trait(setting, computer_configure[setting])
    301 
    302     @observe("proxy_command")

/opt/conda/lib/python3.8/site-packages/traitlets/traitlets.py in set_trait(self, name, value)
   1605         cls = self.__class__
   1606         if not self.has_trait(name):
-> 1607             raise TraitError(f"Class {cls.__name__} does not have a trait named {name}")
   1608         else:
   1609             getattr(cls, name).set(self, value)

TraitError: Class ComputerDatabaseWidget does not have a trait named proxy_jump
yakutovicha commented 2 years ago

Tracked in https://github.com/nanotech-empa/aiidalab-empa-surfaces/issues/122