NDArray.__setitem__ raises AttributeError for list index keys
Mantenedores costumam responder em até 2 dias
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 82/100
Direção de pesquisa
Comece em src/blosc2/ndarray.py, no ramo de indexação avançada de NDArray.setitem, especialmente na verificação de chaves booleanas escalares por volta das linhas 5106–5108. Compare as atribuições com chaves do tipo lista e tupla com os casos funcionais de arrays NumPy. O trabalho estará concluído quando essas atribuições não gerarem mais AttributeError e o comportamento existente para chaves do tipo array continuar funcionando.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Assigning with a fancy index that is a Python list, or a tuple that contains an index array or list, raises AttributeError (main d3bca9e5 and 4.14.1). Reading with the same keys works, and an index array as the whole key works too.
import blosc2, numpy as np
a = blosc2.zeros((20, 30, 40), dtype=np.float32)
idx = np.array([1, 3, 5])
a[idx] = np.ones((3, 30, 40), np.float32) # ok
a[[1, 3, 5]] = np.ones((3, 30, 40), np.float32) # AttributeError: 'list' object has no attribute 'shape'
a[[1, 3, 5], 3:17] = np.ones((3, 14, 40), np.float32) # AttributeError: 'tuple' object has no attribute 'shape'
a[idx, 3:17] = np.ones((3, 14, 40), np.float32) # AttributeError: 'tuple' object has no attribute 'shape'
a[2, [1, 3, 5]] = np.ones((3, 40), np.float32) # AttributeError: 'tuple' object has no attribute 'shape'
a[[1, 3, 5], 3:17] # reading works
Cause. The fancy-index branch of NDArray.__setitem__ checks for a scalar boolean key on the original key, key.shape == () and hasattr(key, "dtype") and ... (ndarray.py#L5106-L5108), which only works when key is a NumPy array. Testing isinstance(key, np.ndarray) (or getattr(key, "shape", None) == ()) first should be enough.
Found while testing write paths for #763; not fixed there to keep that PR to one change.
- Linguagem predominante
- Python
- Estrelas
- 214
- Forks
- 72
- Merge médio
- 3d 9h
- PRs com merge (30d)
- 24
Preparar o ambiente
Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.
- Sem Dockerfile nem arquivo Docker Compose
- Sem 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 Blosc/python-blosc2
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
Blosc/python-blosc2#757 ·
Mantenedores costumam responder em até 2 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Blosc/python-blosc2#731 ·
Mantenedores costumam responder em até 2 dias
-
documentation sustain-2026
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
Blosc/python-blosc2#720 · 3 comentários ·
Mantenedores costumam responder em até 2 dias
-
sustain-2026
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
Blosc/python-blosc2#717 ·
Mantenedores costumam responder em até 2 dias
-
documentation sustain-2026
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 80/100
Blosc/python-blosc2#714 ·
Mantenedores costumam responder em até 2 dias
Todas as issues de Blosc/python-blosc2
Issues semelhantes
-
[BUG]: Compliance rules never see Unity Catalog views as viewsTalvez já em andamento @wagnercsantos assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
databrickslabs/ontos#1348 ·
Mantenedores costumam responder em até 3 dias
-
`forum_pr_poster` action will always return `none` when checking for pre-existing feedback threads, even if a feedback thread already exists.Talvez já em andamento @pgmzeta assumiu hoje. AbertaE-Verified P-Major
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 79/100
goonstation/goonstation#28259 ·
Mantenedores costumam responder em até 2 dias
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
woonstadrotterdam/monumenten#70 ·
Mantenedores costumam responder em até 15 dias
-
binding:python bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
Mantenedores costumam responder em até 1 dia
-
The Browser tab fails with a Wayland error when Open Terminal runs from a Wayland desktop sessionAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
open-webui/open-terminal#210 ·