NDArray.__setitem__ raises AttributeError for list index keys
Los mantenedores suelen responder en 2 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 82/100
Línea de trabajo
Empieza en src/blosc2/ndarray.py, en la rama de indexación avanzada de NDArray.setitem, especialmente en la comprobación de claves booleanas escalares alrededor de las líneas 5106–5108. Compara las asignaciones con claves de tipo lista y tupla con los casos funcionales de arrays de NumPy. El trabajo estará terminado cuando esas asignaciones ya no generen AttributeError y el comportamiento existente para claves de tipo array siga funcionando.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Python
- Estrellas
- 214
- Forks
- 72
- Merge medio
- 3 d 9 h
- PR fusionados (30 d)
- 24
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Sin 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 Blosc/python-blosc2
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Blosc/python-blosc2#757 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Blosc/python-blosc2#731 ·
Los mantenedores suelen responder en 2 días
-
documentation sustain-2026
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Blosc/python-blosc2#720 · 3 comentarios ·
Los mantenedores suelen responder en 2 días
-
sustain-2026
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Blosc/python-blosc2#717 ·
Los mantenedores suelen responder en 2 días
-
documentation sustain-2026
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
Blosc/python-blosc2#714 ·
Los mantenedores suelen responder en 2 días
Todos los issues de Blosc/python-blosc2
Issues similares
-
[BUG]: Compliance rules never see Unity Catalog views as viewsPosiblemente ocupada @wagnercsantos la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
databrickslabs/ontos#1348 ·
Los mantenedores suelen responder en 3 días
-
`forum_pr_poster` action will always return `none` when checking for pre-existing feedback threads, even if a feedback thread already exists.Posiblemente ocupada @pgmzeta la tomó hoy. AbiertoE-Verified P-Major
Dificultad 2/5 1-3 horas Aptitud para principiantes 79/100
goonstation/goonstation#28259 ·
Los mantenedores suelen responder en 2 días
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
woonstadrotterdam/monumenten#70 ·
Los mantenedores suelen responder en 15 días
-
binding:python bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
The Browser tab fails with a Wayland error when Open Terminal runs from a Wayland desktop sessionAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
open-webui/open-terminal#210 ·