Blosc / Blosc/python-blosc2

[WASM] SChunk.__getitem__/get_slice raises RuntimeError on Pyodide 0.29.4 (works on 0.29.3 and 314.0.0)

Abierto
#664 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Python
Estrellas
211
Forks
58
Merge medio
1 d 17 h
PR fusionados (30 d)
6

Descripción

## Summary
On the WASM/Pyodide build, slicing an **in-memory** `SChunk` that was loaded from
a frame fails with `RuntimeError: Error while getting the slice` — but **only
under Pyodide 0.29.4**. The same code passes on Pyodide **0.29.3** (cp313) and
**314.0.0** (cp314).

The wheel tag is `pyemscripten_2025_0_wasm32` (ABI-level), so a wheel built/tested
against 0.29.3 still runs on a user's 0.29.4 runtime — meaning this is a genuine
runtime failure for 0.29.4 users, not just a CI artifact.

## Reproducer
`tests/test_open.py::test_load_schunk_returns_in_memory_copy`:

```python
urlpath = tmp_path / "schunk.b2frame"
data = np.arange(20, dtype=np.int32)
blosc2.SChunk(data=data, urlpath=urlpath, mode="w",
cparams={"typesize": data.dtype.itemsize})
loaded = blosc2.load(urlpath) # in-memory copy, urlpath is None
assert loaded[:] == data.tobytes() # <-- RuntimeError here
```

## Traceback

schunk.py:1114 __getitem__ -> get_slice(item.start, item.stop)
schunk.py:1058 get_slice -> super().get_slice(start, stop, out)
blosc2_ext.pyx:2058 -> RuntimeError: Error while getting the slice

## Environment matrix

```
│ Python / ABI │ Pyodide │ Result │
│ cp313 / pyemscripten_2025_0 │ 0.29.3 │ ✅ pass │
│ cp313 / pyemscripten_2025_0 │ 0.29.4 │ ❌ RuntimeError │
│ cp314 / pyemscripten_2026_0 │ 314.0.0 │ ✅ pass │
```

## Current workaround

.github/workflows/cibuildwheels.yml pins CIBW_PYODIDE_VERSION: 0.29.3 for the
cp313 wasm job (cibuildwheel 4.1's default is 0.29.4). This keeps CI green and
matches the wheels wasm.yml already ships, but does not fix the runtime for
0.29.4 users.

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Empieza con tests/test_open.py::test_load_schunk_returns_in_memory_copy y reproduce el fallo con Pyodide 0.29.4. Después inspecciona la ruta get_slice/__getitem__ de schunk.py y el punto de entrada de blosc2_ext.pyx mencionado en el traceback. Comprueba cómo se gestiona la versión de Pyodide en .github/workflows/cibuildwheels.yml y wasm.yml. Se considera terminado cuando el slicing de SChunk cargados en memoria funciona en 0.29.4 sin causar regresiones en los entornos 0.29.3 y 314.0.0, que están pasando.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python, wasm
Área
build-system, testing-qa
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Tranquilo
Claridad
Bastante claro
Aptitud para principiantes
48/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.