change context manager for temporary auto-reverted `figure.layout`
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 18.8k
- Forks
- 2.8k
- Merge medio
- 16 h 26 min
- PR fusionados (30 d)
- 21
Descripción
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.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
El issue no nombra ningún archivo fuente ni ninguna prueba. Empieza por localizar el comportamiento de mutación y restauración del layout de la figura y, después, inspecciona cómo un context manager podría conservar los valores existentes y restaurarlos después de fig.write_image('plot.pdf'); done debería incluir cobertura para cambios temporales de showlegend sin eliminar las claves del layout.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- data-visualization
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100