Skip to content

pandas 2.2.3 import fails with RuntimeError on GraalPy 25.0.2 #944

Description

@timfel

Description

On Linux with GraalPy 25.0.2, a pandas wheel built from source installs successfully but fails on import with:

RuntimeError: dictionary changed size during iteration

The reporter used:

  • GraalPy 25.0.2
  • Linux x86_64
  • numpy 2.2.6
  • pandas 2.2.3

Traceback

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/user/Desktop/venv/lib/python3.12/site-packages/pandas/__init__.py", line 49, in <module>
    from pandas.core.api import (
  File "/home/user/Desktop/venv/lib/python3.12/site-packages/pandas/core/api.py", line 1, in <module>
    from pandas._libs import (
  File "/home/user/Desktop/venv/lib/python3.12/site-packages/pandas/_libs/__init__.py", line 18, in <module>
    from pandas._libs.interval import Interval
  File "interval.pyx", line 1, in init pandas._libs.interval
  File "hashtable.pyx", line 1, in init pandas._libs.hashtable
  File "missing.pyx", line 1, in init pandas._libs.missing
  File "/home/user/Desktop/venv/lib/python3.12/site-packages/pandas/_libs/tslibs/__init__.py", line 39, in <module>
    from pandas._libs.tslibs import dtypes  # pylint: disable=import-self
  File "dtypes.pyx", line 172, in init pandas._libs.tslibs.dtypes
RuntimeError: dictionary changed size during iteration

Dockerfile Used To Build Wheels

FROM --platform=linux/amd64 amazonlinux:2023
USER root
ARG GRAALPY_VERSION=25.0.2
ARG ARCH=amd64
RUN dnf update -y && \
    dnf install -y \
    wget tar gzip unzip patchelf gcc gcc-c++ patch git \
    gcc-gfortran openblas-devel zlib-devel libjpeg-turbo-devel \
    libxml2-devel libxslt-devel && \
    dnf clean all
RUN wget https://github.com/oracle/graalpython/releases/download/graal-${GRAALPY_VERSION}/graalpy-${GRAALPY_VERSION}-linux-${ARCH}.tar.gz && \
    tar -xzf graalpy-${GRAALPY_VERSION}-linux-${ARCH}.tar.gz -C /opt/ && \
    rm graalpy-${GRAALPY_VERSION}-linux-${ARCH}.tar.gz
ENV PATH="/opt/graalpy-${GRAALPY_VERSION}-linux-${ARCH}/bin:$PATH"
RUN graalpy -m ensurepip --default-pip && \
    graalpy -m pip install --upgrade pip auditwheel setuptools wheel && \
    graalpy -m pip install meson-python ninja cython pyproject-metadata setuptools-scm pybind11
WORKDIR /workspace
CMD ["/bin/bash", "-c", "\
    graalpy -m pip wheel numpy --no-binary numpy -w /workspace && \
    graalpy -m auditwheel repair /workspace/numpy-*.whl -w /workspace/wheelhouse && \
    graalpy -m pip install /workspace/wheelhouse/numpy-*.whl && \
    graalpy -m pip wheel pandas --no-binary pandas --find-links /workspace/wheelhouse -w /workspace && \
    graalpy -m auditwheel repair /workspace/pandas-*.whl -w /workspace/wheelhouse && \
    cp /workspace/wheelhouse/*.whl /out \
"]
# docker build -t libs .
# docker run --rm -v "$PWD":/out --cpus="2" --memory="15g" --memory-swap="15g" libs

Steps To Reproduce

graalpy -m venv venv
source venv/bin/activate
docker build -t libs .
docker run --rm -v "$PWD":/out --cpus="2" --memory="15g" --memory-swap="15g" libs
pip install numpy*.whl pandas*.whl
python -c "import pandas"

Expected Behavior

import pandas succeeds.

Actual Behavior

import pandas raises RuntimeError: dictionary changed size during iteration during initialization of pandas._libs.tslibs.dtypes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingpythonPull requests that update python code

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions