Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[BUG] create_dataset() raises IndexError instead of ValueError on empty NumPy array

Abierto Apto para principiantes
#1,777 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
82/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
numpy, python
Área
data

Línea de trabajo

El acceso sin comprobar data[0] está en el bloque de detección de formato de create_dataset() en openml/datasets/functions.py. Ejecuta el fragmento de reproducción del issue con un array sin filas para confirmar el IndexError. Está terminado cuando un data vacío lanza un ValueError que incluye la forma del array y una prueba para ese caso pasa.

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

Descripción

Description:

When create_dataset() is called with a zero-row NumPy array, the
function raises an IndexError instead of a descriptive ValueError.

The error originates from an unchecked data[0] access inside the
format-detection block. The message gives zero indication of what
actually went wrong — a user passing an empty DataFrame export or a
filtered-down dataset with no rows gets a raw index crash with no
context.

No warning, no descriptive message, no hint that the root cause is
simply an empty array. The function just crashes silently with a raw
IndexError pointing deep into openml internals.

Expected Behavior:

A clear ValueError that tells the user exactly what the problem is:

ValueError: 'data' must contain at least one row,
but got an array with shape (0, 2).

Environment
  • openml-python version: 0.15.1
  • Python version: 3.12
  • OS: Ubuntu 24
Error messages, stack traces, or logs
No descriptive error is raised. Just a raw IndexError with no context:

IndexError: index 0 is out of bounds for axis 0 with size 0

The traceback points inside openml internals with no hint that
the root cause is simply an empty array being passed in.

Verified with arrays of shape (0, 2), (0, 5), (0, 10) — all
produce the same IndexError with no useful message.
Steps to reproduce
import numpy as np
import openml

openml.datasets.create_dataset(
    name="empty_test",
    description="Reproduces the IndexError bug",
    creator=None,
    contributor=None,
    collection_date=None,
    language=None,
    licence=None,
    attributes=[("feature1", "NUMERIC"), ("target", "NUMERIC")],
    data=np.array([]).reshape(0, 2),   # 0 rows — triggers the bug
    default_target_attribute="target",
    ignore_attribute=None,
    citation="",
)

# Expected: ValueError: 'data' must contain at least one row,
#                        but got an array with shape (0, 2).
# Actual:   IndexError: index 0 is out of bounds for axis 0 with size 0
Additional context

Root cause is this unchecked data[0] access in datasets/functions.py:

# BEFORE (buggy)
if isinstance(data, (list, np.ndarray)):
    if isinstance(data[0], (list, np.ndarray)):  # crashes if data is empty
        data_format = "arff"
    elif isinstance(data[0], dict):
        data_format = "sparse_arff"

# AFTER (suggested fix)
if isinstance(data, (list, np.ndarray)):
    if len(data) == 0:                           # guard added
        raise ValueError(
            f"'data' must contain at least one row, "
            f"but got an array with shape {np.array(data).shape}."
        )
    if isinstance(data[0], (list, np.ndarray)):
        data_format = "arff"
    elif isinstance(data[0], dict):
        data_format = "sparse_arff"

Confirmed across 3 consecutive runs on openml==0.15.1 / Python 3.12 / Ubuntu 24.
Happy to open a PR with the fix if this is confirmed.

Lenguaje dominante
Python
Estrellas
366
Forks
308
Merge medio
1 d 16 h
PR fusionados (30 d)
7

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de openml/openml-python

Todos los issues de openml/openml-python

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.