oracle / oracle/graalpython

pandas 2.2.3 import fails with RuntimeError on GraalPy 25.0.2

Open
#944 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug python
Dominant language
Python
Stars
1.6k
Forks
155
Avg merge
9h 42m
Merged PRs (30d)
36

Description

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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure with the Dockerfile and commands provided, then start at pandas._libs.tslibs.dtypes, identified in the traceback as dtypes.pyx during import. Trace the initialization that raises the dictionary-size error and verify the work is done when the supplied python -c "import pandas" command succeeds on GraalPy 25.0.2.

Written by the indexing model from the issue text.

Assessment

Tech stack
numpy, pandas, python
Domain
devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.