[BUG]: Single-color requests raise ZeroDivisionError in palette helpers
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 82/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- python
- Área
- data-visualization
Línea de trabajo
El error está en los auxiliares plotly.colors sample_colorscale y n_colors, que dividen entre la cantidad solicitada menos uno. Empieza ejecutando el script de reproducción del issue para confirmar el ZeroDivisionError con una cantidad de 1. Está terminado cuando una solicitud de un único color devuelve un color al inicio del intervalo (low / lowcolor), igual que la primera muestra del caso de varios colores, y el caso de cero colores sigue devolviendo una lista vacía.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
sample_colorscale and n_colors raise ZeroDivisionError when asked for one color. This breaks palettes sized to a dataset's group count when there is exactly one group. Both helpers divide by the requested count minus one.
Expected: one color from the start of the interval (low / lowcolor), consistent with their existing first sample.
Screenshots/Video
The API calls fail before a figure can be created; the output is shown below.
Steps to reproduce
from plotly.colors import n_colors, sample_colorscale
for label, call in [
("sample_colorscale", lambda: sample_colorscale("Viridis", 1)),
("n_colors", lambda: n_colors((0, 0, 0), (1, 1, 1), 1)),
]:
try:
print(label, call())
except ZeroDivisionError as error:
print(label, type(error).__name__, str(error))
Actual:
sample_colorscale ZeroDivisionError division by zero
n_colors ZeroDivisionError float division by zero
Expected:
sample_colorscale ['rgb(68, 1, 84)']
n_colors [(0.0, 0.0, 0.0)]
Notes
Reproduced with Plotly 7.1.0, current main 3f8a650930feadfdb651cd869ffe3e85fd093885, Python 3.12.10, Windows amd64. Zero-color requests already return empty lists.
- Lenguaje dominante
- Python
- Estrellas
- 18.8k
- Forks
- 2.9k
- Merge medio
- 3 d 7 h
- PR fusionados (30 d)
- 20
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la 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.
Más de plotly/plotly.py
-
[BUG]: Unnecessary `UserWarning` when using `fig.write_image()` with `kaleido.start_sync_server()`Posiblemente ocupada @jayzhou2309 la tomó hace 12 días. Abiertobug P3 size: 1
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
plotly/plotly.py#5786 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
P3 size: 1 task
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
plotly/plotly.py#5769 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Remove `@types/plotly.js` dependencyPosiblemente ocupada @Belagum la tomó hace 28 días. AbiertoP3 size: 1 task
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
bug P1
Dificultad 1/5 Menos de una hora Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
feature P3
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
Todos los issues de plotly/plotly.py
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
onyx-dot-app/onyx#16016 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
black --check exits 0 and prints All done when a multi file run is interruptedPosiblemente ocupada @jiteshgulati la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 2 días
-
Non-positive worker counts wait for results without starting workersPosiblemente ocupada @IlyaKhalafi la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día