[BUG]: Integer and string properties reject NumPy scalars
Les mainteneurs répondent en général sous 2 jours
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 70/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Domaine
- backend, data-visualization
Piste de recherche
Commencez par lire IntegerValidator et StringValidator, que l’issue indique comme rejetant les scalaires NumPy, et comparez leurs vérifications à celles de NumberValidator. Reproduisez les exemples pour name, text, nticks et nbinsx, puis recherchez les tests de validateurs couvrant les entiers et les nombres Python. Le travail est terminé lorsque les valeurs NumPy décrites dans l’issue sont acceptées dans ces propriétés et que le comportement de validation existant reste couvert.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Description
Graph object properties validated as integers (such as layout.xaxis.nticks, histogram.nbinsx and layout.updatemenus[].active) reject NumPy integer scalars, and properties validated as non-strict strings (such as name and text) reject NumPy integer and float32 scalars. Python int and float values of the same number are accepted, and number properties such as marker.size already accept NumPy scalars.
This breaks a common pattern: building one trace per value of a DataFrame column with Series.unique(), which returns NumPy scalars.
Expected: NumPy integers are accepted wherever a Python int is, and NumPy numbers are converted to strings the same way Python numbers are.
Steps to reproduce
import numpy as np
import pandas as pd
import plotly.graph_objects as go
df = pd.DataFrame({"year": [2020, 2021], "v": [1, 2]})
for label, call in [
("name", lambda: go.Scatter(name=df.year.unique()[0])),
("text", lambda: go.Scatter(text=np.float32(1.5))),
("nticks", lambda: go.Layout(xaxis_nticks=np.int64(5))),
("nbinsx", lambda: go.Histogram(nbinsx=np.int32(10))),
]:
try:
call()
print(label, "ok")
except ValueError as error:
print(label, str(error).splitlines()[1].strip())
Actual:
name Invalid value of type 'numpy.int64' received for the 'name' property of scatter
text Invalid value of type 'numpy.float32' received for the 'text' property of scatter
nticks Invalid value of type 'numpy.int64' received for the 'nticks' property of layout.xaxis
nbinsx Invalid value of type 'numpy.int32' received for the 'nbinsx' property of histogram
Expected:
name ok
text ok
nticks ok
nbinsx ok
Notes
IntegerValidator checks isinstance(v, int) and StringValidator checks isinstance(v, (int, float)). NumPy integer types are not subclasses of int, so they fail both checks, while NumberValidator checks numbers.Number and accepts them. The error message for string properties says "A number that will be converted to a string", which a NumPy number is.
Reproduced with plotly 7.1.0 and current main (38374acd), NumPy 2.x, Python 3.12.
- Langage dominant
- Python
- Étoiles
- 18.9k
- Forks
- 2.9k
- Merge moyen
- 2 j 7 h
- PR mergées (30 j)
- 12
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un 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 plotly/plotly.py
-
to_typed_array_spec encodes bdata in host byte order; plotly.js always decodes it as little-endianPeut-être pris @Vikram12301 l’a pris il y a 3 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 79/100
Les mainteneurs répondent en général sous 2 jours
-
[BUG]: NaT inside a datetime64 array serializes as the string "NaT" instead of nullPeut-être pris @senanurcetin l’a pris il y a 5 jours. Ouvertebug P3 size: 1
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
plotly/plotly.py#5829 · 3 commentaires ·
Les mainteneurs répondent en général sous 2 jours
-
[BUG]: Single-color requests raise ZeroDivisionError in palette helpersPeut-être pris @MokiMeow l’a pris il y a 15 jours. Ouvertebug P3 size: 1
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
plotly/plotly.py#5805 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
[BUG]: Unnecessary `UserWarning` when using `fig.write_image()` with `kaleido.start_sync_server()`Peut-être pris @jayzhou2309 l’a pris il y a 23 jours. Ouvertebug P3 size: 1
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
plotly/plotly.py#5786 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
P3 size: 1 task
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
plotly/plotly.py#5769 · 1 réaction ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de plotly/plotly.py
Issues similaires
-
bug P2 rust
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
jscott3201/rusty-bacnet#2085 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
evarness-ai/iris-harness#401 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
sistemicorp/scripts#62 ·
-
area/mac help wanted needs-qa
Difficulté 1/5 Moins d'une heure Accessibilité débutants 76/100