diff --git a/jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu b/jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu index 8e340625e9..2ae7f25056 100644 --- a/jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu +++ b/jupyter/datascience/ubi9-python-3.12/Dockerfile.cpu @@ -53,6 +53,52 @@ RUN curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/oc rm -f /tmp/openshift-client-linux.tar.gz # Install the oc client end +####################################################### +# common-builder (for Power-only) +####################################################### +FROM cpu-base AS common-builder +USER root +RUN if [ "$(uname -m)" = "ppc64le" ]; then \ + dnf install -y gcc-toolset-13 cmake ninja-build git wget unzip && \ + dnf clean all; \ + else \ + echo "Skipping common-builder package install on non-Power"; \ + fi + +####################################################### +# onnx-builder (Power-only) +####################################################### +FROM common-builder AS onnx-builder +ARG ONNX_VERSION=v1.19.0 +WORKDIR /root +RUN if [ "$(uname -m)" = "ppc64le" ]; then \ + source /opt/rh/gcc-toolset-13/enable && \ + git clone --recursive https://github.com/onnx/onnx.git && \ + cd onnx && git checkout ${ONNX_VERSION} && \ + git submodule update --init --recursive && \ + pip install -r requirements.txt && \ + export CMAKE_ARGS="-DPython3_EXECUTABLE=$(which python3.12)" && \ + pip wheel . -w /root/onnx_wheel; \ + else \ + echo "Skipping ONNX build on non-Power"; \ + mkdir -p /root/onnx_wheel; \ + fi + +####################################################### +# openblas-builder (Power-only) +####################################################### +FROM common-builder AS openblas-builder +ARG OPENBLAS_VERSION=0.3.30 +WORKDIR /root +RUN if [ "$(uname -m)" = "ppc64le" ]; then \ + wget https://github.com/OpenMathLib/OpenBLAS/releases/download/v${OPENBLAS_VERSION}/OpenBLAS-${OPENBLAS_VERSION}.zip && \ + unzip OpenBLAS-${OPENBLAS_VERSION}.zip && \ + cd OpenBLAS-${OPENBLAS_VERSION} && \ + make -j$(nproc) TARGET=POWER9 BINARY=64 USE_OPENMP=1 USE_THREAD=1 NUM_THREADS=120 DYNAMIC_ARCH=1 INTERFACE64=0; \ + else \ + mkdir -p OpenBLAS-${OPENBLAS_VERSION}; \ + echo "Skipping OpenBLAS build on non-Power"; \ + fi #################### # jupyter-minimal # #################### @@ -85,6 +131,7 @@ ENTRYPOINT ["start-notebook.sh"] FROM jupyter-minimal AS jupyter-datascience ARG DATASCIENCE_SOURCE_CODE=jupyter/datascience/ubi9-python-3.12 +ARG OPENBLAS_VERSION=0.3.30 LABEL name="odh-notebook-jupyter-datascience-ubi9-python-3.12" \ summary="Jupyter data science notebook image for ODH notebooks" \ @@ -102,15 +149,29 @@ WORKDIR /opt/app-root/bin USER root # Install useful OS packages -RUN dnf install -y jq unixODBC postgresql git-lfs libsndfile libxcrypt-compat && dnf clean all && rm -rf /var/cache/yum +RUN dnf install -y jq unixODBC unixODBC-devel postgresql git-lfs libsndfile libxcrypt-compat && \ + dnf clean all && rm -rf /var/cache/yum # Copy dynamically-linked mongocli built in earlier build stage COPY --from=mongocli-builder /tmp/mongocli /opt/app-root/bin/ -# Other apps and tools installed as default user -USER 1001 -# Install Python packages and Jupyterlab extensions from requirements.txt +ENV PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ + +# Copy OpenBLAS,ONNX wheels for Power +COPY --from=openblas-builder /root/OpenBLAS-${OPENBLAS_VERSION} /openblas +COPY --from=onnx-builder /root/onnx_wheel/ /onnxwheels/ + +# Power-specific ONNX/OpenBLAS installation +RUN if [ "$(uname -m)" = "ppc64le" ]; then \ + pip install /onnxwheels/*.whl && \ + PREFIX=/usr/local make -C /openblas install && \ + rm -rf /onnxwheels /openblas; \ + else \ + echo "Skipping ONNX/OpenBLAS install on non-Power"; \ + fi + +# Install Python packages and Jupyterlab extensions from pylock.toml COPY ${DATASCIENCE_SOURCE_CODE}/pylock.toml ./ # Copy Elyra setup to utils so that it's sourced at startup COPY ${DATASCIENCE_SOURCE_CODE}/setup-elyra.sh ${DATASCIENCE_SOURCE_CODE}/utils ./utils/ diff --git a/jupyter/datascience/ubi9-python-3.12/Dockerfile.konflux.cpu b/jupyter/datascience/ubi9-python-3.12/Dockerfile.konflux.cpu index 7fa3d13959..e4711f1da8 100644 --- a/jupyter/datascience/ubi9-python-3.12/Dockerfile.konflux.cpu +++ b/jupyter/datascience/ubi9-python-3.12/Dockerfile.konflux.cpu @@ -11,10 +11,24 @@ FROM registry.access.redhat.com/ubi9/go-toolset:latest AS mongocli-builder ARG MONGOCLI_VERSION=2.0.4 WORKDIR /tmp/ -RUN curl -Lo mongodb-cli-mongocli-v${MONGOCLI_VERSION}.zip https://github.com/mongodb/mongodb-cli/archive/refs/tags/mongocli/v${MONGOCLI_VERSION}.zip -RUN unzip ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}.zip -RUN cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ - CGO_ENABLED=1 GOOS=linux go build -a -tags strictfipsruntime -o /tmp/mongocli ./cmd/mongocli/ + +ARG TARGETARCH + +# Keep s390x special-case from original (create dummy binary) but +# include explicit curl/unzip steps from the delta for non-s390x. +RUN arch="${TARGETARCH:-$(uname -m)}" && \ + arch=$(echo "$arch" | cut -d- -f1) && \ + if [ "$arch" = "s390x" ]; then \ + echo "Skipping mongocli build for ${arch}, creating dummy binary"; \ + mkdir -p /tmp && echo -e '#!/bin/sh\necho "mongocli not supported on s390x"' > /tmp/mongocli && \ + chmod +x /tmp/mongocli; \ + else \ + echo "Building mongocli for ${arch}"; \ + curl -Lo mongodb-cli-mongocli-v${MONGOCLI_VERSION}.zip https://github.com/mongodb/mongodb-cli/archive/refs/tags/mongocli/v${MONGOCLI_VERSION}.zip && \ + unzip ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}.zip && \ + cd ./mongodb-cli-mongocli-v${MONGOCLI_VERSION}/ && \ + CGO_ENABLED=1 GOOS=linux GOARCH=${arch} GO111MODULE=on go build -a -tags strictfipsruntime -o /tmp/mongocli ./cmd/mongocli/; \ + fi #################### # cpu-base # @@ -25,6 +39,7 @@ WORKDIR /opt/app-root/bin # OS Packages needs to be installed as root USER root +ARG TARGETARCH # Inject the official UBI 9 repository configuration into the AIPCC base image. # The Quay-based AIPCC image is "repo-less" by default (https://gitlab.com/redhat/rhel-ai/core/base-images/app#repositories), so dnf cannot upgrade or install packages. @@ -37,7 +52,38 @@ RUN dnf -y upgrade --refresh --best --nodocs --noplugins --setopt=install_weak_d # upgrade first to avoid fixable vulnerabilities end # Install useful OS packages -RUN dnf install -y perl mesa-libGL skopeo && dnf clean all && rm -rf /var/cache/yum +RUN --mount=type=cache,target=/var/cache/dnf \ + echo "Building for architecture: ${TARGETARCH}" && \ + if [ "$TARGETARCH" = "s390x" ]; then \ + PACKAGES="perl mesa-libGL skopeo gcc gcc-c++ make openssl-devel autoconf automake libtool cmake python3-devel pybind11-devel openblas-devel unixODBC-devel"; \ + else \ + PACKAGES="perl mesa-libGL skopeo"; \ + fi && \ + echo "Installing: $PACKAGES" && \ + dnf install -y $PACKAGES && \ + dnf clean all && rm -rf /var/cache/yum + +RUN if [ "$TARGETARCH" = "s390x" ]; then \ + # Install Rust and set up environment + mkdir -p /opt/.cargo && \ + export HOME=/root && \ + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o rustup-init.sh && \ + chmod +x rustup-init.sh && \ + CARGO_HOME=/opt/.cargo HOME=/root ./rustup-init.sh -y --no-modify-path && \ + rm -f rustup-init.sh && \ + chown -R 1001:0 /opt/.cargo && \ + # Set environment variables + echo 'export PATH=/opt/.cargo/bin:$PATH' >> /etc/profile.d/cargo.sh && \ + echo 'export CARGO_HOME=/opt/.cargo' >> /etc/profile.d/cargo.sh && \ + echo 'export GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1' >> /etc/profile.d/cargo.sh; \ +fi + +# Set python alternatives only for s390x (not needed for other arches) +RUN if [ "$TARGETARCH" = "s390x" ]; then \ + alternatives --install /usr/bin/python python /usr/bin/python3.12 1 && \ + alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1 && \ + python --version && python3 --version; \ +fi # Other apps and tools installed as default user USER 1001 @@ -53,6 +99,113 @@ RUN curl -L https://mirror.openshift.com/pub/openshift-v4/$(uname -m)/clients/oc rm -f /tmp/openshift-client-linux.tar.gz # Install the oc client end +####################################################### +# common-builder (for Power-only) +####################################################### +FROM cpu-base AS common-builder +USER root +ARG TARGETARCH +RUN if [ "$TARGETARCH" = "ppc64le" ]; then \ + dnf install -y gcc-toolset-13 cmake ninja-build git wget unzip && \ + dnf clean all; \ + else \ + echo "Skipping common-builder package install on non-Power"; \ + fi + +####################################################### +# onnx-builder (Power-only) +####################################################### +FROM common-builder AS onnx-builder +ARG ONNX_VERSION=v1.19.0 +ARG TARGETARCH +WORKDIR /root +RUN if [ "$TARGETARCH" = "ppc64le" ]; then \ + source /opt/rh/gcc-toolset-13/enable && \ + git clone --recursive https://github.com/onnx/onnx.git && \ + cd onnx && git checkout ${ONNX_VERSION} && \ + git submodule update --init --recursive && \ + pip install -r requirements.txt && \ + export CMAKE_ARGS="-DPython3_EXECUTABLE=$(which python3.12)" && \ + pip wheel . -w /root/onnx_wheel; \ + else \ + echo "Skipping ONNX build on non-Power"; \ + mkdir -p /root/onnx_wheel; \ + fi + +####################################################### +# openblas-builder (Power-only) +####################################################### +FROM common-builder AS openblas-builder +ARG OPENBLAS_VERSION=0.3.30 +ARG TARGETARCH +WORKDIR /root +RUN if [ "$TARGETARCH" = "ppc64le" ]; then \ + wget https://github.com/OpenMathLib/OpenBLAS/releases/download/v${OPENBLAS_VERSION}/OpenBLAS-${OPENBLAS_VERSION}.zip && \ + unzip OpenBLAS-${OPENBLAS_VERSION}.zip && \ + cd OpenBLAS-${OPENBLAS_VERSION} && \ + make -j$(nproc) TARGET=POWER9 BINARY=64 USE_OPENMP=1 USE_THREAD=1 NUM_THREADS=120 DYNAMIC_ARCH=1 INTERFACE64=0; \ + else \ + mkdir -p OpenBLAS-${OPENBLAS_VERSION}; \ + echo "Skipping OpenBLAS build on non-Power"; \ + fi +############################## +# wheel-builder stage # +# NOTE: Only used in s390x +############################## +FROM cpu-base AS s390x-builder + +ARG TARGETARCH +USER 0 +WORKDIR /tmp/build-wheels + +# Build pyarrow optimized for s390x +RUN --mount=type=cache,target=/root/.cache/pip \ + --mount=type=cache,target=/root/.cache/dnf \ + if [ "$TARGETARCH" = "s390x" ]; then \ + # Install build dependencies (shared for pyarrow and onnx) + dnf install -y cmake make gcc-c++ pybind11-devel wget && \ + dnf clean all && \ + # Build and collect pyarrow wheel + git clone --depth 1 https://github.com/apache/arrow.git && \ + cd arrow/cpp && \ + mkdir release && cd release && \ + cmake -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr/local \ + -DARROW_PYTHON=ON \ + -DARROW_PARQUET=ON \ + -DARROW_ORC=ON \ + -DARROW_FILESYSTEM=ON \ + -DARROW_JSON=ON \ + -DARROW_CSV=ON \ + -DARROW_DATASET=ON \ + -DARROW_DEPENDENCY_SOURCE=BUNDLED \ + -DARROW_WITH_LZ4=OFF \ + -DARROW_WITH_ZSTD=OFF \ + -DARROW_WITH_SNAPPY=OFF \ + -DARROW_BUILD_TESTS=OFF \ + -DARROW_BUILD_BENCHMARKS=OFF \ + .. && \ + make -j$(nproc) VERBOSE=1 && \ + make install -j$(nproc) && \ + cd ../../python && \ + pip install --no-cache-dir -r requirements-build.txt && \ + PYARROW_WITH_PARQUET=1 \ + PYARROW_WITH_DATASET=1 \ + PYARROW_WITH_FILESYSTEM=1 \ + PYARROW_WITH_JSON=1 \ + PYARROW_WITH_CSV=1 \ + PYARROW_PARALLEL=$(nproc) \ + python setup.py build_ext --build-type=release --bundle-arrow-cpp bdist_wheel && \ + mkdir -p /tmp/wheels && \ + cp dist/pyarrow-*.whl /tmp/wheels/ && \ + chmod -R 777 /tmp/wheels && \ + # Ensure wheels directory exists and has content + ls -la /tmp/wheels/; \ + else \ + # Create empty wheels directory for non-s390x + mkdir -p /tmp/wheels; \ + fi + #################### # jupyter-minimal # #################### @@ -79,12 +232,15 @@ WORKDIR /opt/app-root/src ENTRYPOINT ["start-notebook.sh"] + ######################## # jupytyer-datascience # ######################## FROM jupyter-minimal AS jupyter-datascience ARG DATASCIENCE_SOURCE_CODE=jupyter/datascience/ubi9-python-3.12 +ARG OPENBLAS_VERSION=0.3.30 +ARG TARGETARCH WORKDIR /opt/app-root/bin @@ -92,11 +248,37 @@ WORKDIR /opt/app-root/bin USER root # Install useful OS packages -RUN dnf install -y jq unixODBC postgresql git-lfs libsndfile libxcrypt-compat && dnf clean all && rm -rf /var/cache/yum - +RUN dnf install -y jq unixODBC unixODBC-devel postgresql git-lfs libsndfile libxcrypt-compat && \ + dnf clean all && rm -rf /var/cache/yum # Copy dynamically-linked mongocli built in earlier build stage COPY --from=mongocli-builder /tmp/mongocli /opt/app-root/bin/ +ENV PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ + +# Copy OpenBLAS,ONNX wheels for Power +COPY --from=openblas-builder /root/OpenBLAS-${OPENBLAS_VERSION} /openblas +COPY --from=onnx-builder /root/onnx_wheel/ /onnxwheels/ + +USER 0 + +# Power-specific ONNX/OpenBLAS installation +RUN if [ "$TARGETARCH" = "ppc64le" ]; then \ + pip install /onnxwheels/*.whl && \ + PREFIX=/usr/local make -C /openblas install && \ + rm -rf /onnxwheels /openblas; \ + else \ + echo "Skipping ONNX/OpenBLAS install on non-Power"; \ + fi + +# Install Python packages and Jupyterlab extensions from pylock.toml +# Copy wheels from build stage (s390x only) +COPY --from=s390x-builder /tmp/wheels /tmp/wheels +RUN if [ "$TARGETARCH" = "s390x" ]; then \ + pip install --no-cache-dir /tmp/wheels/*.whl; \ +else \ + echo "Skipping wheel install for $TARGETARCH"; \ +fi + # Other apps and tools installed as default user USER 1001 @@ -105,19 +287,35 @@ COPY ${DATASCIENCE_SOURCE_CODE}/pylock.toml ./ # Copy Elyra setup to utils so that it's sourced at startup COPY ${DATASCIENCE_SOURCE_CODE}/setup-elyra.sh ${DATASCIENCE_SOURCE_CODE}/utils ./utils/ -RUN echo "Installing softwares and packages" && \ +RUN --mount=type=cache,target=/root/.cache/pip \ + echo "Installing softwares and packages" && \ # This may have to download and compile some dependencies, and as we don't lock requirements from `build-system.requires`, # we often don't know the correct hashes and `--require-hashes` would therefore fail on non amd64, where building is common. - uv pip install --strict --no-deps --no-cache --no-config --no-progress --verify-hashes --compile-bytecode --index-strategy=unsafe-best-match --requirements=./pylock.toml && \ + if [ "$TARGETARCH" = "s390x" ]; then \ + # For s390x, we need special flags and environment variables for building packages + GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1 \ + CFLAGS="-O3" CXXFLAGS="-O3" \ + uv pip install --strict --no-deps --no-cache --no-config --no-progress \ + --verify-hashes --compile-bytecode --index-strategy=unsafe-best-match \ + --requirements=./pylock.toml; \ + else \ + # This may have to download and compile some dependencies, and as we don't lock requirements from `build-system.requires`, + # we often don't know the correct hashes and `--require-hashes` would therefore fail on non amd64, where building is common. + uv pip install --strict --no-deps --no-cache --no-config --no-progress \ + --verify-hashes --compile-bytecode --index-strategy=unsafe-best-match \ + --requirements=./pylock.toml; \ + fi && \ # setup path for runtime configuration mkdir /opt/app-root/runtimes && \ mkdir /opt/app-root/pipeline-runtimes && \ # Remove default Elyra runtime-images \ rm /opt/app-root/share/jupyter/metadata/runtime-images/*.json && \ # Replace Notebook's launcher, "(ipykernel)" with Python's version 3.x.y \ - sed -i -e "s/Python.*/$(python --version | cut -d '.' -f-2)\",/" /opt/app-root/share/jupyter/kernels/python3/kernel.json && \ - # Copy jupyter configuration - cp /opt/app-root/bin/utils/jupyter_server_config.py /opt/app-root/etc/jupyter && \ + sed -i -e "s/Python.*/$(python --version | cut -d '.' -f-2)\",/" \ + /opt/app-root/share/jupyter/kernels/python3/kernel.json && \ + # copy jupyter configuration + install -D -m 0644 /opt/app-root/bin/utils/jupyter_server_config.py \ + /opt/app-root/etc/jupyter/jupyter_server_config.py && \ # Disable announcement plugin of jupyterlab \ jupyter labextension disable "@jupyterlab/apputils-extension:announcements" && \ # Apply JupyterLab addons \ diff --git a/jupyter/datascience/ubi9-python-3.12/build-args/cpu.conf b/jupyter/datascience/ubi9-python-3.12/build-args/cpu.conf index c47e3a8c14..cc7c73581a 100644 --- a/jupyter/datascience/ubi9-python-3.12/build-args/cpu.conf +++ b/jupyter/datascience/ubi9-python-3.12/build-args/cpu.conf @@ -1,4 +1 @@ -# Base Image : RHEL 9.6 with Python 3.12 -# Architectures: linux/arm64, linux/ppc64le, linux/x86_64 -# Source : https://quay.io/repository/aipcc/base-images/cpu -BASE_IMAGE=quay.io/aipcc/base-images/cpu:3.0-1756380321 +BASE_IMAGE=registry.access.redhat.com/ubi9/python-312:latest diff --git a/jupyter/datascience/ubi9-python-3.12/pylock.toml b/jupyter/datascience/ubi9-python-3.12/pylock.toml index 6990bc5b43..a11cde739a 100644 --- a/jupyter/datascience/ubi9-python-3.12/pylock.toml +++ b/jupyter/datascience/ubi9-python-3.12/pylock.toml @@ -105,6 +105,7 @@ wheels = [ [[packages]] name = "aiohttp-cors" version = "0.8.1" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/d89e846a5444b3d5eb8985a6ddb0daef3774928e1bfbce8e84ec97b0ffa7/aiohttp_cors-0.8.1.tar.gz", upload-time = 2025-03-31T14:16:20Z, size = 38626, hashes = { sha256 = "ccacf9cb84b64939ea15f859a146af1f662a6b1d68175754a07315e305fb1403" } } wheels = [{ url = "https://files.pythonhosted.org/packages/98/3b/40a68de458904bcc143622015fff2352b6461cd92fd66d3527bf1c6f5716/aiohttp_cors-0.8.1-py3-none-any.whl", upload-time = 2025-03-31T14:16:18Z, size = 25231, hashes = { sha256 = "3180cf304c5c712d626b9162b195b1db7ddf976a2a25172b35bb2448b890a80d" } }] @@ -215,6 +216,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc [[packages]] name = "bcrypt" version = "4.3.0" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/bb/5d/6d7433e0f3cd46ce0b43cd65e1db465ea024dbb8216fb2404e919c2ad77b/bcrypt-4.3.0.tar.gz", upload-time = 2025-02-28T01:24:09Z, size = 25697, hashes = { sha256 = "3a3fd2204178b6d2adcf09cb4f6426ffef54762577a7c9b54c159008cb288c18" } } wheels = [ { url = "https://files.pythonhosted.org/packages/bf/2c/3d44e853d1fe969d229bd58d39ae6902b3d924af0e2b5a60d17d4b809ded/bcrypt-4.3.0-cp313-cp313t-macosx_10_12_universal2.whl", upload-time = 2025-02-28T01:22:34Z, size = 483719, hashes = { sha256 = "f01e060f14b6b57bbb72fc5b4a83ac21c443c9a2ee708e04a10e9192f90a6281" } }, @@ -523,6 +525,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd039706778 [[packages]] name = "codeflare-sdk" version = "0.30.0" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/f8/05/c5c28624257bbec79216ac9b07fe7c64f61b5188896a4073fbb5c6a20b89/codeflare_sdk-0.30.0.tar.gz", upload-time = 2025-07-08T13:20:55Z, size = 86087, hashes = { sha256 = "79923eddea43476c65b743c4341d613a39891a04a519720c015a9c28eb0d4b0d" } } wheels = [{ url = "https://files.pythonhosted.org/packages/93/42/ed130972b4dc02e84c26970667e5afdcc5a52ddd21b8fcb5c9a08e2dace5/codeflare_sdk-0.30.0-py3-none-any.whl", upload-time = 2025-07-08T13:20:53Z, size = 134978, hashes = { sha256 = "d7cb1e1d83da104701e5a72124b3545b5a62e3b3e29e1a11edbbc66893f3b645" } }] @@ -535,6 +538,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e [[packages]] name = "colorful" version = "0.5.7" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/0c/0c/d180ebf230b771907f46981023a80f62cf592d49673cc5f8a5993aa67bb6/colorful-0.5.7.tar.gz", upload-time = 2025-06-30T15:24:03Z, size = 209487, hashes = { sha256 = "c5452179b56601c178b03d468a5326cc1fe37d9be81d24d0d6bdab36c4b93ad8" } } wheels = [{ url = "https://files.pythonhosted.org/packages/e2/98/0d791b3d1eaed89d7d370b5cf9b8079b124da0545559417f394ba21b5532/colorful-0.5.7-py2.py3-none-any.whl", upload-time = 2025-06-30T15:24:02Z, size = 201475, hashes = { sha256 = "495dd3a23151a9568cee8a90fc1174c902ad7ef06655f50b6bddf9e80008da69" } }] @@ -721,6 +725,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/50/3d/9373ad9c56321fd [[packages]] name = "distlib" version = "0.4.0" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/96/8e/709914eb2b5749865801041647dc7f4e6d00b549cfe88b65ca192995f07c/distlib-0.4.0.tar.gz", upload-time = 2025-07-17T16:52:00Z, size = 614605, hashes = { sha256 = "feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d" } } wheels = [{ url = "https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl", upload-time = 2025-07-17T16:51:58Z, size = 469047, hashes = { sha256 = "9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16" } }] @@ -763,6 +768,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/cb/a8/20d0723294217e4 [[packages]] name = "filelock" version = "3.19.1" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/40/bb/0ab3e58d22305b6f5440629d20683af28959bf793d98d11950e305c1c326/filelock-3.19.1.tar.gz", upload-time = 2025-08-14T16:56:03Z, size = 17687, hashes = { sha256 = "66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58" } } wheels = [{ url = "https://files.pythonhosted.org/packages/42/14/42b2651a2f46b022ccd948bca9f2d5af0fd8929c4eec235b8d6d844fbe67/filelock-3.19.1-py3-none-any.whl", upload-time = 2025-08-14T16:56:01Z, size = 15988, hashes = { sha256 = "d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d" } }] @@ -1000,6 +1006,7 @@ wheels = [ [[packages]] name = "fsspec" version = "2025.9.0" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/de/e0/bab50af11c2d75c9c4a2a26a5254573c0bd97cea152254401510950486fa/fsspec-2025.9.0.tar.gz", upload-time = 2025-09-02T19:10:49Z, size = 304847, hashes = { sha256 = "19fd429483d25d28b65ec68f9f4adc16c17ea2c7c7bf54ec61360d478fb19c19" } } wheels = [{ url = "https://files.pythonhosted.org/packages/47/71/70db47e4f6ce3e5c37a607355f80da8860a33226be640226ac52cb05ef2e/fsspec-2025.9.0-py3-none-any.whl", upload-time = 2025-09-02T19:10:47Z, size = 199289, hashes = { sha256 = "530dc2a2af60a414a832059574df4a6e10cce927f6f4a78209390fe38955cfb7" } }] @@ -1094,7 +1101,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/86/f1/62a193f0227cf15 [[packages]] name = "grpcio" version = "1.74.0" -marker = "python_full_version >= '3.10'" +marker = "python_full_version >= '3.10' and platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/38/b4/35feb8f7cab7239c5b94bd2db71abb3d6adb5f335ad8f131abb6060840b6/grpcio-1.74.0.tar.gz", upload-time = 2025-07-24T18:54:23Z, size = 12756048, hashes = { sha256 = "80d1f4fbb35b0742d3e3d3bb654b7381cd5f015f8497279a1e9c21ba623e01b1" } } wheels = [ { url = "https://files.pythonhosted.org/packages/66/54/68e51a90797ad7afc5b0a7881426c337f6a9168ebab73c3210b76aa7c90d/grpcio-1.74.0-cp310-cp310-linux_armv7l.whl", upload-time = 2025-07-24T18:52:43Z, size = 5481935, hashes = { sha256 = "85bd5cdf4ed7b2d6438871adf6afff9af7096486fcf51818a81b77ef4dd30907" } }, @@ -1182,6 +1189,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521 [[packages]] name = "invoke" version = "2.2.0" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/f9/42/127e6d792884ab860defc3f4d80a8f9812e48ace584ffc5a346de58cdc6c/invoke-2.2.0.tar.gz", upload-time = 2023-07-12T18:05:17Z, size = 299835, hashes = { sha256 = "ee6cbb101af1a859c7fe84f2a264c059020b0cb7fe3535f9424300ab568f6bd5" } } wheels = [{ url = "https://files.pythonhosted.org/packages/0a/66/7f8c48009c72d73bc6bbe6eb87ac838d6a526146f7dab14af671121eb379/invoke-2.2.0-py3-none-any.whl", upload-time = 2023-07-12T18:05:16Z, size = 160274, hashes = { sha256 = "6ea924cc53d4f78e3d98bc436b08069a03077e6f85ad1ddaa8a116d7dad15820" } }] @@ -1532,6 +1540,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/5a/33/68c6c3819368453 [[packages]] name = "markdown-it-py" version = "4.0.0" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", upload-time = 2025-08-11T12:57:52Z, size = 73070, hashes = { sha256 = "cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3" } } wheels = [{ url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", upload-time = 2025-08-11T12:57:51Z, size = 87321, hashes = { sha256 = "87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147" } }] @@ -1678,6 +1687,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c20793 [[packages]] name = "mdurl" version = "0.1.2" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", upload-time = 2022-08-14T12:40:10Z, size = 8729, hashes = { sha256 = "bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba" } } wheels = [{ url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", upload-time = 2022-08-14T12:40:09Z, size = 9979, hashes = { sha256 = "84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8" } }] @@ -1743,6 +1753,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/bd/d9/617e6af809bf3a1 [[packages]] name = "msgpack" version = "1.1.1" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/45/b1/ea4f68038a18c77c9467400d166d74c4ffa536f34761f7983a104357e614/msgpack-1.1.1.tar.gz", upload-time = 2025-06-13T06:52:51Z, size = 173555, hashes = { sha256 = "77b79ce34a2bdab2594f490c8e80dd62a02d650b91a75159a63ec413b8d104cd" } } wheels = [ { url = "https://files.pythonhosted.org/packages/33/52/f30da112c1dc92cf64f57d08a273ac771e7b29dea10b4b30369b2d7e8546/msgpack-1.1.1-cp310-cp310-macosx_10_9_x86_64.whl", upload-time = 2025-06-13T06:51:37Z, size = 81799, hashes = { sha256 = "353b6fc0c36fde68b661a12949d7d49f8f51ff5fa019c1e47c87c4ff34b080ed" } }, @@ -2142,48 +2153,56 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/51/a4/4439174c879c335 [[packages]] name = "opencensus" version = "0.11.4" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/15/a7/a46dcffa1b63084f9f17fe3c8cb20724c4c8f91009fd0b2cfdb27d5d2b35/opencensus-0.11.4.tar.gz", upload-time = 2024-01-03T18:04:07Z, size = 64966, hashes = { sha256 = "cbef87d8b8773064ab60e5c2a1ced58bbaa38a6d052c41aec224958ce544eff2" } } wheels = [{ url = "https://files.pythonhosted.org/packages/b5/ed/9fbdeb23a09e430d87b7d72d430484b88184633dc50f6bfb792354b6f661/opencensus-0.11.4-py2.py3-none-any.whl", upload-time = 2024-01-03T18:04:05Z, size = 128225, hashes = { sha256 = "a18487ce68bc19900336e0ff4655c5a116daf10c1b3685ece8d971bddad6a864" } }] [[packages]] name = "opencensus-context" version = "0.1.3" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/4c/96/3b6f638f6275a8abbd45e582448723bffa29c1fb426721dedb5c72f7d056/opencensus-context-0.1.3.tar.gz", upload-time = 2022-08-03T22:20:22Z, size = 4066, hashes = { sha256 = "a03108c3c10d8c80bb5ddf5c8a1f033161fa61972a9917f9b9b3a18517f0088c" } } wheels = [{ url = "https://files.pythonhosted.org/packages/10/68/162c97ea78c957d68ecf78a5c5041d2e25bd5562bdf5d89a6cbf7f8429bf/opencensus_context-0.1.3-py2.py3-none-any.whl", upload-time = 2022-08-03T22:20:20Z, size = 5060, hashes = { sha256 = "073bb0590007af276853009fac7e4bab1d523c3f03baf4cb4511ca38967c6039" } }] [[packages]] name = "openshift-client" version = "1.0.18" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/61/4d/96d40621a88e430127f98467b6ef67ff2e39f2d33b9740ea0e470cf2b8bc/openshift-client-1.0.18.tar.gz", upload-time = 2022-09-13T22:08:36Z, size = 78332, hashes = { sha256 = "be3979440cfd96788146a3a1650dabe939d4d516eea0b39f87e66d2ab39495b1" } } wheels = [{ url = "https://files.pythonhosted.org/packages/1d/23/a84f274a534dfcd8454f20fc19d129a7d832e5816830946670b8c954438c/openshift_client-1.0.18-py2.py3-none-any.whl", upload-time = 2022-09-13T22:08:35Z, size = 75076, hashes = { sha256 = "d8a84080307ccd9556f6c62a3707a3e6507baedee36fa425754f67db9ded528b" } }] [[packages]] name = "opentelemetry-api" version = "1.36.0" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/27/d2/c782c88b8afbf961d6972428821c302bd1e9e7bc361352172f0ca31296e2/opentelemetry_api-1.36.0.tar.gz", upload-time = 2025-07-29T15:12:06Z, size = 64780, hashes = { sha256 = "9a72572b9c416d004d492cbc6e61962c0501eaf945ece9b5a0f56597d8348aa0" } } wheels = [{ url = "https://files.pythonhosted.org/packages/bb/ee/6b08dde0a022c463b88f55ae81149584b125a42183407dc1045c486cc870/opentelemetry_api-1.36.0-py3-none-any.whl", upload-time = 2025-07-29T15:11:47Z, size = 65564, hashes = { sha256 = "02f20bcacf666e1333b6b1f04e647dc1d5111f86b8e510238fcc56d7762cda8c" } }] [[packages]] name = "opentelemetry-exporter-prometheus" version = "0.57b0" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/d6/d8/5f04c6d51c0823c3d8ac973a2a38db6fcf2d040ca3f08fc66b3c14b6e164/opentelemetry_exporter_prometheus-0.57b0.tar.gz", upload-time = 2025-07-29T15:12:09Z, size = 14906, hashes = { sha256 = "9eb15bdc189235cf03c3f93abf56f8ff0ab57a493a189263bd7fe77a4249e689" } } wheels = [{ url = "https://files.pythonhosted.org/packages/c1/1c/40fb93a7b7e495985393bbc734104d5d20e470811644dd56c2402d683739/opentelemetry_exporter_prometheus-0.57b0-py3-none-any.whl", upload-time = 2025-07-29T15:11:54Z, size = 12922, hashes = { sha256 = "c5b893d1cdd593fb022af2c7de3258c2d5a4d04402ae80d9fa35675fed77f05c" } }] [[packages]] name = "opentelemetry-proto" version = "1.27.0" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/9a/59/959f0beea798ae0ee9c979b90f220736fbec924eedbefc60ca581232e659/opentelemetry_proto-1.27.0.tar.gz", upload-time = 2024-08-28T21:35:45Z, size = 34749, hashes = { sha256 = "33c9345d91dafd8a74fc3d7576c5a38f18b7fdf8d02983ac67485386132aedd6" } } wheels = [{ url = "https://files.pythonhosted.org/packages/94/56/3d2d826834209b19a5141eed717f7922150224d1a982385d19a9444cbf8d/opentelemetry_proto-1.27.0-py3-none-any.whl", upload-time = 2024-08-28T21:35:21Z, size = 52464, hashes = { sha256 = "b133873de5581a50063e1e4b29cdcf0c5e253a8c2d8dc1229add20a4c3830ace" } }] [[packages]] name = "opentelemetry-sdk" version = "1.36.0" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/4c/85/8567a966b85a2d3f971c4d42f781c305b2b91c043724fa08fd37d158e9dc/opentelemetry_sdk-1.36.0.tar.gz", upload-time = 2025-07-29T15:12:16Z, size = 162557, hashes = { sha256 = "19c8c81599f51b71670661ff7495c905d8fdf6976e41622d5245b791b06fa581" } } wheels = [{ url = "https://files.pythonhosted.org/packages/0b/59/7bed362ad1137ba5886dac8439e84cd2df6d087be7c09574ece47ae9b22c/opentelemetry_sdk-1.36.0-py3-none-any.whl", upload-time = 2025-07-29T15:12:03Z, size = 119995, hashes = { sha256 = "19fe048b42e98c5c1ffe85b569b7073576ad4ce0bcb6e9b4c6a39e890a6c45fb" } }] [[packages]] name = "opentelemetry-semantic-conventions" version = "0.57b0" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/7e/31/67dfa252ee88476a29200b0255bda8dfc2cf07b56ad66dc9a6221f7dc787/opentelemetry_semantic_conventions-0.57b0.tar.gz", upload-time = 2025-07-29T15:12:17Z, size = 124225, hashes = { sha256 = "609a4a79c7891b4620d64c7aac6898f872d790d75f22019913a660756f27ff32" } } wheels = [{ url = "https://files.pythonhosted.org/packages/05/75/7d591371c6c39c73de5ce5da5a2cc7b72d1d1cd3f8f4638f553c01c37b11/opentelemetry_semantic_conventions-0.57b0-py3-none-any.whl", upload-time = 2025-07-29T15:12:04Z, size = 201627, hashes = { sha256 = "757f7e76293294f124c827e514c2a3144f191ef175b069ce8d1211e1e38e9e78" } }] @@ -2262,6 +2281,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/61/55/83ce641bc61a70c [[packages]] name = "paramiko" version = "4.0.0" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/1f/e7/81fdcbc7f190cdb058cffc9431587eb289833bdd633e2002455ca9bb13d4/paramiko-4.0.0.tar.gz", upload-time = 2025-08-04T01:02:03Z, size = 1630743, hashes = { sha256 = "6a25f07b380cc9c9a88d2b920ad37167ac4667f8d9886ccebd8f90f654b5d69f" } } wheels = [{ url = "https://files.pythonhosted.org/packages/a9/90/a744336f5af32c433bd09af7854599682a383b37cfd78f7de263de6ad6cb/paramiko-4.0.0-py3-none-any.whl", upload-time = 2025-08-04T01:02:02Z, size = 223932, hashes = { sha256 = "0e20e00ac666503bf0b4eda3b6d833465a2b7aff2e2b3d79a8bba5ef144ee3b9" } }] @@ -2595,7 +2615,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593 [[packages]] name = "py-spy" version = "0.4.1" -marker = "python_full_version >= '3.12'" +marker = "python_full_version >= '3.12' and platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/19/e2/ff811a367028b87e86714945bb9ecb5c1cc69114a8039a67b3a862cef921/py_spy-0.4.1.tar.gz", upload-time = 2025-07-31T19:33:25Z, size = 244726, hashes = { sha256 = "e53aa53daa2e47c2eef97dd2455b47bb3a7e7f962796a86cc3e7dbde8e6f4db4" } } wheels = [ { url = "https://files.pythonhosted.org/packages/14/e3/3a32500d845bdd94f6a2b4ed6244982f42ec2bc64602ea8fcfe900678ae7/py_spy-0.4.1-py2.py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", upload-time = 2025-07-31T19:33:13Z, size = 3682508, hashes = { sha256 = "809094208c6256c8f4ccadd31e9a513fe2429253f48e20066879239ba12cd8cc" } }, @@ -2610,6 +2630,7 @@ wheels = [ [[packages]] name = "pyarrow" version = "21.0.0" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/ef/c2/ea068b8f00905c06329a3dfcd40d0fcc2b7d0f2e355bdb25b65e0a0e4cd4/pyarrow-21.0.0.tar.gz", upload-time = 2025-07-18T00:57:31Z, size = 1133487, hashes = { sha256 = "5051f2dccf0e283ff56335760cbc8622cf52264d67e359d5569541ac11b6d5bc" } } wheels = [ { url = "https://files.pythonhosted.org/packages/17/d9/110de31880016e2afc52d8580b397dbe47615defbf09ca8cf55f56c62165/pyarrow-21.0.0-cp310-cp310-macosx_12_0_arm64.whl", upload-time = 2025-07-18T00:54:34Z, size = 31196837, hashes = { sha256 = "e563271e2c5ff4d4a4cbeb2c83d5cf0d4938b891518e676025f7268c6fe5fe26" } }, @@ -2731,6 +2752,7 @@ wheels = [ [[packages]] name = "pydantic" version = "1.10.22" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/9a/57/5996c63f0deec09e9e901a2b838247c97c6844999562eac4e435bcb83938/pydantic-1.10.22.tar.gz", upload-time = 2025-04-24T13:38:43Z, size = 356771, hashes = { sha256 = "ee1006cebd43a8e7158fb7190bb8f4e2da9649719bff65d0c287282ec38dec6d" } } wheels = [ { url = "https://files.pythonhosted.org/packages/88/92/91eb5c75a1460292e1f2f3e577122574ebb942fbac19ad2369ff00b9eb24/pydantic-1.10.22-cp310-cp310-macosx_10_9_x86_64.whl", upload-time = 2025-04-24T13:36:55Z, size = 2852481, hashes = { sha256 = "57889565ccc1e5b7b73343329bbe6198ebc472e3ee874af2fa1865cfe7048228" } }, @@ -3144,6 +3166,7 @@ wheels = [ [[packages]] name = "ray" version = "2.47.1" +marker = "platform_machine != 'ppc64le'" wheels = [ { url = "https://files.pythonhosted.org/packages/92/fe/2f1fc21b7a321385fe34fd159c27245c06bad795aba7de71f29e7a00e741/ray-2.47.1-cp310-cp310-macosx_11_0_arm64.whl", upload-time = 2025-06-17T22:26:11Z, size = 66145880, hashes = { sha256 = "36a30930e8d265e708df96f37f6f1f5484f4b97090d505912f992e045a69d310" } }, { url = "https://files.pythonhosted.org/packages/87/4a/60b0ce7dc1ac04e9c48fc398afed557f0f0cb3fd74c07cb71b567a041157/ray-2.47.1-cp310-cp310-macosx_12_0_x86_64.whl", upload-time = 2025-06-17T22:26:18Z, size = 68562947, hashes = { sha256 = "7c03a1e366d3a868a55f8c2f728f5ce35ac85ddf093ac81d0c1a35bf1c25c377" } }, @@ -3222,6 +3245,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/7e/71/44ce230e1b7fadd [[packages]] name = "rich" version = "13.9.4" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", upload-time = 2024-11-01T16:43:57Z, size = 223149, hashes = { sha256 = "439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098" } } wheels = [{ url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", upload-time = 2024-11-01T16:43:55Z, size = 242424, hashes = { sha256 = "6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90" } }] @@ -3584,6 +3608,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/08/de/e8825727acd8048 [[packages]] name = "smart-open" version = "7.3.1" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/16/be/bf2d60280a9d7fac98ece2150a22538fa4332cda67d04d9618c8406f791e/smart_open-7.3.1.tar.gz", upload-time = 2025-09-08T10:03:53Z, size = 51405, hashes = { sha256 = "b33fee8dffd206f189d5e704106a8723afb4210d2ff47e0e1f7fbe436187a990" } } wheels = [{ url = "https://files.pythonhosted.org/packages/e5/d9/460cf1d58945dd771c228c29d5664f431dfc4060d3d092fed40546b11472/smart_open-7.3.1-py3-none-any.whl", upload-time = 2025-09-08T10:03:52Z, size = 61722, hashes = { sha256 = "e243b2e7f69d6c0c96dd763d6fbbedbb4e0e4fc6d74aa007acc5b018d523858c" } }] @@ -3812,6 +3837,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/33/cf/8435d5a7159e2a9 [[packages]] name = "virtualenv" version = "20.34.0" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/1c/14/37fcdba2808a6c615681cd216fecae00413c9dab44fb2e57805ecf3eaee3/virtualenv-20.34.0.tar.gz", upload-time = 2025-08-13T14:24:07Z, size = 6003808, hashes = { sha256 = "44815b2c9dee7ed86e387b842a84f20b93f7f417f95886ca1996a72a4138eb1a" } } wheels = [{ url = "https://files.pythonhosted.org/packages/76/06/04c8e804f813cf972e3262f3f8584c232de64f0cde9f703b46cf53a45090/virtualenv-20.34.0-py3-none-any.whl", upload-time = 2025-08-13T14:24:05Z, size = 5983279, hashes = { sha256 = "341f5afa7eee943e4984a9207c025feedd768baff6753cd660c857ceb3e36026" } }] @@ -3896,6 +3922,7 @@ wheels = [{ url = "https://files.pythonhosted.org/packages/ca/51/5447876806d1088 [[packages]] name = "wrapt" version = "1.17.3" +marker = "platform_machine != 'ppc64le'" sdist = { url = "https://files.pythonhosted.org/packages/95/8f/aeb76c5b46e273670962298c23e7ddde79916cb74db802131d49a85e4b7d/wrapt-1.17.3.tar.gz", upload-time = 2025-08-12T05:53:21Z, size = 55547, hashes = { sha256 = "f66eb08feaa410fe4eebd17f2a2c8e2e46d3476e9f8c783daa8e09e0faa666d0" } } wheels = [ { url = "https://files.pythonhosted.org/packages/3f/23/bb82321b86411eb51e5a5db3fb8f8032fd30bd7c2d74bfe936136b2fa1d6/wrapt-1.17.3-cp310-cp310-macosx_10_9_universal2.whl", upload-time = 2025-08-12T05:51:44Z, size = 53482, hashes = { sha256 = "88bbae4d40d5a46142e70d58bf664a89b6b4befaea7b2ecc14e03cedb8e06c04" } }, diff --git a/jupyter/datascience/ubi9-python-3.12/pyproject.toml b/jupyter/datascience/ubi9-python-3.12/pyproject.toml index 92edcb9b58..b402b97cd1 100644 --- a/jupyter/datascience/ubi9-python-3.12/pyproject.toml +++ b/jupyter/datascience/ubi9-python-3.12/pyproject.toml @@ -16,7 +16,7 @@ dependencies = [ "scipy~=1.15.2", "skl2onnx~=1.18.0", "onnxconverter-common~=1.13.0", # Required for skl2onnx, as upgraded version is not compatible with protobuf - "codeflare-sdk~=0.30.0", + "codeflare-sdk~=0.30.0; platform_machine != 'ppc64le'", "kubeflow-training==1.9.3", # DB connectors