aiidalab / aiidalab/aiidalab-qe
Selecting JARVIS in the OPTIMADE client raises an error
- 主要语言
- Python
- 星标
- 33
- 派生
- 25
- 平均合并
- 6 小时 7 分钟
- 30 天内合并 PR
- 8
描述
**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)
140ValueError: '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:

Will open a separate issue for this.
贡献指南
这个仓库没有索引到贡献指南
评估
这个 Issue 还没有评估数据。