issue computing repr of `Figure`
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
Piste de recherche
Reproduisez le traceback dans un notebook avec %matplotlib widget, puis examinez le chemin de repr de Figure dans figure.py autour des lignes 403-408, la lambda du formateur IPython pylabtools, ainsi que backend_webagg_core.py autour de set_cursor et send_event. C’est terminé lorsque fig s’affiche une fois le tracé terminé sans que l’AttributeError lié au manager ne se produise pendant le rendu.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Due to https://github.com/matplotlib/matplotlib/pull/10292 during a save operation we temporarily remove the manager
%matplotlib widget
import matplotlib.pyplot as plt
plt.plot(range(5))
fig = plt.gcf()
## new cell
fig
and you will get a traceback that looks like:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
~/.virtualenvs/bleeding/lib/python3.9/site-packages/IPython/core/formatters.py in __call__(self, obj)
339 pass
340 else:
--> 341 return printer(obj)
342 # Finally look for special method names
343 method = get_real_method(obj, self.print_method)
~/.virtualenvs/bleeding/lib/python3.9/site-packages/IPython/core/pylabtools.py in <lambda>(fig)
242
243 if 'png' in formats:
--> 244 png_formatter.for_type(Figure, lambda fig: print_figure(fig, 'png', **kwargs))
245 if 'retina' in formats or 'png2x' in formats:
246 png_formatter.for_type(Figure, lambda fig: retina_figure(fig, **kwargs))
~/.virtualenvs/bleeding/lib/python3.9/site-packages/IPython/core/pylabtools.py in print_figure(fig, fmt, bbox_inches, **kwargs)
126
127 bytes_io = BytesIO()
--> 128 fig.canvas.print_figure(bytes_io, **kw)
129 data = bytes_io.getvalue()
130 if fmt == 'svg':
~/source/p/mpl-master/lib/matplotlib/backend_bases.py in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, bbox_inches, **kwargs)
2058 if bbox_inches:
2059 if bbox_inches == "tight":
-> 2060 renderer = _get_renderer(
2061 self.figure,
2062 functools.partial(
~/source/p/mpl-master/lib/matplotlib/backend_bases.py in _get_renderer(figure, print_method)
1546 with cbook._setattr_cm(figure, draw=_draw):
1547 try:
-> 1548 print_method(io.BytesIO())
1549 except Done as exc:
1550 figure._cachedRenderer, = exc.args
~/source/p/mpl-master/lib/matplotlib/backends/backend_agg.py in print_png(self, filename_or_obj, metadata, pil_kwargs, *args, **kwargs)
533
534 else:
--> 535 FigureCanvasAgg.draw(self)
536 renderer = self.get_renderer()
537 with cbook._setattr_cm(renderer, dpi=self.figure.dpi), \
~/source/p/mpl-master/lib/matplotlib/backends/backend_agg.py in draw(self)
391 self.renderer = self.get_renderer(cleared=True)
392 # Acquire a lock on the shared font cache.
--> 393 with RendererAgg.lock, \
394 (self.toolbar._wait_cursor_for_draw_cm() if self.toolbar
395 else nullcontext()):
~/source/other_source/cpython/Lib/contextlib.py in __enter__(self)
111 del self.args, self.kwds, self.func
112 try:
--> 113 return next(self.gen)
114 except StopIteration:
115 raise RuntimeError("generator didn't yield") from None
~/source/p/mpl-master/lib/matplotlib/backend_bases.py in _wait_cursor_for_draw_cm(self)
2732 if self._draw_time - last_draw_time > 1:
2733 try:
-> 2734 self.set_cursor(cursors.WAIT)
2735 yield
2736 finally:
~/source/p/mpl-master/lib/matplotlib/backends/backend_webagg_core.py in set_cursor(self, cursor)
379 def set_cursor(self, cursor):
380 if cursor != self.cursor:
--> 381 self.canvas.send_event("cursor", cursor=cursor)
382 self.cursor = cursor
383
~/source/p/mpl-master/lib/matplotlib/backends/backend_webagg_core.py in send_event(self, event_type, **kwargs)
344
345 def send_event(self, event_type, **kwargs):
--> 346 self.manager._send_event(event_type, **kwargs)
347
348
AttributeError: 'NoneType' object has no attribute '_send_event'
I thought we should be going through https://github.com/matplotlib/matplotlib/blob/59b5e0e873dd3420758498c90b15f7f70cb007da/lib/matplotlib/figure.py#L403-L408 but it looks like we are going trough a lambda from IPython core....
I think this could legitimately go against IPython, Matplotlib, or here. Leaving here as the "middle ground" ;)
- Langage dominant
- Jupyter Notebook
- Étoiles
- 1.7k
- Forks
- 236
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de matplotlib/ipympl
-
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
matplotlib/ipympl#623 · 1 commentaire ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
matplotlib/ipympl#622 · 13 commentaires ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 42/100
matplotlib/ipympl#612 ·
-
DeprecationWarning: Passing unrecognized arguments to super(Toolbar).__init__().Peut-être pris @pradeep14012004 l’a pris il y a 5 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
matplotlib/ipympl#611 · 4 commentaires ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 42/100
matplotlib/ipympl#609 · 7 commentaires ·
Toutes les issues de matplotlib/ipympl
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 80/100
keyxmakerx/Chronicle#1179 ·
Les mainteneurs répondent en général sous 1 jour
-
area:studio type:security
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
bug priority:medium
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
Les mainteneurs répondent en général sous 1 jour
-
Database: Person property settings, open Limit / Default / Notify as flyouts (NavigableMenuItem)Ouvertedatabase enhancement good first issue low small
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour