plotly / plotly/plotly.py

change context manager for temporary auto-reverted `figure.layout`

Ouverte
#4,334 2 commentaires 1 réaction 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

feature P3
Langage dominant
Python
Étoiles
18.8k
Forks
2.8k
Merge moyen
16 h 26 min
PR mergées (30 j)
21

Description

Instead of

fig.layout.showlegend = False
fig.write_image('plot.pdf')
fig.layout.showlegend = True

it would be nice to write

from plotly.express import plotly_patch  # or similar

with plotly_patch(fig.layout, showlegend=False):
    fig.write_image('plot.pdf')

I tried

from unittest.mock import patch

with patch.dict(fig.layout, showlegend=False):
    fig.write_image('plot.pdf')

which unfortunately doesn't correctly restore the previous value but tries to delete the patched keys which is undesired behavior and raises AttributeError to boot:

   1906 """Unpatch the dict."""
   1907 if self._original is not None:
-> 1908     self._unpatch_dict()
...
   1934 keys = list(in_dict)
   1935 for key in keys:
-> 1936     del in_dict[key]

AttributeError: __delitem__
Related

Found this forum post where such a context manager was welcomed.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

L’issue ne nomme aucun fichier source ni aucun test. Commencez par localiser le comportement de mutation et de restauration du layout de la figure, puis examinez comment un context manager pourrait préserver les valeurs existantes et les restaurer après fig.write_image('plot.pdf'); done devrait inclure une couverture pour les modifications temporaires de showlegend sans supprimer les clés du layout.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
data-visualization
Type d'issue
Fonctionnalité
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.