Closed
Description
Bug report
Bug summary
When running https://matplotlib.org/gallery/event_handling/path_editor.html#sphx-glr-gallery-event-handling-path-editor-py I get a recursion error.
Can anybody reproduce this?
Code for reproduction
Environment:
conda create -n test-path-editor matplotlib pyqt python=3.7
Matplotlib version
- Operating system: Linux
- Matplotlib version: Tested on master and 3.1.1 and 3.0.3
- Matplotlib backend (
print(matplotlib.get_backend())
): Qt5Agg - Python version: 3.7
- Other libraries: Qt 5.9.2
Actual outcome
RecursionError: maximum recursion depth exceeded in comparison
Full traceback
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
QWidget::repaint: Recursive repaint detected
Traceback (most recent call last):
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/backends/backend_qt5.py", line 519, in _draw_idle
self.draw()
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/backends/backend_agg.py", line 402, in draw
self.figure.draw(self.renderer)
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/artist.py", line 50, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/figure.py", line 1649, in draw
renderer, self, artists, self.suppressComposite)
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/image.py", line 138, in _draw_list_compositing_images
a.draw(renderer)
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/artist.py", line 50, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/axes/_base.py", line 2628, in draw
mimage._draw_list_compositing_images(renderer, self, artists)
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/image.py", line 138, in _draw_list_compositing_images
a.draw(renderer)
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/artist.py", line 50, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/axis.py", line 1185, in draw
ticks_to_draw = self._update_ticks(renderer)
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/axis.py", line 1023, in _update_ticks
tick_tups = list(self.iter_ticks()) # iter_ticks calls the locator
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/axis.py", line 967, in iter_ticks
majorLocs = self.major.locator()
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/ticker.py", line 1985, in __call__
return self.tick_values(vmin, vmax)
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/ticker.py", line 1993, in tick_values
locs = self._raw_ticks(vmin, vmax)
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/ticker.py", line 1932, in _raw_ticks
nbins = np.clip(self.axis.get_tick_space(),
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/axis.py", line 2154, in get_tick_space
tick = self._get_tick(True)
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/axis.py", line 1818, in _get_tick
return XTick(self.axes, 0, '', major=major, **tick_kw)
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/axis.py", line 174, in __init__
self.tick1line = self._get_tick1line()
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/axis.py", line 470, in _get_tick1line
markeredgewidth=self._width, zorder=self._zorder)
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/lines.py", line 386, in __init__
self._marker = MarkerStyle(marker, fillstyle)
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/markers.py", line 245, in __init__
self.set_marker(marker)
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/site-packages/matplotlib/markers.py", line 302, in set_marker
elif (isinstance(marker, Sized) and len(marker) in (2, 3) and
File "/home/tim/anaconda3/envs/mpl311/lib/python3.7/abc.py", line 139, in __instancecheck__
return _abc_instancecheck(cls, instance)
RecursionError: maximum recursion depth exceeded in comparison
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted```
</p>
</details>