[BUG]: Integer and string properties reject NumPy scalars
Mantenedores costumam responder em até 2 dias
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 70/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Domínio
- backend, data-visualization
Direção de pesquisa
Comece lendo IntegerValidator e StringValidator, que, segundo a issue, rejeitam escalares do NumPy, e compare suas verificações com as de NumberValidator. Reproduza os exemplos para name, text, nticks e nbinsx e, em seguida, procure testes dos validadores que cubram números inteiros e números do Python. O trabalho estará concluído quando os valores do NumPy descritos na issue forem aceitos nessas propriedades e o comportamento de validação existente continuar coberto.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- Python
- Estrelas
- 18.9k
- Forks
- 2.9k
- Merge médio
- 2d 7h
- PRs com merge (30d)
- 12
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de plotly/plotly.py
-
to_typed_array_spec encodes bdata in host byte order; plotly.js always decodes it as little-endianTalvez já em andamento @Vikram12301 assumiu há 1 dia. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 79/100
Mantenedores costumam responder em até 2 dias
-
[BUG]: NaT inside a datetime64 array serializes as the string "NaT" instead of nullTalvez já em andamento @senanurcetin assumiu há 3 dias. Abertabug P3 size: 1
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
plotly/plotly.py#5829 · 3 comentários ·
Mantenedores costumam responder em até 2 dias
-
[BUG]: Single-color requests raise ZeroDivisionError in palette helpersTalvez já em andamento @MokiMeow assumiu há 13 dias. Abertabug P3 size: 1
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
plotly/plotly.py#5805 · 1 comentário ·
Mantenedores costumam responder em até 2 dias
-
[BUG]: Unnecessary `UserWarning` when using `fig.write_image()` with `kaleido.start_sync_server()`Talvez já em andamento @jayzhou2309 assumiu há 22 dias. Abertabug P3 size: 1
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
plotly/plotly.py#5786 · 1 comentário ·
Mantenedores costumam responder em até 2 dias
-
P3 size: 1 task
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
plotly/plotly.py#5769 · 1 reação ·
Mantenedores costumam responder em até 2 dias
Todas as issues de plotly/plotly.py
Issues semelhantes
-
type-bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
push_gh-pages fails on master branch on forksTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Abertagood first issue infrastructure
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
kuznia-rdzeni/coreblocks#1135 ·
-
good first issue server
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
Mantenedores costumam responder em até 1 dia
-
documentation priority: high
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
a-lex-s/mealie-telegram-bot#54 ·
Mantenedores costumam responder em até 1 dia