Open
Description
Using the following minimal code I wasn't able to draw a closed path and then drag and drop the polygon. Check the full error code.
from plotly.graph_objs._figurewidget import FigureWidget
FigureWidget(
layout={
'modebar': {
"add": [
"drawclosedpath",
"eraseshape",
]
},
}
)
Full error code
ValueError Traceback (most recent call last)
File ~/micromamba/envs/streetsurface/lib/python3.10/site-packages/ipywidgets/widgets/widget.py:773, in Widget._handle_msg(self, msg)
771 if 'buffer_paths' in data:
772 _put_buffers(state, data['buffer_paths'], msg['buffers'])
--> 773 self.set_state(state)
775 # Handle a state request.
776 elif method == 'request_state':
File ~/micromamba/envs/streetsurface/lib/python3.10/site-packages/ipywidgets/widgets/widget.py:650, in Widget.set_state(self, sync_data)
645 self._send(msg, buffers=echo_buffers)
647 # The order of these context managers is important. Properties must
648 # be locked when the hold_trait_notification context manager is
649 # released and notifications are fired.
--> 650 with self._lock_property(**sync_data), self.hold_trait_notifications():
651 for name in sync_data:
652 if name in self.keys:
File ~/micromamba/envs/streetsurface/lib/python3.10/contextlib.py:142, in _GeneratorContextManager.__exit__(self, typ, value, traceback)
140 if typ is None:
141 try:
--> 142 next(self.gen)
143 except StopIteration:
144 return False
File ~/micromamba/envs/streetsurface/lib/python3.10/site-packages/traitlets/traitlets.py:1502, in HasTraits.hold_trait_notifications(self)
1500 for changes in cache.values():
1501 for change in changes:
-> 1502 self.notify_change(change)
File ~/micromamba/envs/streetsurface/lib/python3.10/site-packages/ipywidgets/widgets/widget.py:701, in Widget.notify_change(self, change)
698 if name in self.keys and self._should_send_property(name, getattr(self, name)):
699 # Send new state to front-end
700 self.send_state(key=name)
--> 701 super().notify_change(change)
File ~/micromamba/envs/streetsurface/lib/python3.10/site-packages/traitlets/traitlets.py:1517, in HasTraits.notify_change(self, change)
1515 def notify_change(self, change):
1516 """Notify observers of a change event"""
-> 1517 return self._notify_observers(change)
File ~/micromamba/envs/streetsurface/lib/python3.10/site-packages/traitlets/traitlets.py:1564, in HasTraits._notify_observers(self, event)
1561 elif isinstance(c, EventHandler) and c.name is not None:
1562 c = getattr(self, c.name)
-> 1564 c(event)
File ~/micromamba/envs/streetsurface/lib/python3.10/site-packages/plotly/basewidget.py:644, in BaseFigureWidget._handler_js2py_relayout(self, change)
640 relayout_data.pop("lastInputTime")
642 # Perform relayout
643 # ----------------
--> 644 self.plotly_relayout(relayout_data=relayout_data, source_view_id=source_view_id)
646 self._js2py_relayout = None
File ~/micromamba/envs/streetsurface/lib/python3.10/site-packages/plotly/basedatatypes.py:2612, in BaseFigure.plotly_relayout(self, relayout_data, **kwargs)
2608 msg_kwargs = {}
2610 # Perform relayout operation on layout dict
2611 # -----------------------------------------
-> 2612 relayout_changes = self._perform_plotly_relayout(relayout_data)
2613 if relayout_changes:
2614 # The relayout operation resulted in a change to some layout
2615 # properties, so we dispatch change callbacks and send the
2616 # relayout message to the frontend (if any)
2617 self._send_relayout_msg(relayout_changes, **msg_kwargs)
File ~/micromamba/envs/streetsurface/lib/python3.10/site-packages/plotly/basedatatypes.py:2648, in BaseFigure._perform_plotly_relayout(self, relayout_data)
2644 for key_path_str, v in relayout_data.items():
2646 if not BaseFigure._is_key_path_compatible(key_path_str, self.layout):
-> 2648 raise ValueError(
2649 """
2650 Invalid property path '{key_path_str}' for layout
2651 """.format(
2652 key_path_str=key_path_str
2653 )
2654 )
2656 # Apply set operation on the layout dict
2657 val_changed = BaseFigure._set_in(self._layout, key_path_str, v)
ValueError:
Invalid property path 'shapes[0].path' for layout