aiidalab / aiidalab/aiidalab-qe

Selecting JARVIS in the OPTIMADE client raises an error

Offen
#155 10 Kommentare 0 Reaktionen 1 zugewiesene Person Zugewiesen an @unkcpz Auf GitHub ansehen
bug dependencies/widgets-base
Vorherrschende Sprache
Python
Sterne
33
Forks
25
Ø Merge
6 Std. 7 Min.
Gemergte PRs (30 T.)
8

Beschreibung

**Describe the bug**

When trying to use the JARVIS database for selecting a structure, the app crashes with the following error:

Full Traceback

---------------------------------------------------------------------------

StopIteration Traceback (most recent call last)
/opt/conda/lib/python3.7/site-packages/ipywidgets/widgets/widget_selection.py in findvalue(array, value, compare)
136 try:
--> 137 return next(x for x in array if compare(x, value))
138 except StopIteration:

StopIteration:

During handling of the above exception, another exception occurred:

ValueError Traceback (most recent call last)
/opt/conda/lib/python3.7/site-packages/ipywidgets/widgets/widget_selection.py in _validate_value(self, proposal)
240 try:
--> 241 return findvalue(self._options_values, value, self.equals) if value is not None else None
242 except ValueError:

/opt/conda/lib/python3.7/site-packages/ipywidgets/widgets/widget_selection.py in findvalue(array, value, compare)
138 except StopIteration:
--> 139 raise ValueError('%r not in array'%value)
140

ValueError: 'id' not in array

During handling of the above exception, another exception occurred:

TraitError Traceback (most recent call last)
/opt/conda/lib/python3.7/site-packages/ipywidgets/widgets/widget.py in _handle_msg(self, msg)
674 if 'buffer_paths' in data:
675 _put_buffers(state, data['buffer_paths'], msg['buffers'])
--> 676 self.set_state(state)
677
678 # Handle a state request.

/opt/conda/lib/python3.7/site-packages/ipywidgets/widgets/widget.py in set_state(self, sync_data)
543 from_json = self.trait_metadata(name, 'from_json',
544 self._trait_from_json)
--> 545 self.set_trait(name, from_json(sync_data[name], self))
546
547 def send(self, content, buffers=None):

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

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in hold_trait_notifications(self)
1212 for changes in cache.values():
1213 for change in changes:
-> 1214 self.notify_change(change)
1215
1216 def _notify_trait(self, name, old_value, new_value):

/opt/conda/lib/python3.7/site-packages/ipywidgets/widgets/widget.py in notify_change(self, change)
604 # Send new state to front-end
605 self.send_state(key=name)
--> 606 super(Widget, self).notify_change(change)
607
608 def __repr__(self):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in notify_change(self, change)
1225 def notify_change(self, change):
1226 """Notify observers of a change event"""
-> 1227 return self._notify_observers(change)
1228
1229 def _notify_observers(self, event):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in _notify_observers(self, event)
1262 c = getattr(self, c.name)
1263
-> 1264 c(event)
1265
1266 def _add_notifiers(self, handler, name, type):

/opt/conda/lib/python3.7/site-packages/optimade_client/subwidgets/provider_database.py in _observe_providers(self, change)
191 self.show_child_dbs.display = "none"
192 try:
--> 193 self.child_dbs.index = 1
194 except IndexError:
195 pass

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in __set__(self, obj, value)
602 raise TraitError('The "%s" trait is read-only.' % self.name)
603 else:
--> 604 self.set(obj, value)
605
606 def _validate(self, obj, value):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in set(self, obj, value)
591 # we explicitly compare silent to True just in case the equality
592 # comparison above returns something other than True/False
--> 593 obj._notify_trait(self.name, old_value, new_value)
594
595 def __set__(self, obj, value):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in _notify_trait(self, name, old_value, new_value)
1220 new=new_value,
1221 owner=self,
-> 1222 type='change',
1223 ))
1224

/opt/conda/lib/python3.7/site-packages/ipywidgets/widgets/widget.py in notify_change(self, change)
604 # Send new state to front-end
605 self.send_state(key=name)
--> 606 super(Widget, self).notify_change(change)
607
608 def __repr__(self):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in notify_change(self, change)
1225 def notify_change(self, change):
1226 """Notify observers of a change event"""
-> 1227 return self._notify_observers(change)
1228
1229 def _notify_observers(self, event):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in _notify_observers(self, event)
1262 c = getattr(self, c.name)
1263
-> 1264 c(event)
1265
1266 def _add_notifiers(self, handler, name, type):

/opt/conda/lib/python3.7/site-packages/optimade_client/subwidgets/provider_database.py in _observe_child_dbs(self, change)
203 self.database = "", None
204 else:
--> 205 self.database = self.child_dbs._get_grouping_label_value(index)
206
207 @staticmethod

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in __set__(self, obj, value)
602 raise TraitError('The "%s" trait is read-only.' % self.name)
603 else:
--> 604 self.set(obj, value)
605
606 def _validate(self, obj, value):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in set(self, obj, value)
591 # we explicitly compare silent to True just in case the equality
592 # comparison above returns something other than True/False
--> 593 obj._notify_trait(self.name, old_value, new_value)
594
595 def __set__(self, obj, value):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in _notify_trait(self, name, old_value, new_value)
1220 new=new_value,
1221 owner=self,
-> 1222 type='change',
1223 ))
1224

/opt/conda/lib/python3.7/site-packages/ipywidgets/widgets/widget.py in notify_change(self, change)
604 # Send new state to front-end
605 self.send_state(key=name)
--> 606 super(Widget, self).notify_change(change)
607
608 def __repr__(self):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in notify_change(self, change)
1225 def notify_change(self, change):
1226 """Notify observers of a change event"""
-> 1227 return self._notify_observers(change)
1228
1229 def _notify_observers(self, event):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in _notify_observers(self, event)
1262 c = getattr(self, c.name)
1263
-> 1264 c(event)
1265
1266 def _add_notifiers(self, handler, name, type):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in _update(self, change)
359 with self._busy_updating():
360 setattr(self.target[0], self.target[1],
--> 361 self._transform(change.new))
362
363 def unlink(self):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in __set__(self, obj, value)
602 raise TraitError('The "%s" trait is read-only.' % self.name)
603 else:
--> 604 self.set(obj, value)
605
606 def _validate(self, obj, value):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in set(self, obj, value)
591 # we explicitly compare silent to True just in case the equality
592 # comparison above returns something other than True/False
--> 593 obj._notify_trait(self.name, old_value, new_value)
594
595 def __set__(self, obj, value):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in _notify_trait(self, name, old_value, new_value)
1220 new=new_value,
1221 owner=self,
-> 1222 type='change',
1223 ))
1224

/opt/conda/lib/python3.7/site-packages/ipywidgets/widgets/widget.py in notify_change(self, change)
604 # Send new state to front-end
605 self.send_state(key=name)
--> 606 super(Widget, self).notify_change(change)
607
608 def __repr__(self):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in notify_change(self, change)
1225 def notify_change(self, change):
1226 """Notify observers of a change event"""
-> 1227 return self._notify_observers(change)
1228
1229 def _notify_observers(self, event):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in _notify_observers(self, event)
1262 c = getattr(self, c.name)
1263
-> 1264 c(event)
1265
1266 def _add_notifiers(self, handler, name, type):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in _update(self, change)
359 with self._busy_updating():
360 setattr(self.target[0], self.target[1],
--> 361 self._transform(change.new))
362
363 def unlink(self):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in __set__(self, obj, value)
602 raise TraitError('The "%s" trait is read-only.' % self.name)
603 else:
--> 604 self.set(obj, value)
605
606 def _validate(self, obj, value):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in set(self, obj, value)
591 # we explicitly compare silent to True just in case the equality
592 # comparison above returns something other than True/False
--> 593 obj._notify_trait(self.name, old_value, new_value)
594
595 def __set__(self, obj, value):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in _notify_trait(self, name, old_value, new_value)
1220 new=new_value,
1221 owner=self,
-> 1222 type='change',
1223 ))
1224

/opt/conda/lib/python3.7/site-packages/ipywidgets/widgets/widget.py in notify_change(self, change)
604 # Send new state to front-end
605 self.send_state(key=name)
--> 606 super(Widget, self).notify_change(change)
607
608 def __repr__(self):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in notify_change(self, change)
1225 def notify_change(self, change):
1226 """Notify observers of a change event"""
-> 1227 return self._notify_observers(change)
1228
1229 def _notify_observers(self, event):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in _notify_observers(self, event)
1262 c = getattr(self, c.name)
1263
-> 1264 c(event)
1265
1266 def _add_notifiers(self, handler, name, type):

/opt/conda/lib/python3.7/site-packages/optimade_client/query_filter.py in _on_database_select(self, _)
192 self.query_button.tooltip = "Search"
193 self.sort_selector.valid_fields = sorted(
--> 194 get_sortable_fields(self.database[1].base_url)
195 )
196 self.unfreeze()

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in __set__(self, obj, value)
602 raise TraitError('The "%s" trait is read-only.' % self.name)
603 else:
--> 604 self.set(obj, value)
605
606 def _validate(self, obj, value):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in set(self, obj, value)
591 # we explicitly compare silent to True just in case the equality
592 # comparison above returns something other than True/False
--> 593 obj._notify_trait(self.name, old_value, new_value)
594
595 def __set__(self, obj, value):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in _notify_trait(self, name, old_value, new_value)
1220 new=new_value,
1221 owner=self,
-> 1222 type='change',
1223 ))
1224

/opt/conda/lib/python3.7/site-packages/ipywidgets/widgets/widget.py in notify_change(self, change)
604 # Send new state to front-end
605 self.send_state(key=name)
--> 606 super(Widget, self).notify_change(change)
607
608 def __repr__(self):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in notify_change(self, change)
1225 def notify_change(self, change):
1226 """Notify observers of a change event"""
-> 1227 return self._notify_observers(change)
1228
1229 def _notify_observers(self, event):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in _notify_observers(self, event)
1262 c = getattr(self, c.name)
1263
-> 1264 c(event)
1265
1266 def _add_notifiers(self, handler, name, type):

/opt/conda/lib/python3.7/site-packages/optimade_client/subwidgets/sort_selector.py in _update_drop_options(self, change)
138 value = self.fields_drop.value
139 self.fields_drop.options = fields
--> 140 self.fields_drop.value = value
141 self.fields_drop.layout.width = "auto"
142

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in __set__(self, obj, value)
602 raise TraitError('The "%s" trait is read-only.' % self.name)
603 else:
--> 604 self.set(obj, value)
605
606 def _validate(self, obj, value):

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in set(self, obj, value)
576
577 def set(self, obj, value):
--> 578 new_value = self._validate(obj, value)
579 try:
580 old_value = obj._trait_values[self.name]

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in _validate(self, obj, value)
610 value = self.validate(obj, value)
611 if obj._cross_validation_lock is False:
--> 612 value = self._cross_validate(obj, value)
613 return value
614

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in _cross_validate(self, obj, value)
616 if self.name in obj._trait_validators:
617 proposal = Bunch({'trait': self, 'value': value, 'owner': obj})
--> 618 value = obj._trait_validators[self.name](obj, proposal)
619 elif hasattr(obj, '_%s_validate' % self.name):
620 meth_name = '_%s_validate' % self.name

/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py in __call__(self, *args, **kwargs)
973 """Pass `*args` and `**kwargs` to the handler's function if it exists."""
974 if hasattr(self, 'func'):
--> 975 return self.func(*args, **kwargs)
976 else:
977 return self._init_call(*args, **kwargs)

/opt/conda/lib/python3.7/site-packages/ipywidgets/widgets/widget_selection.py in _validate_value(self, proposal)
241 return findvalue(self._options_values, value, self.equals) if value is not None else None
242 except ValueError:
--> 243 raise TraitError('Invalid selection: value not found')
244
245 @observe('value')

TraitError: Invalid selection: value not found

**To Reproduce**
Steps to reproduce the behavior:
1. Start a new calculation.
2. Go to the Structure selection step and select the OPTIMADE tab.
3. Select the JARVIS provider.

**Version (if known)**
- App version: [e.g. v21.11.0]

**Additional context**

When trying to create an automated bug report, I got the following message from GitHub:

Screen Shot 2021-11-18 at 11 43 44

Will open a separate issue for this.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.