From ed49a8c0e7d970f37d31e49a029c4ef80df09c0c Mon Sep 17 00:00:00 2001 From: rajeshgangireddy Date: Mon, 21 Sep 2026 19:28:03 +0200 Subject: [PATCH 01/15] pixi: add xpu environment (py312/py313/py314) torch/triton-xpu from the pytorch xpu wheel index, own solve-groups so they don't affect the existing cuda/cpu environments. --- pixi.lock | 4136 +++++++++++++++++++++++++++++++++++++++++++++++- pyproject.toml | 17 + 2 files changed, 4098 insertions(+), 55 deletions(-) diff --git a/pixi.lock b/pixi.lock index ab87343a..88a52029 100644 --- a/pixi.lock +++ b/pixi.lock @@ -1,7 +1,16 @@ version: 7 platforms: - name: linux-64 + virtual-packages: + - __unix=0=0 + - __linux=4.18 + - __glibc=2.28 + - __archspec=0=x86_64 - name: osx-arm64 + virtual-packages: + - __unix=0=0 + - __osx=13.0 + - __archspec=0=m1 environments: default: channels: @@ -2404,6 +2413,992 @@ environments: - pypi: https://files.pythonhosted.org/packages/fa/18/623c77619c31d62efd55302939756966f3ecc8d724a14dab2b75f1508850/nvidia_cusparse-12.6.3.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/fd/3c/6a2bf344106328fd04963664a60b9bb6496fc25df8e962fcdc1367285fb9/fsspec-2026.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/fd/53/43b0d71f4e702fa9733f8b4571fdca50a8813f1e450b656c239beff12315/nvidia_cusparselt_cu13-0.8.0-py3-none-manylinux2014_x86_64.whl + xpu: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16.1-h7cc23a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.7.0-py312h3f22e6b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-h505cf86_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-h9908984_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py312he9c40d5_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.8-hebe6cf0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3c89d7e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py312h703531f_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-4.4.3-hff7ac6b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/comrak-0.55.0-hf19af3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.4.0-py312h9be0db6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.16.1-py312h8b7ec3f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-50.0.1-py311hc91d8b8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-he8c428d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.3-h4db4eae_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.65.0-py312hfd18d64_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-h7cc23a3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.15-h54a6638_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-py310h44b86e0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-h7cc23a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.1-py312h9be0db6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-hbc21106_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h9073bf1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.46.1-default_hbd61a6d_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.2.0-hdb68285_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-11_h4a7cf45_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-h39a168f_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-ha411449_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-h018ffa1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-11_h0358290_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp23.1-23.1.1-default_h0acdd01_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-23.1.1-default_h7037f76_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.22.0-ha042cf0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-hd45a770_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.129-h7cc23a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h373387f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h280c20c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.7.0-h81df57d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h5e6c136_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.2.0-h69a702a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-16.2.0-h69a702a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-16.2.0-h6b99dfc_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.90.0-h569388d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.4.0-h23af247_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h0cb94f2_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.2.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-11_h47877c9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm23-23.1.1-h474f4eb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h74cf4be_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.34-pthreads_hf13c14d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.19-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h922cc85_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.6-h9d76c99_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpsl-0.23.1-hd9e3e90_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpython-3.12.14-h0c77377_3_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libraqm-0.11.0-h6406941_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.4-h13e7031_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-h6154650_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.2.0-hdf11a46_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.2-hcc2c06a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.3-hcfc3c73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.52.1-h280c20c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.357.0-h0e34353_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-hb83e432_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.38-h280c20c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.2-h51789e4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.4-hf3af7cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.4-h7df9aa5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.45-h8e12856_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.11.2-py312h6a12a82_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.2-py312hfe9aac7_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nh3-0.3.7-py310h300b7de_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.5-py312h33ff503_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-heb1ab33_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.4-h781a0a9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.6-np2py312h91ec553_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-h8b3dc9c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py312h38079b3_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h1114479_1013.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h7cc23a3_1004.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.11.2-py312hf520645_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.14-h5f976f7_3_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.11.2-pl5321h9df5c37_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-hd6e31c0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb03c661_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.18.1-py312h106c528_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.5.0-py312h7900ff3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.15.0-np2py312h32d774f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h1df4ec4_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.10-py312h5cc1888_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ty-0.0.49-h4e94fc0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py312hd9148b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-18.0.0-py312h5cc1888_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.26.0-hc1c935e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.4.1-py312h1b36aeb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.6-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-hb711507_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.48-h280c20c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-h280c20c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-h0d788c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-h7cc23a3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-h7cc23a3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-h7cc23a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-h7cc23a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.3-h7cc23a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-h7cc23a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-h7cc23a3_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hebe6cf0_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-hebe6cf0_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hce19668_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports.tarfile-1.2.0-pyhcf101f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.7.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.5.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.14-py312hd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.23-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/formulaic-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.4.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/id-1.6.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.19-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-7.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/interface_meta-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.4.0-pyhcf101f3_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.context-6.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.functools-4.6.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jeepney-0.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/keyring-25.7.0-pyha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-11.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.26.0-pyh5ded981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.3-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.2.1-pyh8b19718_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.11-pyh5ded981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.21.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.1.1-pyhc364b38_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.6.1-pyh5ded981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.14-hd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-9_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/readme_renderer-46.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-81.0.0-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/twine-7.0.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.16.0-h69aa097_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.16.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.9.0-pyh5ded981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.48.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda + - pypi: . + - pypi: git+https://github.com/nrontsis/DockQ.git?rev=ba4df5adaad7c77fd60851d0b7b05f2b77061ba2#ba4df5adaad7c77fd60851d0b7b05f2b77061ba2 + - pypi: https://download-r2.pytorch.org/whl/triton_xpu-3.7.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://download-r2.pytorch.org/whl/xpu/torch-2.11.0%2Bxpu-cp312-cp312-linux_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/00/78/9cbcc1c073b9d4918e925af1a059762265dc65004e020511b2a06fbfd020/pydssp-0.9.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/03/b8/e484ef633af3887baeeb4b6ad12743363af7cce68ae51e938e00aaa0529d/transformers-4.57.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/08/59/8d381a2cfe8d36c4f4ff9f94769ff2809bfc16014d888360b0e24c7e5c6b/tbb-2022.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/17/c2/613ca5f729b55b2f7a9c17a3cd59d3f053ee2816da2d19933acc6b8741ec/biopython-1.88-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/18/53/84099323c2ec4be98d935f63c033ac4151ee83836ca1050ede3b3aadf155/joblib-1.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/19/f2/5ba170c6195e95e42ab9e2fade98a70a078a3663af14440a67b457208041/cuequivariance_ops_torch_cu13-0.11.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/1b/d7/ffb7e58ac260737b5076e2738ce198468a4efb3ba1885bced038801c387a/intel_cmplr_lib_rt-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/1d/04/cb4e8ba80ba81790d02dcc69d7529961140fc114abde927c99e9ba9c9457/biotite-1.7.1-cp312-cp312-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/23/45/caa600acfab94560807a20a64b5830d2cd3c3202b7f1328644d70b7d6bd8/nvidia_ml_py-13.610.43-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/24/f6/f4e38bb1a81fbda3afa2d79aa95b5a5d73c838977c1f86fbf73e7dafe676/onemkl_sycl_lapack-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/28/50/f203ff3a3ddfe19308efc83c5a3a29ed02bf786732ec35e68bf9162f3365/safetensors-0.8.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/2a/09/f8d8f8f31e4483c10a906437b4ce31bdf3d6d417b73fe33f1a8b59e34228/einops-0.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2d/1e/65b59cf518c106aa755e7f7da3099027738687a862ec785060702a481320/ipython-9.17.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2e/76/932be4b50ef6ccedf9d3c6639b056a967a86258c6d9200643f01269211ca/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/33/ef/6d27fc118f58cb24886da413545a7efb0853d405fddbfd8b2d9ac09fbed4/jupyterlab_widgets-3.0.17-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/34/95/40e17e20046b7bc820d29d09ae84ec157ec8dd6e6f6cd722626292c31b2e/widgetsnbextension-4.0.16-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/37/f9/9084c945d0b3ef8f129b4f0dd21baec759761a337902b70f17a3945015dd/cloudpathlib-0.25.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/39/cc/9c0adc5861020de426ec71716b6c1bef8d90694b7d6d0a16202cdb1647f5/wcwidth-0.8.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/3e/1d/7acbedb07bf4c71cc499527c25a3ef60bf83ed41b8918e986ed7a4573bd4/onemkl_license-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/40/6b/51459a9a6ac585ab8ca1accc58a580a23b91c5272a63ccf419c8f9d52f37/intel_opencl_rt-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/41/ae/46fe3ca4fcf715cfef35b239abe705d32f355c3be4b9e94aca782a4720ae/onemkl_sycl_dft-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/41/f0/29f591bea185616cf417645ac03bd3ad9b317483ad8572160e325f7fe777/msgpack-1.2.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/43/3f/f88a53f60a472b46f4023f56d204dd7de33d34c5d2acbfa0d70a674e639e/threadpoolctl-3.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/46/2a/f9697576603dae937727827505a6126a066affb227034e77e6f9068910da/pyelftools-0.33-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/49/7e/bc668ee301350964b7be980db7d527a54a61b89a749d09bb430b4598ed3b/intel_cmplr_lib_ur-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/4a/a1/4fad3108825e2d65d812ba69a9fd3664181cfe8860e49110c92431d1629f/oneccl_devel-2021.17.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/4c/b9/fe8c54eab5a3fdfdff1839d9299d90bfce5c467186b5c9ff9fd95d55ad64/umf-1.0.3-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/4e/d0/4b9da3d9c5749bf2c93f2818af4dc306f3b3ccc671f68f6820635fd53b74/cuequivariance_torch-0.11.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/51/17/497d29cd13029f4835383d95e644d1602dafa9b7887d298ba9ea77734dce/onemkl_sycl_blas-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/52/f2/9e726e4489f947557290605e3ee33b6ba09fe5dac9213263e0ada75200cf/dna_features_viewer-3.1.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/54/6f/84908cad2d6aa5144abcf7b42709fe4fdb459bc640ec7ac5786e7693dabc/prompt_toolkit-3.0.53-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/56/9c/1342ebb460ce2afd014ec5a002adc99108e3c53a6b70f399cf64dd1f267d/nvidia_cuda_nvrtc-13.4.92-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/5d/88/4b7e2095f5d16ce1d8425efb2bf0126dd60ef659e24619bdeea85c10ef74/onemkl_sycl_sparse-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/60/f9/1f3b6ce37848c721462b4f30de08482dc27d6ffbcbba621b61ef53e28d3c/onemkl_sycl_rng-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/65/ca/c7617e99c3247f545233ab2181840d142c5f72034e22864172866fb1369a/botocore-1.43.98-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/67/4e/a28359bf1c1ecf11eba22123168c138698f7cb576ac678f5a2e16cd5da08/hf_xet-1.6.0-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/6c/c0/a98505f18594f1bce828bb159cec0fcf9860562f1a2c85913409fc8f3d9e/fsspec-2026.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6d/18/83376915176eb058cb86470eb7396388a13350b09a8f233a79303bbcbc5b/pure_eval-0.2.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/70/98/c3e488257ffe7f9caa90c56f0e79e6a2860cf5af763da7b4e7eadc008228/pygtrie-2.6.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/72/f1/b1f191b91d049780eb4db2605b81af28a697710c4ac219708bcba192f80c/cuequivariance_ops_cu13-0.11.1-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/73/9b/2932b6b128924ba96712ea1c807c1618b9963518eb8ec80cf834ffc3c684/oneccl-2021.17.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/7a/38/bdd540bf511d2c9b6f9efc71a81c60cb88e295be0b9312b61d19bbed2212/nvidia_cublas-13.8.0.4-py3-none-manylinux_2_27_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/80/cd/c607b6337ddcf55cc0249527819b727ef28481d7c56ace54cca69400c2b9/biotraj-1.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/81/b6/100d5811cb60bfc13626910cb48872b8ca53f1dcaf2127aac71185575a7f/parallelbar-2.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/88/39/799be3f2f0f38cc727ee3b4f1445fe6d5e4133064ec2e4115069418a5bb6/cloudpickle-3.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/4c/34f0450479d01195027260da68d8a3880683f1640c3ca5adf64acb3185f1/accelerate-1.15.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8e/57/a50162f3d29feb979ab6347c6debda506dfb525bcff3c50dd17606651c7e/scikit_learn-1.9.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/8e/5a/7fd1b784a87e96e0078f49a0a13a98b4c5f644ba5597a4a3b70a2ba3e613/py3dmol-2.5.5-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/91/99/5ee1e9ae85ed3d10517d17d5a3a924fecc15b116385045a0a89eb2d5bc82/intel_openmp-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/99/1c/368b4b179295a76d773cadcc30da3afccbf1123e648e28e7dc0de6d61fe2/rdkit-2026.3.6-cp312-cp312-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/99/5d/8268b644392ee874ee82a635cd0df1773de230bde356c38de28e298392cc/parso-0.8.7-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9a/93/242e2eab5fe682ffcb8b0084bde703a41d51e17ee0f3a31ff0d9d813620a/jedi-0.20.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9b/5d/f25ac7d4fb77cbd53ddc6d05d833c6bf52b12770a44fa9a447eed470ca9a/msgpack_numpy-0.4.8-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a1/a4/38e8b5a27b66ab286168ba6c449771ed71d71ec76524e7f12401474a5151/tcmlib-1.4.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/03/921a3d3c75785aca9ebfbfcabfbc3a1be12e2ab5265deb026d55a5a3f83e/tqdm-4.70.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a8/af/48ac8483240de756d2438c380746e7130d1c6f75802ef22f3c6d49982787/huggingface_hub-0.36.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ad/66/0d785f0bc5e4315a96c989bb476d0fc07ea4f85132550c7b156ca2035d52/traitlets-5.16.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/af/85/dee48118c530d9574f683f8cf3a7ad576a23f060a520335c9284ff6ba65b/intel_pti-0.16.0-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b3/ee/76755ca0ec9626835e0d024c369b968f24eadce2106a7884404720670623/mkl-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b7/80/6252de3a70cfd7767718ad476893f1c7dc129f942cc7ed0322e3137c03d9/zstd-1.5.7.2-cp312-cp312-manylinux_2_14_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/bc/46/d29efd46ecac6637065a39418c5fb95500d70ec63e76065b5a72c936172f/boto3-1.43.98-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/e7/5c595c75e9f41a44f30e526eda465ea0b4eec93470e074e4a111b253f13a/s3transfer-0.19.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c1/27/bbadf924bf134143895fc197701951d9d28c77bd1cfbabd5e1dfb9b90b8b/intel_cmplr_lic_rt-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c3/55/298e9b3b864a198234997e87a1471c1b17d7f3546ace6d18fb5cf1ce24b2/ipywidgets-8.1.9-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cb/f5/dcdf5e0d898024005cfcce631e3e934d111dfbe177ca0b7f253ae8a735a2/regex-2026.9.10-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ce/29/496c69c70a5645eaa2dfe230ee9ab7dcee041a64f7a6555c515512530495/impi_rt-2021.17.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/d4/2b/04b8a15f3a1c77bc79ddf5c73875327f34b4fa75982df2b76e45e402d364/asttokens-3.0.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/c1/eb8f9debc45d3b7918a32ab756658a0904732f75e555402972246b0b8e71/tenacity-9.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e7/a8/7f99cfa83f61d2d8cb29f31e1f90a6233873a6038b4cdfb30179ef90e5a6/cuequivariance-0.11.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e9/d2/edcbe7995ae3fe18f709c8ae122da8978aee1311c3e8d3bdcd23fc684e69/dpcpp_cpp_rt-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f7/e4/047a0b42f8240a9c70f3ac120479aa1996f99cfe9fd97afb025d6bbd89a8/intel_sycl_rt-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + xpu-py313: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16.1-h7cc23a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.7.0-py313h8f72f4d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-h505cf86_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-h9908984_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313h2fc2bef_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.8-hebe6cf0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3c89d7e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py313ha52865f_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-4.4.3-hff7ac6b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/comrak-0.55.0-hf19af3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.4.0-py313h2551ef2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.16.1-py313h2af15c8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-50.0.1-py311hc91d8b8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-he8c428d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.3-h4db4eae_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.65.0-py313h6cd9899_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-h7cc23a3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.15-h54a6638_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-py310h44b86e0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-h7cc23a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.1-py313h2551ef2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-hbc21106_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h9073bf1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.46.1-default_hbd61a6d_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.2.0-hdb68285_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-11_h4a7cf45_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-h39a168f_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-ha411449_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-h018ffa1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-11_h0358290_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp23.1-23.1.1-default_h0acdd01_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-23.1.1-default_h7037f76_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.22.0-ha042cf0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-hd45a770_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.129-h7cc23a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h373387f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h280c20c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.7.0-h81df57d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h5e6c136_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.2.0-h69a702a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-16.2.0-h69a702a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-16.2.0-h6b99dfc_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.90.0-h569388d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.4.0-h23af247_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h0cb94f2_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.2.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-11_h47877c9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm23-23.1.1-h474f4eb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h74cf4be_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.34-pthreads_hf13c14d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.19-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h922cc85_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.6-h9d76c99_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpsl-0.23.1-hd9e3e90_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpython-3.13.15-hdc7f604_103_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libraqm-0.11.0-h6406941_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.4-h13e7031_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-h6154650_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.2.0-hdf11a46_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.2-hcc2c06a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.3-hcfc3c73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.52.1-h280c20c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.357.0-h0e34353_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-hb83e432_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.38-h280c20c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.2-h51789e4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.4-hf3af7cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.4-h7df9aa5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.45-h8e12856_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.11.2-py313h4488465_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.2-py313he85fb2c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nh3-0.3.7-py310h300b7de_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.5-py313hf6604e3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-heb1ab33_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.4-h781a0a9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.6-np2py313h4900a6c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-h8b3dc9c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py313h3b26573_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h1114479_1013.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h7cc23a3_1004.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.11.2-py313hd9d88b3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.15-hf47f18c_103_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.11.2-pl5321h9df5c37_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-hd6e31c0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb03c661_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.18.1-py313he2a5f1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.5.0-py313h78bf25f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.15.0-np2py313hfeff522_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h1df4ec4_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.10-py313h995f894_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ty-0.0.49-h4e94fc0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py313h7037e92_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.26.0-hc1c935e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.4.1-py313hd42f317_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.6-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-hb711507_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.48-h280c20c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-h280c20c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-h0d788c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-h7cc23a3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-h7cc23a3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-h7cc23a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-h7cc23a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.3-h7cc23a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-h7cc23a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-h7cc23a3_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hebe6cf0_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-hebe6cf0_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hce19668_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports.tarfile-1.2.0-pyhcf101f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.7.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.5.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.15-py313hd8ed1ab_103.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.23-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/formulaic-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.4.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/id-1.6.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.19-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-7.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/interface_meta-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.4.0-pyhcf101f3_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.context-6.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.functools-4.6.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jeepney-0.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/keyring-25.7.0-pyha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-11.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.26.0-pyh5ded981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.3-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.2.1-pyh145f28c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.11-pyh5ded981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.21.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.1.1-pyhc364b38_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.6.1-pyh5ded981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.15-h4df99d1_103.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-9_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/readme_renderer-46.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-81.0.0-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/twine-7.0.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.16.0-h69aa097_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.16.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.9.0-pyh5ded981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda + - pypi: . + - pypi: git+https://github.com/nrontsis/DockQ.git?rev=ba4df5adaad7c77fd60851d0b7b05f2b77061ba2#ba4df5adaad7c77fd60851d0b7b05f2b77061ba2 + - pypi: https://download-r2.pytorch.org/whl/triton_xpu-3.7.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://download-r2.pytorch.org/whl/xpu/torch-2.11.0%2Bxpu-cp313-cp313-linux_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/00/78/9cbcc1c073b9d4918e925af1a059762265dc65004e020511b2a06fbfd020/pydssp-0.9.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/03/b8/e484ef633af3887baeeb4b6ad12743363af7cce68ae51e938e00aaa0529d/transformers-4.57.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/08/59/8d381a2cfe8d36c4f4ff9f94769ff2809bfc16014d888360b0e24c7e5c6b/tbb-2022.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/18/53/84099323c2ec4be98d935f63c033ac4151ee83836ca1050ede3b3aadf155/joblib-1.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1b/d7/ffb7e58ac260737b5076e2738ce198468a4efb3ba1885bced038801c387a/intel_cmplr_lib_rt-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/20/3b/000c79c3f9c06b7542225a5d3a7f9a85405da7224b3b9af94a491d07abea/regex-2026.9.10-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/23/45/caa600acfab94560807a20a64b5830d2cd3c3202b7f1328644d70b7d6bd8/nvidia_ml_py-13.610.43-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/23/e5/688703d357e5393f708d98eb189fd415ae69e39f6de03c6bd4005aef6118/scikit_learn-1.9.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/24/f6/f4e38bb1a81fbda3afa2d79aa95b5a5d73c838977c1f86fbf73e7dafe676/onemkl_sycl_lapack-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/28/50/f203ff3a3ddfe19308efc83c5a3a29ed02bf786732ec35e68bf9162f3365/safetensors-0.8.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/2a/09/f8d8f8f31e4483c10a906437b4ce31bdf3d6d417b73fe33f1a8b59e34228/einops-0.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2d/1e/65b59cf518c106aa755e7f7da3099027738687a862ec785060702a481320/ipython-9.17.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2e/76/932be4b50ef6ccedf9d3c6639b056a967a86258c6d9200643f01269211ca/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/30/9b/1075a762fc3595d4b8ca688246be9f9ca68a29d0c05c336197670fbc7eff/biopython-1.88-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/31/4e/547949993ea347ac44f5908262ebe6e85edfa7b11a5df136319789be731d/zstd-1.5.7.2-cp313-cp313-manylinux_2_14_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/33/ef/6d27fc118f58cb24886da413545a7efb0853d405fddbfd8b2d9ac09fbed4/jupyterlab_widgets-3.0.17-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/34/95/40e17e20046b7bc820d29d09ae84ec157ec8dd6e6f6cd722626292c31b2e/widgetsnbextension-4.0.16-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/37/f9/9084c945d0b3ef8f129b4f0dd21baec759761a337902b70f17a3945015dd/cloudpathlib-0.25.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/39/cc/9c0adc5861020de426ec71716b6c1bef8d90694b7d6d0a16202cdb1647f5/wcwidth-0.8.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3e/1d/7acbedb07bf4c71cc499527c25a3ef60bf83ed41b8918e986ed7a4573bd4/onemkl_license-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/40/6b/51459a9a6ac585ab8ca1accc58a580a23b91c5272a63ccf419c8f9d52f37/intel_opencl_rt-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/41/ae/46fe3ca4fcf715cfef35b239abe705d32f355c3be4b9e94aca782a4720ae/onemkl_sycl_dft-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/43/3f/f88a53f60a472b46f4023f56d204dd7de33d34c5d2acbfa0d70a674e639e/threadpoolctl-3.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/46/2a/f9697576603dae937727827505a6126a066affb227034e77e6f9068910da/pyelftools-0.33-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/49/7e/bc668ee301350964b7be980db7d527a54a61b89a749d09bb430b4598ed3b/intel_cmplr_lib_ur-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/4a/a1/4fad3108825e2d65d812ba69a9fd3664181cfe8860e49110c92431d1629f/oneccl_devel-2021.17.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/4c/b9/fe8c54eab5a3fdfdff1839d9299d90bfce5c467186b5c9ff9fd95d55ad64/umf-1.0.3-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/4e/d0/4b9da3d9c5749bf2c93f2818af4dc306f3b3ccc671f68f6820635fd53b74/cuequivariance_torch-0.11.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/51/17/497d29cd13029f4835383d95e644d1602dafa9b7887d298ba9ea77734dce/onemkl_sycl_blas-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/52/f2/9e726e4489f947557290605e3ee33b6ba09fe5dac9213263e0ada75200cf/dna_features_viewer-3.1.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/54/6f/84908cad2d6aa5144abcf7b42709fe4fdb459bc640ec7ac5786e7693dabc/prompt_toolkit-3.0.53-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/56/9c/1342ebb460ce2afd014ec5a002adc99108e3c53a6b70f399cf64dd1f267d/nvidia_cuda_nvrtc-13.4.92-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/5d/88/4b7e2095f5d16ce1d8425efb2bf0126dd60ef659e24619bdeea85c10ef74/onemkl_sycl_sparse-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/60/f9/1f3b6ce37848c721462b4f30de08482dc27d6ffbcbba621b61ef53e28d3c/onemkl_sycl_rng-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/65/ca/c7617e99c3247f545233ab2181840d142c5f72034e22864172866fb1369a/botocore-1.43.98-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/67/4e/a28359bf1c1ecf11eba22123168c138698f7cb576ac678f5a2e16cd5da08/hf_xet-1.6.0-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/6c/c0/a98505f18594f1bce828bb159cec0fcf9860562f1a2c85913409fc8f3d9e/fsspec-2026.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6d/18/83376915176eb058cb86470eb7396388a13350b09a8f233a79303bbcbc5b/pure_eval-0.2.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6e/d3/6592e4064619b04f2dd0054c5fa13e37e3d55eb26044483d871fadb2f46b/msgpack-1.2.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/70/98/c3e488257ffe7f9caa90c56f0e79e6a2860cf5af763da7b4e7eadc008228/pygtrie-2.6.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/72/f1/b1f191b91d049780eb4db2605b81af28a697710c4ac219708bcba192f80c/cuequivariance_ops_cu13-0.11.1-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/73/9b/2932b6b128924ba96712ea1c807c1618b9963518eb8ec80cf834ffc3c684/oneccl-2021.17.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/7a/38/bdd540bf511d2c9b6f9efc71a81c60cb88e295be0b9312b61d19bbed2212/nvidia_cublas-13.8.0.4-py3-none-manylinux_2_27_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7f/34/51e095d4d4475bc64b793efd362b33d8c88658ac7b8a0b41c632d598b6d8/biotite-1.7.1-cp313-cp313-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/81/b6/100d5811cb60bfc13626910cb48872b8ca53f1dcaf2127aac71185575a7f/parallelbar-2.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/88/39/799be3f2f0f38cc727ee3b4f1445fe6d5e4133064ec2e4115069418a5bb6/cloudpickle-3.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/4c/34f0450479d01195027260da68d8a3880683f1640c3ca5adf64acb3185f1/accelerate-1.15.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8e/5a/7fd1b784a87e96e0078f49a0a13a98b4c5f644ba5597a4a3b70a2ba3e613/py3dmol-2.5.5-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/91/99/5ee1e9ae85ed3d10517d17d5a3a924fecc15b116385045a0a89eb2d5bc82/intel_openmp-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/99/5d/8268b644392ee874ee82a635cd0df1773de230bde356c38de28e298392cc/parso-0.8.7-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9a/93/242e2eab5fe682ffcb8b0084bde703a41d51e17ee0f3a31ff0d9d813620a/jedi-0.20.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9b/5d/f25ac7d4fb77cbd53ddc6d05d833c6bf52b12770a44fa9a447eed470ca9a/msgpack_numpy-0.4.8-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a1/a4/38e8b5a27b66ab286168ba6c449771ed71d71ec76524e7f12401474a5151/tcmlib-1.4.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/03/921a3d3c75785aca9ebfbfcabfbc3a1be12e2ab5265deb026d55a5a3f83e/tqdm-4.70.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a8/af/48ac8483240de756d2438c380746e7130d1c6f75802ef22f3c6d49982787/huggingface_hub-0.36.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ad/66/0d785f0bc5e4315a96c989bb476d0fc07ea4f85132550c7b156ca2035d52/traitlets-5.16.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/af/85/dee48118c530d9574f683f8cf3a7ad576a23f060a520335c9284ff6ba65b/intel_pti-0.16.0-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b3/a1/42c6e78a654c28ba03932e7c7bfb2918ae5828488aae30322ced83379a19/cuequivariance_ops_torch_cu13-0.11.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b3/ee/76755ca0ec9626835e0d024c369b968f24eadce2106a7884404720670623/mkl-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/bc/46/d29efd46ecac6637065a39418c5fb95500d70ec63e76065b5a72c936172f/boto3-1.43.98-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/e7/5c595c75e9f41a44f30e526eda465ea0b4eec93470e074e4a111b253f13a/s3transfer-0.19.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c1/27/bbadf924bf134143895fc197701951d9d28c77bd1cfbabd5e1dfb9b90b8b/intel_cmplr_lic_rt-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c3/55/298e9b3b864a198234997e87a1471c1b17d7f3546ace6d18fb5cf1ce24b2/ipywidgets-8.1.9-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c8/6f/db9080c49ddab3c2dd46f99ab98386095d81d74098d292b64f5bf4c231fe/rdkit-2026.3.6-cp313-cp313-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ce/29/496c69c70a5645eaa2dfe230ee9ab7dcee041a64f7a6555c515512530495/impi_rt-2021.17.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/d4/2b/04b8a15f3a1c77bc79ddf5c73875327f34b4fa75982df2b76e45e402d364/asttokens-3.0.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/c1/eb8f9debc45d3b7918a32ab756658a0904732f75e555402972246b0b8e71/tenacity-9.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e7/a8/7f99cfa83f61d2d8cb29f31e1f90a6233873a6038b4cdfb30179ef90e5a6/cuequivariance-0.11.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e9/d2/edcbe7995ae3fe18f709c8ae122da8978aee1311c3e8d3bdcd23fc684e69/dpcpp_cpp_rt-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/f0/6f/ab71525583a7824c70f71de387a1c5ceb27ddcb3fda2dacb734e5b875f14/biotraj-1.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f7/e4/047a0b42f8240a9c70f3ac120479aa1996f99cfe9fd97afb025d6bbd89a8/intel_sycl_rt-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + xpu-py314: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16.1-h7cc23a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-h505cf86_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-h9908984_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py314hcd2bdb6_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.8-hebe6cf0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3c89d7e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py314h8d76f0c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-4.4.3-hff7ac6b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/comrak-0.55.0-hf19af3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.4.0-py314h5383ef5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.16.1-py314h93e9acf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-50.0.1-py311hc91d8b8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-he8c428d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.3-h4db4eae_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.65.0-py314hd42368d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-h7cc23a3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.15-h54a6638_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-py310h44b86e0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-h7cc23a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.1-py314h5383ef5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-hbc21106_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h9073bf1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.46.1-default_hbd61a6d_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.2.0-hdb68285_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-11_h4a7cf45_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-h39a168f_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-ha411449_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-h018ffa1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-11_h0358290_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp23.1-23.1.1-default_h0acdd01_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-23.1.1-default_h7037f76_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.22.0-ha042cf0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-hd45a770_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.129-h7cc23a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h373387f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h280c20c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.7.0-h81df57d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h5e6c136_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.2.0-h69a702a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-16.2.0-h69a702a_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-16.2.0-h6b99dfc_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.90.0-h569388d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.4.0-h23af247_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h0cb94f2_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.2.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-11_h47877c9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm23-23.1.1-h474f4eb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h74cf4be_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.34-pthreads_hf13c14d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.19-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h922cc85_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.6-h9d76c99_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpsl-0.23.1-hd9e3e90_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpython-3.14.7-hdc7f604_106_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libraqm-0.11.0-h6406941_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.4-h13e7031_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-h6154650_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.2.0-hdf11a46_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.2-hcc2c06a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.3-hcfc3c73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.52.1-h280c20c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.357.0-h0e34353_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-hb83e432_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.38-h280c20c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.2-h51789e4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.4-hf3af7cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.4-h7df9aa5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.45-h8e12856_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.11.2-py314h815e797_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.2-py314h9124352_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nh3-0.3.7-py310h300b7de_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.5-py314h2b28147_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-heb1ab33_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.4-h781a0a9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.6-np2py314h9e1d7c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-h8b3dc9c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py314h50bfbbb_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h1114479_1013.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h7cc23a3_1004.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.11.2-py314h574d94f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.7-hcd007b5_106_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py314h67df5f8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.11.2-pl5321h9df5c37_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-hd6e31c0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb03c661_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.18.1-py314h36f0660_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.5.0-py314hdafbbf9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.15.0-np2py314h8874201_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h1df4ec4_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.10-py314h89acca1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ty-0.0.49-h4e94fc0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py314h9891dd4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.26.0-hc1c935e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.4.1-py314hfe1a184_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.6-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-hb711507_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.48-h280c20c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-h280c20c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-h0d788c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-h7cc23a3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-h7cc23a3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-h7cc23a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-h7cc23a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.3-h7cc23a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-h7cc23a3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-h7cc23a3_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hebe6cf0_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-hebe6cf0_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hce19668_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports.tarfile-1.2.0-pyhcf101f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.7.0-py314h680f03e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.7.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.5.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.7-py314hd8ed1ab_106.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.23-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/formulaic-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.4.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/id-1.6.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.19-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-7.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/interface_meta-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.4.0-pyhcf101f3_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.context-6.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.functools-4.6.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jeepney-0.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/keyring-25.7.0-pyha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/more-itertools-11.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.26.0-pyh5ded981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.3-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.3-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.2.1-pyh145f28c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.11-pyh5ded981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.21.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.1.1-pyhc364b38_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.1.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.6.1-pyh5ded981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.7-h4df99d1_106.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-9_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/readme_renderer-46.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-81.0.0-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/twine-7.0.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.16.0-h69aa097_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.16.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.9.0-pyh5ded981_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda + - pypi: . + - pypi: git+https://github.com/nrontsis/DockQ.git?rev=ba4df5adaad7c77fd60851d0b7b05f2b77061ba2#ba4df5adaad7c77fd60851d0b7b05f2b77061ba2 + - pypi: https://download-r2.pytorch.org/whl/triton_xpu-3.7.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://download-r2.pytorch.org/whl/xpu/torch-2.11.0%2Bxpu-cp314-cp314-linux_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/00/78/9cbcc1c073b9d4918e925af1a059762265dc65004e020511b2a06fbfd020/pydssp-0.9.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/03/b8/e484ef633af3887baeeb4b6ad12743363af7cce68ae51e938e00aaa0529d/transformers-4.57.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/07/21/2287edfd0d2569639eea706e25c39e63b46a384cf1712db8ea05768317b0/biotraj-1.2.2.tar.gz + - pypi: https://files.pythonhosted.org/packages/08/59/8d381a2cfe8d36c4f4ff9f94769ff2809bfc16014d888360b0e24c7e5c6b/tbb-2022.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/18/53/84099323c2ec4be98d935f63c033ac4151ee83836ca1050ede3b3aadf155/joblib-1.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1b/d7/ffb7e58ac260737b5076e2738ce198468a4efb3ba1885bced038801c387a/intel_cmplr_lib_rt-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/23/45/caa600acfab94560807a20a64b5830d2cd3c3202b7f1328644d70b7d6bd8/nvidia_ml_py-13.610.43-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/24/f6/f4e38bb1a81fbda3afa2d79aa95b5a5d73c838977c1f86fbf73e7dafe676/onemkl_sycl_lapack-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/28/50/f203ff3a3ddfe19308efc83c5a3a29ed02bf786732ec35e68bf9162f3365/safetensors-0.8.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/2a/09/f8d8f8f31e4483c10a906437b4ce31bdf3d6d417b73fe33f1a8b59e34228/einops-0.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2d/1e/65b59cf518c106aa755e7f7da3099027738687a862ec785060702a481320/ipython-9.17.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2e/76/932be4b50ef6ccedf9d3c6639b056a967a86258c6d9200643f01269211ca/tokenizers-0.22.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/33/ef/6d27fc118f58cb24886da413545a7efb0853d405fddbfd8b2d9ac09fbed4/jupyterlab_widgets-3.0.17-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/34/95/40e17e20046b7bc820d29d09ae84ec157ec8dd6e6f6cd722626292c31b2e/widgetsnbextension-4.0.16-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/37/f9/9084c945d0b3ef8f129b4f0dd21baec759761a337902b70f17a3945015dd/cloudpathlib-0.25.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/39/cc/9c0adc5861020de426ec71716b6c1bef8d90694b7d6d0a16202cdb1647f5/wcwidth-0.8.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3e/1d/7acbedb07bf4c71cc499527c25a3ef60bf83ed41b8918e986ed7a4573bd4/onemkl_license-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/3e/dc/cfbc0d38bded4f481d46be88c7ce00c0cd6f9455fb7d728484b2006ff4fe/biotite-1.7.1-cp314-cp314-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/40/6b/51459a9a6ac585ab8ca1accc58a580a23b91c5272a63ccf419c8f9d52f37/intel_opencl_rt-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/41/ae/46fe3ca4fcf715cfef35b239abe705d32f355c3be4b9e94aca782a4720ae/onemkl_sycl_dft-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/43/3f/f88a53f60a472b46f4023f56d204dd7de33d34c5d2acbfa0d70a674e639e/threadpoolctl-3.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/46/2a/f9697576603dae937727827505a6126a066affb227034e77e6f9068910da/pyelftools-0.33-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/49/7e/bc668ee301350964b7be980db7d527a54a61b89a749d09bb430b4598ed3b/intel_cmplr_lib_ur-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/4a/a1/4fad3108825e2d65d812ba69a9fd3664181cfe8860e49110c92431d1629f/oneccl_devel-2021.17.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/4c/b9/fe8c54eab5a3fdfdff1839d9299d90bfce5c467186b5c9ff9fd95d55ad64/umf-1.0.3-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/4e/d0/4b9da3d9c5749bf2c93f2818af4dc306f3b3ccc671f68f6820635fd53b74/cuequivariance_torch-0.11.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/51/17/497d29cd13029f4835383d95e644d1602dafa9b7887d298ba9ea77734dce/onemkl_sycl_blas-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/52/f2/9e726e4489f947557290605e3ee33b6ba09fe5dac9213263e0ada75200cf/dna_features_viewer-3.1.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/54/6f/84908cad2d6aa5144abcf7b42709fe4fdb459bc640ec7ac5786e7693dabc/prompt_toolkit-3.0.53-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/56/9c/1342ebb460ce2afd014ec5a002adc99108e3c53a6b70f399cf64dd1f267d/nvidia_cuda_nvrtc-13.4.92-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/5d/88/4b7e2095f5d16ce1d8425efb2bf0126dd60ef659e24619bdeea85c10ef74/onemkl_sycl_sparse-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/60/f9/1f3b6ce37848c721462b4f30de08482dc27d6ffbcbba621b61ef53e28d3c/onemkl_sycl_rng-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/65/ca/c7617e99c3247f545233ab2181840d142c5f72034e22864172866fb1369a/botocore-1.43.98-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/66/2f/e762d2a929d8e22d96b937ab94ccd39dd2e20b2cf9dbd7a4fc29feb90bd1/cuequivariance_ops_torch_cu13-0.11.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/67/4e/a28359bf1c1ecf11eba22123168c138698f7cb576ac678f5a2e16cd5da08/hf_xet-1.6.0-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/6c/c0/a98505f18594f1bce828bb159cec0fcf9860562f1a2c85913409fc8f3d9e/fsspec-2026.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6d/18/83376915176eb058cb86470eb7396388a13350b09a8f233a79303bbcbc5b/pure_eval-0.2.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/70/98/c3e488257ffe7f9caa90c56f0e79e6a2860cf5af763da7b4e7eadc008228/pygtrie-2.6.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/72/f1/b1f191b91d049780eb4db2605b81af28a697710c4ac219708bcba192f80c/cuequivariance_ops_cu13-0.11.1-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/73/9b/2932b6b128924ba96712ea1c807c1618b9963518eb8ec80cf834ffc3c684/oneccl-2021.17.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/7a/38/bdd540bf511d2c9b6f9efc71a81c60cb88e295be0b9312b61d19bbed2212/nvidia_cublas-13.8.0.4-py3-none-manylinux_2_27_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/81/b6/100d5811cb60bfc13626910cb48872b8ca53f1dcaf2127aac71185575a7f/parallelbar-2.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/86/4e/0bab75490ca4b85fad8388739c7ebc71d9db553f8c69e39943ee8db0aaae/scikit_learn-1.9.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/88/39/799be3f2f0f38cc727ee3b4f1445fe6d5e4133064ec2e4115069418a5bb6/cloudpickle-3.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8a/4c/34f0450479d01195027260da68d8a3880683f1640c3ca5adf64acb3185f1/accelerate-1.15.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8e/5a/7fd1b784a87e96e0078f49a0a13a98b4c5f644ba5597a4a3b70a2ba3e613/py3dmol-2.5.5-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/91/99/5ee1e9ae85ed3d10517d17d5a3a924fecc15b116385045a0a89eb2d5bc82/intel_openmp-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/99/5d/8268b644392ee874ee82a635cd0df1773de230bde356c38de28e298392cc/parso-0.8.7-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9a/93/242e2eab5fe682ffcb8b0084bde703a41d51e17ee0f3a31ff0d9d813620a/jedi-0.20.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9b/5d/f25ac7d4fb77cbd53ddc6d05d833c6bf52b12770a44fa9a447eed470ca9a/msgpack_numpy-0.4.8-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a1/a4/38e8b5a27b66ab286168ba6c449771ed71d71ec76524e7f12401474a5151/tcmlib-1.4.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/03/921a3d3c75785aca9ebfbfcabfbc3a1be12e2ab5265deb026d55a5a3f83e/tqdm-4.70.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a8/af/48ac8483240de756d2438c380746e7130d1c6f75802ef22f3c6d49982787/huggingface_hub-0.36.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ad/66/0d785f0bc5e4315a96c989bb476d0fc07ea4f85132550c7b156ca2035d52/traitlets-5.16.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/af/85/dee48118c530d9574f683f8cf3a7ad576a23f060a520335c9284ff6ba65b/intel_pti-0.16.0-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b3/ee/76755ca0ec9626835e0d024c369b968f24eadce2106a7884404720670623/mkl-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b6/4e/46f5a5d949dbd054dab60cb15aac7ac6ae6774c134532893414689bf2f53/msgpack-1.2.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b6/a6/e4c718d76ac37f69c482164f00252064e3858673c5aad5b18dd7da6c56eb/rdkit-2026.3.6-cp314-cp314-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/bb/64/9b56f69100d3afdbc9c4fa6e302764f9cb717fbc06a9d50558d98ca89cd2/regex-2026.9.10-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/bc/46/d29efd46ecac6637065a39418c5fb95500d70ec63e76065b5a72c936172f/boto3-1.43.98-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/e7/5c595c75e9f41a44f30e526eda465ea0b4eec93470e074e4a111b253f13a/s3transfer-0.19.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c1/27/bbadf924bf134143895fc197701951d9d28c77bd1cfbabd5e1dfb9b90b8b/intel_cmplr_lic_rt-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c2/d9/2447f03967528710da972e729731035e52c1b257f8af12c8dfcff226218d/biopython-1.88-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c3/55/298e9b3b864a198234997e87a1471c1b17d7f3546ace6d18fb5cf1ce24b2/ipywidgets-8.1.9-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ce/29/496c69c70a5645eaa2dfe230ee9ab7dcee041a64f7a6555c515512530495/impi_rt-2021.17.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/d2/f7/9243bb99b8525421a7db741604d29aebe9a849539500f2248d74bf2614be/zstd-1.5.7.2-cp314-cp314-manylinux_2_14_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/d4/2b/04b8a15f3a1c77bc79ddf5c73875327f34b4fa75982df2b76e45e402d364/asttokens-3.0.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/c1/eb8f9debc45d3b7918a32ab756658a0904732f75e555402972246b0b8e71/tenacity-9.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e7/a8/7f99cfa83f61d2d8cb29f31e1f90a6233873a6038b4cdfb30179ef90e5a6/cuequivariance-0.11.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e9/d2/edcbe7995ae3fe18f709c8ae122da8978aee1311c3e8d3bdcd23fc684e69/dpcpp_cpp_rt-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f7/e4/047a0b42f8240a9c70f3ac120479aa1996f99cfe9fd97afb025d6bbd89a8/intel_sycl_rt-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda build_number: 20 @@ -2422,6 +3417,20 @@ packages: - _openmp_mutex >=4.5 size: 28948 timestamp: 1770939786096 +- conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16.1-h7cc23a3_1.conda + sha256: a35bddac04be093769e81814465a537961c6ed0f8d3cc23d6dce6ecdfaf71821 + md5: 7094e0d8d14de0eff6d83f0d2f1f661e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + license: LGPL-2.1-or-later + license_family: LGPL + purls: [] + run_exports: + weak: + - alsa-lib >=1.2.16.1,<1.3.0a0 + size: 594986 + timestamp: 1787763412911 - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16.1-hb03c661_0.conda sha256: cf93ca0f1f107e95a35969a4622684e08fcb8cf37f8cf4a1e9e424828386c921 md5: 8904e09bda369377b3dd07e2ac828c5d @@ -2451,6 +3460,21 @@ packages: run_exports: {} size: 240967 timestamp: 1786861419155 +- conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.7.0-py312h3f22e6b_1.conda + sha256: b377a4f053c4e184b031253c702984194d10c98228004d7cf07c1eca86247d62 + md5: b0e9b44b494bb001c4d35b206022eba2 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause AND MIT AND EPL-2.0 + purls: + - pkg:pypi/backports-zstd?source=hash-mapping + run_exports: {} + size: 241113 + timestamp: 1788491295568 - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.7.0-py313h8f72f4d_0.conda sha256: 69c1d1a8c3c30acd2fc14cd9667241c038b0f2fd5a2caf2f210fa160f8291b84 md5: 40454ef16bb96ae63f063b50c8b68603 @@ -2466,6 +3490,21 @@ packages: run_exports: {} size: 243610 timestamp: 1786861410562 +- conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.7.0-py313h8f72f4d_1.conda + sha256: b8e6cbfade3ff6b344f9acc5c69193bd1aa7a2dc792e60eb8e05470fae122a1b + md5: 7ce840e6cf17fdba00e3d662f1d89e36 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - zstd >=1.5.7,<1.6.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause AND MIT AND EPL-2.0 + purls: + - pkg:pypi/backports-zstd?source=compressed-mapping + run_exports: {} + size: 243747 + timestamp: 1788491297080 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-h505cf86_3.conda sha256: 1f2ccfebe6e0113bfc473b21906372c1ee4eb69bf6faef0ad7f3d4d79af63a98 md5: 6ff307b78fbfb7dcafb7e25ff8bc9c10 @@ -2485,6 +3524,25 @@ packages: - libbrotlidec >=1.2.0,<1.3.0a0 size: 20676 timestamp: 1786622810792 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-h505cf86_4.conda + sha256: 61b78574f002390b6a7fc79834fc344beaab09550068a51100eea5a485dac741 + md5: 746aa619a1bcaf4da541101179d7c60e + depends: + - __glibc >=2.17,<3.0.a0 + - brotli-bin 1.2.0 h9908984_4 + - libbrotlidec 1.2.0 ha411449_4 + - libbrotlienc 1.2.0 h018ffa1_4 + - libgcc >=15 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libbrotlicommon >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + size: 20679 + timestamp: 1788480401508 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-h9908984_3.conda sha256: 56b2e5e8a49f9887af74cc63e0d55a3654e60b667ad5558da089549a36ae6a0c md5: 8929291d9efc59715df1cfa7daf5e3ed @@ -2499,6 +3557,20 @@ packages: run_exports: {} size: 21598 timestamp: 1786622801722 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-h9908984_4.conda + sha256: ce7db81d5fd4b222ee1a27c52ccf7af44faaf88283017103a8e288f9c372b973 + md5: c48c09444f3736800ea0b9550c365baf + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlidec 1.2.0 ha411449_4 + - libbrotlienc 1.2.0 h018ffa1_4 + - libgcc >=15 + license: MIT + license_family: MIT + purls: [] + run_exports: {} + size: 21601 + timestamp: 1788480392621 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py312he9c40d5_3.conda sha256: 32ae6e002843704af9f39395f3116815fa66f2b27de1bd9044fb2a2d53fbe3d3 md5: d176f3ed2824f930b524c45eb8f158bb @@ -2517,6 +3589,24 @@ packages: run_exports: {} size: 367032 timestamp: 1786622975850 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py312he9c40d5_4.conda + sha256: 6e4f440a7015d7d78120b3a3f90a4ec3d7bb6de7bc65458123c52433755db5f0 + md5: edb667e7ce56106424e8afab2dc0f0cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - libstdcxx >=15 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.2.0 h39a168f_4 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + run_exports: {} + size: 367657 + timestamp: 1788480501027 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313h2fc2bef_3.conda sha256: 6b51c465b404e2f1ae3633ad48dc791f8c2c9352fd5adb57c8f0ac027da24336 md5: 3bc8e37c6272e48b6eb6d15267b8a377 @@ -2535,6 +3625,24 @@ packages: run_exports: {} size: 367312 timestamp: 1786622911623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313h2fc2bef_4.conda + sha256: 3621a39631aec2d6f4b8ac0cc9ee6d46cee1ae684ba9d2ed6f84b9993e14fbc4 + md5: 8beb0b96d9c701006ff5511a3a92329f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - libstdcxx >=15 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + constrains: + - libbrotlicommon 1.2.0 h39a168f_4 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + run_exports: {} + size: 367791 + timestamp: 1788480600802 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py314hcd2bdb6_3.conda sha256: e52ff7e1e3c5f4423421fbcd1f1ebf1d6ce123e22890ceb225d6552b7bbc551f md5: bd1be0851060138e038f6f4e09cc1eb4 @@ -2553,6 +3661,24 @@ packages: run_exports: {} size: 367948 timestamp: 1786622843866 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py314hcd2bdb6_4.conda + sha256: e9cc0891a0dc5c3fa8c71dd2224491b6658c069af7a49ce4443158730990b6fd + md5: d9aabceecc99b3b8b0eb7090c5776af4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - libstdcxx >=15 + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 + constrains: + - libbrotlicommon 1.2.0 h39a168f_4 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + run_exports: {} + size: 367567 + timestamp: 1788480533506 - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_10.conda sha256: 1a0d382c515ebf55f8ee1f38c8b81bc95af5c2acc42ad53b66bc5df932032f96 md5: e675fabcf81499adc7edf58124fb1e01 @@ -2581,6 +3707,36 @@ packages: - c-ares >=1.34.8,<2.0a0 size: 228700 timestamp: 1787169971173 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3c89d7e_3.conda + sha256: 6b551d9346997bc4c6fadf96b7b92442b8f3244011cc462e4ee77afc714d52c5 + md5: 7b870cffbaa8430290e567a0facd8dca + depends: + - __glibc >=2.17,<3.0.a0 + - fontconfig >=2.18.3,<3.0a0 + - fonts-conda-ecosystem + - icu >=78.3,<79.0a0 + - libexpat >=2.8.1,<3.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - libgcc >=15 + - libglib >=2.88.3,<3.0a0 + - libpng >=1.6.58,<1.7.0a0 + - libstdcxx >=15 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - pixman >=0.46.4,<1.0a0 + - xorg-libice >=1.1.2,<2.0a0 + - xorg-libsm >=1.2.6,<2.0a0 + - xorg-libx11 >=1.8.13,<2.0a0 + - xorg-libxext >=1.3.7,<2.0a0 + - xorg-libxrender >=0.9.12,<0.10.0a0 + license: LGPL-2.1-only or MPL-1.1 + purls: [] + run_exports: + weak: + - cairo >=1.18.4,<2.0a0 + size: 991011 + timestamp: 1788221336073 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda sha256: 06525fa0c4e4f56e771a3b986d0fdf0f0fc5a3270830ee47e127a5105bde1b9a md5: bb6c4808bfa69d6f7f6b07e5846ced37 @@ -2628,6 +3784,23 @@ packages: run_exports: {} size: 302100 timestamp: 1786775110054 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py312h703531f_3.conda + sha256: 7c6e8b24d62e0bfa5d14050cd29053778f399feefa7d6887b04575210285a849 + md5: 41f019d067f8c52c6d9283d8afb28889 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.7.0,<3.8.0a0 + - libgcc >=15 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=compressed-mapping + run_exports: {} + size: 302937 + timestamp: 1788485303634 - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py313ha52865f_2.conda sha256: a0bd899c7f6ab06e2c60a61737b1c7da732f81235c3babbddd14ee01ec2ab8f9 md5: 3c23b9907fd858c635a29ec77cf43301 @@ -2645,6 +3818,23 @@ packages: run_exports: {} size: 304702 timestamp: 1786775106191 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py313ha52865f_3.conda + sha256: e1968f1efd8491e32a84416a4994cea98bbf51aebd8c7c04c783e121088fec63 + md5: 2b17c17965f71b59158030dce83832e1 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.7.0,<3.8.0a0 + - libgcc >=15 + - pycparser + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + run_exports: {} + size: 304628 + timestamp: 1788485299863 - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py314h8d76f0c_2.conda sha256: 9d181949eead0d4092ed9ffa3b7ec066a15572d515327939c8a074c224262528 md5: 314853abf64fc052dea08bd17df17b65 @@ -2662,6 +3852,23 @@ packages: run_exports: {} size: 306626 timestamp: 1786775112485 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py314h8d76f0c_3.conda + sha256: 15e38176fa2173e063a19dad3d55746ac4c757b028813380d7f22c42781af4c4 + md5: ee66d46f7693fdcbaa1761fb8a4f6c3d + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.7.0,<3.8.0a0 + - libgcc >=15 + - pycparser + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=compressed-mapping + run_exports: {} + size: 307262 + timestamp: 1788485305536 - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-4.4.2-hff7ac6b_2.conda sha256: 4b6dcec4e6eeb909a7f2ee1dfea2dcfc5c4f07385dfa079633115495d26e7e02 md5: cd8e60571bcb77b46fba20a135a8fa33 @@ -2684,6 +3891,28 @@ packages: run_exports: {} size: 26073856 timestamp: 1787209732637 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-4.4.3-hff7ac6b_0.conda + sha256: a6d21b5166cd7a44fa975e541f1abf851579a8ac3458e72e77125761da06c842 + md5: e9d08c8f9a02853bfc6f8c3a4b0b19a4 + depends: + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=15 + - ncurses >=6.6,<7.0a0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.8.1,<3.0a0 + - liblzma >=5.8.3,<6.0a0 + - libcurl >=8.21.0,<9.0a0 + - rhash >=1.4.6,<2.0a0 + - libuv >=1.52.1,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + run_exports: {} + size: 26077721 + timestamp: 1787711119591 - conda: https://conda.anaconda.org/conda-forge/linux-64/comrak-0.54.0-hb17b654_0.conda sha256: f80e00a568128566ac97787afcc2701bd3e636799363b9e2c88ce8733361e525 md5: a072db87d32836deeeffd30995529d63 @@ -2698,6 +3927,20 @@ packages: run_exports: {} size: 1280692 timestamp: 1783844531090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/comrak-0.55.0-hf19af3b_0.conda + sha256: ed797b90e4e08853b143432a14186ca7638a096c8f0801bf0be620aeb5992e6f + md5: 1553a9323274ad4db8ea3db1c04944ae + depends: + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + constrains: + - __glibc >=2.17 + license: BSD-2-Clause + license_family: BSD + purls: [] + run_exports: {} + size: 1279979 + timestamp: 1788720436488 - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312h0a2e395_4.conda sha256: 62447faf7e8eb691e407688c0b4b7c230de40d5ecf95bf301111b4d05c5be473 md5: 43c2bc96af3ae5ed9e8a10ded942aa50 @@ -2749,6 +3992,57 @@ packages: run_exports: {} size: 324013 timestamp: 1769155968691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.4.0-py312h9be0db6_1.conda + sha256: 6e25d853d433ab890e03a47db92c5d1651bdfa7b37527bb343706404fde7c010 + md5: 64e62dfa49dd4688301b02d8cfea3687 + depends: + - numpy >=2.0 + - python + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=15 + - libgcc >=15 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/contourpy?source=compressed-mapping + run_exports: {} + size: 328674 + timestamp: 1789746791989 +- conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.4.0-py313h2551ef2_1.conda + sha256: 078f4a0f83ee7d0f88c110e15f9f94ff4080dc925711d1d22b52779c2e48cf87 + md5: 1883f23b947ffaa13f9511ea817fc4e6 + depends: + - numpy >=2.0 + - python + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=15 + - libgcc >=15 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/contourpy?source=compressed-mapping + run_exports: {} + size: 329540 + timestamp: 1789746824998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.4.0-py314h5383ef5_1.conda + sha256: 741042dc183403b9307ac7d92e8da163ef7868876b5653d5f9205d5102844b51 + md5: 2848b95cbf026062b30f3f1f504a2f61 + depends: + - numpy >=2.0 + - python + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=15 + - libgcc >=15 + - python_abi 3.14.* *_cp314 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/contourpy?source=compressed-mapping + run_exports: {} + size: 331601 + timestamp: 1789746783338 - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.15.4-py312h589e9ff_1.conda sha256: 12157c219d58e85b0454705ba23caed5b6a1e1129715fab1a38d1c974a82a5ff md5: da913109cf05fb71022186f534874a5d @@ -2797,6 +4091,51 @@ packages: run_exports: {} size: 444123 timestamp: 1786292729866 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.16.1-py312h8b7ec3f_0.conda + sha256: 4a8043346633a5324746c7f370083b3c3aa8f7c8dd5b9af50e9255238c30f57d + md5: a440583cd1dbfae9841862fee5c9e3bd + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=compressed-mapping + run_exports: {} + size: 417037 + timestamp: 1789915303358 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.16.1-py313h2af15c8_0.conda + sha256: 38000f8796939c8dcc4c385c52e7c00da72c7cd2cf071462275b4f3d73efee33 + md5: d57a44a18f604ad03769f340693918d9 + depends: + - python + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=compressed-mapping + run_exports: {} + size: 426365 + timestamp: 1789915303358 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.16.1-py314h93e9acf_0.conda + sha256: e0a93322675fa27d4bbab5a03b5a313b68a0ae4ff323a830c842bb513f913aa4 + md5: b2197fe3c8f1c3946ea56f7ac41a0a02 + depends: + - python + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.14.* *_cp314 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/coverage?source=compressed-mapping + run_exports: {} + size: 446113 + timestamp: 1789915303358 - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-50.0.0-py312ha4b625e_0.conda sha256: 72f6f9e4ba27a6e247da7d2351ec074df5f49a6b53c468fdd833dfbda386aeb9 md5: 67ef0ac81eef7c40a62b938acac84cad @@ -2852,8 +4191,28 @@ packages: purls: - pkg:pypi/cryptography?source=hash-mapping run_exports: {} - size: 1914834 - timestamp: 1785640778304 + size: 1914834 + timestamp: 1785640778304 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-50.0.1-py311hc91d8b8_1.conda + noarch: python + sha256: 901268eb9ed9ab9a9285fda16abb4feb65eca3301755e560fef54ea7e2fc312c + md5: f68d2562d5f1a828fa82dfa2e91e27da + depends: + - python + - cffi >=2.0 + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + - openssl >=3.5.8,<4.0a0 + - _python_abi3_support 1.* + - cpython >=3.11 + constrains: + - __glibc >=2.17 + license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT + purls: + - pkg:pypi/cryptography?source=compressed-mapping + run_exports: {} + size: 1826946 + timestamp: 1789121519742 - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda sha256: 7684da83306bb69686c0506fb09aa7074e1a55ade50c3a879e4e5df6eebb1009 md5: af491aae930edc096b58466c51c4126c @@ -2890,6 +4249,23 @@ packages: - dbus >=1.16.2,<2.0a0 size: 447649 timestamp: 1764536047944 +- conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-he8c428d_2.conda + sha256: 87a0a42d4ccc527597eff3234509dfb03e0d9bf67d5e2b6fc758e2ef389d8abe + md5: a6eb37b51be1a9a654dc3a8aca039b1a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - libstdcxx >=15 + - libexpat >=2.8.1,<3.0a0 + - libzlib >=1.3.2,<2.0a0 + - libglib >=2.88.3,<3.0a0 + license: AFL-2.1 OR GPL-2.0-or-later + purls: [] + run_exports: + weak: + - dbus >=1.16.2,<2.0a0 + size: 449564 + timestamp: 1788197922783 - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda sha256: 40cdd1b048444d3235069d75f9c8e1f286db567f6278a93b4f024e5642cfaecc md5: dbe3ec0f120af456b3477743ffd99b74 @@ -2960,6 +4336,58 @@ packages: run_exports: {} size: 2995315 timestamp: 1778770432258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.65.0-py312hfd18d64_0.conda + sha256: e16afb57f621128c164264662cf8b97732a6a150dca3742771f8efca7508a25f + md5: a1f28d7f53adcd210da4ffc07e62b7e0 + depends: + - __glibc >=2.17,<3.0.a0 + - brotli + - libgcc >=15 + - munkres + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - unicodedata2 >=15.1.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/fonttools?source=compressed-mapping + run_exports: {} + size: 3117728 + timestamp: 1789076508246 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.65.0-py313h6cd9899_0.conda + sha256: 665422c697e1905eaeb7264c42a7a53d7684907939a9baab395a3680a958865f + md5: a99a1200c422dad619b8c63fdf38faf7 + depends: + - __glibc >=2.17,<3.0.a0 + - brotli + - libgcc >=15 + - munkres + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + purls: + - pkg:pypi/fonttools?source=compressed-mapping + run_exports: {} + size: 3186852 + timestamp: 1789076430495 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.65.0-py314hd42368d_0.conda + sha256: 38177c867bbe8b65dffc6d700d042210f6d85d747f5ff718ab41852766725a1c + md5: 0731836329450a8eca1e55d0b0287026 + depends: + - __glibc >=2.17,<3.0.a0 + - brotli + - libgcc >=15 + - munkres + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 + license: MIT + license_family: MIT + purls: + - pkg:pypi/fonttools?source=compressed-mapping + run_exports: {} + size: 3187800 + timestamp: 1789076587494 - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_2.conda sha256: 612a8e0c1a6ecae23da54d81ef395f6ebb5c8e4468ec2611593ebce75876a4e0 md5: 2d0ea23b23603e07ca47f23f949f67b6 @@ -2974,6 +4402,19 @@ packages: - libfreetype6 >=2.14.3 size: 175239 timestamp: 1786641011029 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-h7cc23a3_2.conda + sha256: 76dd097bd65d812a9104edb0e266386e152e65928ac5c8eb4f480ce24affc470 + md5: 16d6e5a0f8dbc17bd6669dba6f49bad3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + license: LGPL-2.1-or-later + purls: [] + run_exports: + weak: + - fribidi >=1.0.16,<2.0a0 + size: 62401 + timestamp: 1788385624706 - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_1.conda sha256: 4846a3ca0402f3fe33ad84ed50ab213c6aafde4a0faef3c5002f6bf753e21671 md5: 1cd10eda5692519d01bb20e086e214c9 @@ -3078,6 +4519,54 @@ packages: run_exports: {} size: 77363 timestamp: 1773067048780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.1-py312h9be0db6_1.conda + sha256: 608716113cb671415a038654e2bc55c2372c8817c24c0a5043323fd7c06b86f3 + md5: 231fede9051444ed7d243f78f3cb4a8f + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=15 + - libgcc >=15 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/kiwisolver?source=compressed-mapping + run_exports: {} + size: 75215 + timestamp: 1788505643992 +- conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.1-py313h2551ef2_1.conda + sha256: 773f5eb66391d92a39c6cf6651111594c4a3f9941540934af3b813529c083ce1 + md5: 6e7bc60a75f1668be8cb9b27191abe54 + depends: + - python + - libstdcxx >=15 + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/kiwisolver?source=hash-mapping + run_exports: {} + size: 75129 + timestamp: 1788505657484 +- conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.1-py314h5383ef5_1.conda + sha256: 9bd6aef74bc5e89c8e8f99f2f3e0dcbf9e01fb787132a283b7d4c4c66789e5f2 + md5: c815ac2d62ffb5c051eced3961454a18 + depends: + - python + - libstdcxx >=15 + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.14.* *_cp314 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/kiwisolver?source=compressed-mapping + run_exports: {} + size: 75620 + timestamp: 1788505651547 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-hbc21106_2.conda sha256: 2a5c38c85e63df84c4e69ee71439841ce570d259ae3060627bb9a49a938d66f4 md5: 53318d715316929a574f83591308b1f8 @@ -3113,6 +4602,22 @@ packages: - lcms2 >=2.19.1,<3.0a0 size: 251971 timestamp: 1780211695895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h9073bf1_3.conda + sha256: 03e675b9adaf235aab880e4133c72f4830e87bc7da2df59d6194771612239b22 + md5: 596464faa06e0b656b35416188ef9bba + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - libjpeg-turbo >=3.2.0,<4.0a0 + - libtiff >=4.7.2,<4.8.0a0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - lcms2 >=2.19.1,<3.0a0 + size: 254292 + timestamp: 1789051947923 - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.46.1-default_hbd61a6d_102.conda sha256: 27d83f1188cd19bcb7754a078b3fa7f4cfb8527f8eb2fde54dd01fc529d1adec md5: 449500f2c089da11c40f5c21312e3e07 @@ -3142,6 +4647,27 @@ packages: - lerc >=4.2.0,<5.0a0 size: 271158 timestamp: 1785036167977 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-11_h4a7cf45_openblas.conda + build_number: 11 + sha256: d942e0c820d60a613a6f786d074f0820fb6343e3f1ccfb110b1d98b44fb75968 + md5: b8cce1486f3c62f33291d6318c193d0d + depends: + - libopenblas >=0.3.34,<0.3.35.0a0 + - libopenblas >=0.3.34,<1.0a0 + constrains: + - blas 2.311 openblas + - libcblas 3.11.0 11*_openblas + - liblapack 3.11.0 11*_openblas + - liblapacke 3.11.0 11*_openblas + - mkl <2027 + license: BSD-3-Clause + license_family: BSD + purls: [] + run_exports: + weak: + - libblas >=3.11.0,<4.0a0 + size: 18246 + timestamp: 1789061062982 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-9_h4a7cf45_openblas.conda build_number: 9 sha256: 39c7b3c5427b435c9c059ede9da61d46d42574e5b846ad37fdc3af4a5eab1e48 @@ -3177,6 +4703,20 @@ packages: - libbrotlicommon >=1.2.0,<1.3.0a0 size: 80265 timestamp: 1786622773969 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-h39a168f_4.conda + sha256: c4e9854c585f3ee1785f651287ecdf8c28f30a2ea1b159a513005f8a0f6453a3 + md5: df210655e30a05e3b069c91b7aaddd2d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libbrotlicommon >=1.2.0,<1.3.0a0 + size: 80561 + timestamp: 1788480364653 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-ha411449_3.conda sha256: dad31b6d104973deb89710929a35651033aad692d4e7793cdb5b786a9bd54678 md5: 6ab3315dc56618d652c1da42a648a129 @@ -3192,6 +4732,21 @@ packages: - libbrotlidec >=1.2.0,<1.3.0a0 size: 34828 timestamp: 1786622783405 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-ha411449_4.conda + sha256: d5ed24da3e583a92227fe77280978b7933f07a39a2b60156c5ad95e5c76733fa + md5: 0cfd601eb03cca403dcc248844787486 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.2.0 h39a168f_4 + - libgcc >=15 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libbrotlidec >=1.2.0,<1.3.0a0 + size: 34739 + timestamp: 1788480374261 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-h018ffa1_3.conda sha256: d37124d0f51816e7d5e3a94bfc9ed3d6174d077f9b4f832d20c5a08b52bebf1f md5: 2ac965638d4c6b2b38383bb1aebaf543 @@ -3207,6 +4762,39 @@ packages: - libbrotlienc >=1.2.0,<1.3.0a0 size: 298639 timestamp: 1786622792145 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-h018ffa1_4.conda + sha256: b9f3cb510337655485c2e79ce5f7dd468991b19ad29723ffa1175a0aed1b69ae + md5: 4136f6e4ef4835cc7df39a707cbd511c + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.2.0 h39a168f_4 + - libgcc >=15 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libbrotlienc >=1.2.0,<1.3.0a0 + size: 298134 + timestamp: 1788480383223 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-11_h0358290_openblas.conda + build_number: 11 + sha256: f7d1bbdea61cf94ba219d17b2cb571a29830f8025385af799bff5a7ad1ef45e6 + md5: 73a248c30811075059b5aeda766c2624 + depends: + - libblas 3.11.0 11_h4a7cf45_openblas + constrains: + - blas 2.311 openblas + - liblapack 3.11.0 11*_openblas + - liblapacke 3.11.0 11*_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + run_exports: + weak: + - libcblas >=3.11.0,<4.0a0 + size: 18196 + timestamp: 1789061068819 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-9_h0358290_openblas.conda build_number: 9 sha256: 4c532a70ea9aeff2fa1aabaa4828ebc00c2ed12b22aa8ba19da5302b882fc82b @@ -3264,6 +4852,26 @@ packages: - libclang-cpp22.1 >=22.1.8,<22.2.0a0 size: 24529835 timestamp: 1787227817225 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp23.1-23.1.1-default_h0acdd01_0.conda + sha256: 1a393452606eaed3192783a77acffffce6dec101f44bfa9f1c8b00da0e1b828b + md5: 685684bbe8a2b702db0a664f882a49aa + depends: + - libstdcxx >=15 + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + - libxml2 + - libxml2-16 >=2.15.4 + - zstd >=1.5.7,<1.6.0a0 + - libzlib >=1.3.2,<2.0a0 + - libllvm23 >=23.1.1,<23.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + run_exports: + weak: + - libclang-cpp23.1 >=23.1.1,<23.2.0a0 + size: 25352464 + timestamp: 1788986724670 - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.8-default_h5f7f9d4_9.conda sha256: b1a62c3e6328c911e209ffe873e2bee5d8c66b50352c59fc88efd91be12d3bf2 md5: ae740654c4a0e3731d07fc1162924ca6 @@ -3305,6 +4913,27 @@ packages: - libclang13 >=22.1.8 size: 14558479 timestamp: 1787227817225 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-23.1.1-default_h7037f76_0.conda + sha256: 89c4968a9eb3c45aa6ecd1e20dcf30419cc52ef756af3bbad5099ae488cb8330 + md5: 477ba0fcc49cbf8dad6fadac96dd87c5 + depends: + - libclang-cpp23.1 ==23.1.1 default_h0acdd01_0 + - libstdcxx >=15 + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + - libxml2 + - libxml2-16 >=2.15.4 + - zstd >=1.5.7,<1.6.0a0 + - libzlib >=1.3.2,<2.0a0 + - libllvm23 >=23.1.1,<23.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + run_exports: + weak: + - libclang13 >=23.1.1 + size: 15440907 + timestamp: 1788986724670 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda sha256: 205c4f19550f3647832ec44e35e6d93c8c206782bdd620c1d7cf66237580ff9c md5: 49c553b47ff679a6a1e9fc80b9c5a2d4 @@ -3343,6 +4972,27 @@ packages: - libcurl >=8.21.0,<9.0a0 size: 484517 timestamp: 1787183722915 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.22.0-ha042cf0_0.conda + sha256: 483b7eb97f56fbb3a9cb7190d33012dfa0a5aaed99ede61465563cd97dd82504 + md5: e617deee7af8eb0c04f6296d12b54157 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.22.2,<1.23.0a0 + - libgcc >=15 + - libnghttp2 >=1.68.1,<2.0a0 + - libpsl >=0.23.1,<0.24.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - openssl >=3.5.8,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT + purls: [] + run_exports: + weak: + - libcurl >=8.22.0,<9.0a0 + size: 499651 + timestamp: 1788340719230 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-hd45a770_1.conda sha256: 82e134c8a08b1eed9a2ed8ab578b89aa1730dcde3dea8dd87645ed0637878e54 md5: 40f9b31aa9cf007789867df0decd0492 @@ -3482,6 +5132,20 @@ packages: - libffi >=3.7.0,<3.8.0a0 size: 67576 timestamp: 1783520858222 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.7.0-h81df57d_1.conda + sha256: c8c7583ef063bc3c430f1d48298e5ad24f796a35c22ed5b14183325825a61106 + md5: 6525a0b06aa4fd390795f0740636a9dd + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libffi >=3.7.0,<3.8.0a0 + size: 68004 + timestamp: 1787753412298 - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_2.conda sha256: fb12ecb46c30d18d928c0e8fc346ab13b5f6fc8a9cacae4f2f4bb188782586f5 md5: f8054e759d0ddddaf34a5c8fedc900a1 @@ -3536,6 +5200,21 @@ packages: run_exports: {} size: 1058083 timestamp: 1787618680111 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_5.conda + sha256: 33d1b5d57c5a55a474330c5ec41fe7001a5aa600d9639389e8ce5edafae216a4 + md5: 3b62b92f0f082b67c59618ebf07617a7 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==16.2.0=*_5 + - libgomp 16.2.0 he0feb66_5 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + run_exports: {} + size: 1057064 + timestamp: 1789485807107 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.1.0-h69a702a_2.conda sha256: 23bfa3ade2de6e0b9af4a04cacd0d4d526c80a16686f264498475339f01d17d3 md5: be5ca38a4a2ddfda85ad7aae7d67238a @@ -3561,6 +5240,19 @@ packages: - libgcc size: 28403 timestamp: 1787618684957 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.2.0-h69a702a_5.conda + sha256: d298972e17697a5e96806d5f2c151c53efd0afa0ef10db5d6757a5b186817219 + md5: e7c34906139296448e3554fafa3dbec2 + depends: + - libgcc 16.2.0 ha9f2e26_5 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + run_exports: + strong: + - libgcc + size: 28535 + timestamp: 1789485811332 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-16.1.0-h69a702a_2.conda sha256: f608de89b2579d0e3ffa748476ad50e26ef3f9adf9ebbb619db679663cbf88ac md5: 85c8f13b26afe335c9df928995f56683 @@ -3586,6 +5278,19 @@ packages: run_exports: {} size: 28377 timestamp: 1787618711732 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-16.2.0-h69a702a_5.conda + sha256: 7e694578cbabd46251d7a069d89da6479c5edd962d78bbc66a847c1b722a8365 + md5: 34ddf93e56ee44924ce76a614e5fb379 + depends: + - libgfortran5 16.2.0 h6b99dfc_5 + constrains: + - libgfortran-ng ==16.2.0=*_5 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + run_exports: {} + size: 28520 + timestamp: 1789485833036 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-16.1.0-h79bb938_2.conda sha256: 627b865f5ba4da4d5508e90453d9419f28ed8a72f8577086681b589cf9579fab md5: 60fe1556f159aad832acef6bf8a5102d @@ -3613,6 +5318,20 @@ packages: run_exports: {} size: 2526008 timestamp: 1787618692926 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-16.2.0-h6b99dfc_5.conda + sha256: cc767363e3148a18d3a3015eeaed722bbf8ca0acc3a29157df2965e97caa9803 + md5: a7eb3f9540094247ec8a2fa800cf9bbf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=16.2.0 + constrains: + - libgfortran 16.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + run_exports: {} + size: 2528103 + timestamp: 1789485817694 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_3.conda sha256: ec353b3076ed8e357ed961d0e9ff6997491cade0e603de5bd18a2e301ac78ebd md5: f25206d7322c0e9648e8b83694d143ab @@ -3684,6 +5403,25 @@ packages: - libglib >=2.88.3,<3.0a0 size: 4755172 timestamp: 1786457663614 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.90.0-h569388d_0.conda + sha256: 9e688e046550415c030c3d08ed9a3fd13a51d7bc56295283b858b6c3070bb9f8 + md5: c85e9539551f1fd21104e518d940c244 + depends: + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + - libiconv >=1.18,<2.0a0 + - pcre2 >=10.47,<10.48.0a0 + - libffi >=3.7.0,<3.8.0a0 + - libzlib >=1.3.2,<2.0a0 + constrains: + - glib >2.66 + license: LGPL-2.1-or-later + purls: [] + run_exports: + weak: + - libglib >=2.90.0,<3.0a0 + size: 4819130 + timestamp: 1789478025196 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_3.conda sha256: e019ebe4e3f5cdf23e2f5e58ddf7ade27988c53820115b17b98f218ebcc87748 md5: eb83f3f8cecc3e9bff9e250817fc69b6 @@ -3783,6 +5521,19 @@ packages: - _openmp_mutex >=4.5 size: 639968 timestamp: 1787618616266 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_5.conda + sha256: 224a5a09e258a1a257089a9af310e9336e1d36834959718a9fab8679742dd822 + md5: af44890f8a2beefd3a83805a59a65014 + depends: + - __glibc >=2.17,<3.0.a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + run_exports: + strong: + - _openmp_mutex >=4.5 + size: 641644 + timestamp: 1789485759120 - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.3.1-h23af247_0.conda sha256: a4eac5a21b84e0fc753b72de01781f634fc9ab70fd32a28d6a40a19700c9188a md5: 29709e61096dd490fff9e833e4c869f6 @@ -3802,8 +5553,29 @@ packages: license_family: MIT purls: [] run_exports: {} - size: 1353639 - timestamp: 1786970872936 + size: 1353639 + timestamp: 1786970872936 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.4.0-h23af247_1.conda + sha256: 979b14ba13054aab9e90363809aac470a58b7c37203c330216327356a98c8f60 + md5: c44470b6bfa6a582cb4dd42cbda3401e + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.4,<2.0a0 + - graphite2 >=1.3.15,<2.0a0 + - icu >=78.3,<79.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - libgcc >=15 + - libglib >=2.88.3,<3.0a0 + - libpng >=1.6.58,<1.7.0a0 + - libstdcxx >=15 + - libzlib >=1.3.2,<2.0a0 + license: MIT + license_family: MIT + purls: [] + run_exports: {} + size: 1382623 + timestamp: 1788405508587 - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h0cb94f2_3.conda sha256: f943117edb9cd4d9c61cc972eee5a34291dc55ea7a6e9e38da104995841cbcb6 md5: f92233bf33e24a25668bb2119e2c51f9 @@ -3832,6 +5604,24 @@ packages: - libjpeg-turbo >=3.2.0,<4.0a0 size: 650434 timestamp: 1785896381946 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-11_h47877c9_openblas.conda + build_number: 11 + sha256: 1ad3f43c9319ef398a8ef45989f4903a06e3965b51e77fc669a4c894168a8411 + md5: 5622a13917855ce4b953b9e655cf9262 + depends: + - libblas 3.11.0 11_h4a7cf45_openblas + constrains: + - blas 2.311 openblas + - libcblas 3.11.0 11*_openblas + - liblapacke 3.11.0 11*_openblas + license: BSD-3-Clause + license_family: BSD + purls: [] + run_exports: + weak: + - liblapack >=3.11.0,<3.12.0a0 + size: 18227 + timestamp: 1789061073957 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-9_h47877c9_openblas.conda build_number: 9 sha256: ea989e2dabd21d296a5a4ec515e695645aefcdf778ffdb5eeea515421d243ab5 @@ -3888,6 +5678,25 @@ packages: - libllvm22 >=22.1.8,<22.2.0a0 size: 44320272 timestamp: 1781788728739 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm23-23.1.1-h474f4eb_0.conda + sha256: 5c716beeb80cd420c37cb811102a9e76c66072f47ed319de1a931ecdd98c9e6b + md5: d96e790721dd4e9af624acbf46cdd818 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - libstdcxx >=15 + - libxml2 + - libxml2-16 >=2.15.4 + - libzlib >=1.3.2,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: + weak: + - libllvm23 >=23.1.1,<23.2.0a0 + size: 45065095 + timestamp: 1788900116889 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_1.conda sha256: 9787df8c22a59c9a70d3e5a10db9ad663485e75e9ccc3f09bd092cb7b95e0dab md5: 1390b7c5ac0b1d8e447bc5efa6d3c8c2 @@ -3980,6 +5789,24 @@ packages: - libopenblas >=0.3.34,<1.0a0 size: 5952629 timestamp: 1784287497473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.34-pthreads_hf13c14d_2.conda + sha256: 69a722751e14eab2eb3bfdcb9acb1187afbd962b0c49b48d829341e0f6787f60 + md5: 7e19fcd73d7f0997d3cb3326d2586a86 + depends: + - libgfortran5 >=15.3.0 + - libgfortran + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + constrains: + - openblas >=0.3.34,<0.3.35.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + run_exports: + weak: + - libopenblas >=0.3.34,<1.0a0 + size: 6845411 + timestamp: 1789141490688 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_3.conda sha256: 90777039b48529283df5f16383fc399866024257a8bd93de583f4730db1ab30a md5: c2bd8055a2e2dce7a7f32cfd02101fb6 @@ -4047,6 +5874,23 @@ packages: - libpq >=18.6,<19.0a0 size: 2719680 timestamp: 1786641133110 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.6-h9d76c99_1.conda + sha256: f858ecc9bcca455449f95e12a61f01264c239e6a176d86e09ea3b85bf0be4ff7 + md5: 06b25748479ce9516502e28332707f11 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=78.3,<79.0a0 + - krb5 >=1.22.2,<1.23.0a0 + - libgcc >=15 + - openldap >=2.6.13,<2.7.0a0 + - openssl >=3.5.8,<4.0a0 + license: PostgreSQL + purls: [] + run_exports: + weak: + - libpq >=18.6,<19.0a0 + size: 2726898 + timestamp: 1788538987316 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpsl-0.23.1-hd9e3e90_1.conda sha256: 09e8effdc89bc5d021349318d32b85594f5b8d8e3ab8f90a85b81f8fe695a566 md5: 77be60417aa572afcb48cbe0f967401d @@ -4063,6 +5907,45 @@ packages: - libpsl >=0.23.1,<0.24.0a0 size: 72519 timestamp: 1786970753847 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpython-3.12.14-h0c77377_3_cpython.conda + build_number: 3 + sha256: 6be16a4906d83eb8e9e04375d524f339f426a847cffd294f1ceb0611988dc17a + md5: d247b7632f09324c11f24b5270361385 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - libstdcxx >=15 + license: Python-2.0 + purls: [] + run_exports: {} + size: 8770625 + timestamp: 1788392466381 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpython-3.13.15-hdc7f604_103_cp313.conda + build_number: 103 + sha256: a25db25aad6cbf53e523e1f310713f31372932d5db655f1f2d62a204c7cdf1d7 + md5: e64cd43bbd07afafbc458138e979c851 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - libstdcxx >=15 + license: Python-2.0 + purls: [] + run_exports: {} + size: 9711017 + timestamp: 1788387797958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpython-3.14.7-hdc7f604_106_cp314.conda + build_number: 106 + sha256: 5f879892bd439c3d94f4a97b06c214b9a19c4b92f74d84f0305c6ca1b2b239b2 + md5: 28af2158bb8dbb62e55b0af3b44f9d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - libstdcxx >=15 + license: Python-2.0 + purls: [] + run_exports: {} + size: 10520530 + timestamp: 1788383918299 - conda: https://conda.anaconda.org/conda-forge/linux-64/libraqm-0.11.0-h6406941_0.conda sha256: ab3ccb9fd5816f76b18ee8974d359cd2605ca87d8ddef55369dc461b9986f95c md5: 3ac89a48d224409739dbf6200e524373 @@ -4139,6 +6022,20 @@ packages: run_exports: {} size: 6613148 timestamp: 1787618704262 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_5.conda + sha256: 38cadde30fad8f7c101f9eec79f60bf03fc99310c7195d23f8b30832516d666f + md5: 75b43a2912a0354204696708e4f34b8d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 16.2.0 ha9f2e26_5 + constrains: + - libstdcxx-ng ==16.2.0=*_5 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + run_exports: {} + size: 6618916 + timestamp: 1789485826390 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.1.0-hdf11a46_2.conda sha256: f096fb41c6ad3ef41c479ebce001329a531e0862c9a88979203597b610383158 md5: 8531022ddd724933da9dc3d426a5ad9d @@ -4164,6 +6061,19 @@ packages: - libstdcxx size: 28459 timestamp: 1787618737021 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.2.0-hdf11a46_5.conda + sha256: 855cee8f4b7abe06dc5918a66e0009492964926d5f5d6a033438dd6cab4e91e4 + md5: c37fb00cb15b16cf1601914d68a509ea + depends: + - libstdcxx 16.2.0 h934c35e_5 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + run_exports: + strong: + - libstdcxx + size: 28561 + timestamp: 1789485853984 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.2-h9d88235_0.conda sha256: b31346e1c01ab40a170e91147092ee8fd92b1dee3c66ee47ef025571c879b159 md5: c1fcb4a88bc15a9f77ad8d27d7af1df9 @@ -4185,6 +6095,27 @@ packages: - libtiff >=4.7.2,<4.8.0a0 size: 452337 timestamp: 1783084902636 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.2-hcc2c06a_1.conda + sha256: 10e125da82ca93e09191e66e5a94d566b2cf8d4024e2a0db3a9114297447e0d9 + md5: 0907d876f460ebc941ae590338b6102f + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.2.0,<5.0a0 + - libdeflate >=1.25,<1.26.0a0 + - libgcc >=15 + - libjpeg-turbo >=3.2.0,<4.0a0 + - liblzma >=5.8.3,<6.0a0 + - libstdcxx >=15 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: HPND + purls: [] + run_exports: + weak: + - libtiff >=4.7.2,<4.8.0a0 + size: 459753 + timestamp: 1787755584172 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda sha256: 9b1bdce27a7e31f7d241aeecff67a1f3101d52a2b1e33ccc2cdf2613072bf81f md5: 01bb81d12c957de066ea7362007df642 @@ -4199,6 +6130,20 @@ packages: - libuuid >=2.42.2,<3.0a0 size: 40017 timestamp: 1781625522462 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.3-hcfc3c73_0.conda + sha256: aa58bbba56644ffd062a4a9b358782c5eb7560ccead2ab8f7c5c6ede0a7d33a6 + md5: 74a0a409d9f4561265d36b789d3f398a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + license: BSD-3-Clause + license_family: BSD + purls: [] + run_exports: + weak: + - libuuid >=2.42.3,<3.0a0 + size: 39998 + timestamp: 1788347719520 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.52.1-h280c20c_1.conda sha256: 67761d0206f84140047a367eaf9befe03a7e157a29ee25aee0047b40801cc6b6 md5: 01c4ed87826af55996768af6dbc936b4 @@ -4283,6 +6228,23 @@ packages: - libxcb >=1.17.0,<2.0a0 size: 397355 timestamp: 1787077466600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-hb83e432_2.conda + sha256: 7b49e6fd2a584b7f072943e6adf4149677af5121246975278804782d37752837 + md5: 61f0ffba9161cbb3a77722869b21e4bb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - pthread-stubs + - xorg-libxau >=1.0.12,<2.0a0 + - xorg-libxdmcp >=1.1.5,<2.0a0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libxcb >=1.17.0,<2.0a0 + size: 395120 + timestamp: 1787885788278 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.38-h280c20c_0.conda sha256: f7e9292dd219a6435bbb1223da9586c3e70d66d169c5a92f08db3f2127df04e9 md5: f7a7ff5a6ab331e037abd34f379a631d @@ -4333,6 +6295,24 @@ packages: run_exports: {} size: 559721 timestamp: 1787237579170 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.4-hf3af7cc_0.conda + sha256: 9a1685c8d8b8488cd7882a9cd6e673e687211ca763ebbcd1e91b6f594eeadc45 + md5: b7545c57a73a51d72aa6eee5695cf051 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=78.3,<79.0a0 + - libgcc >=15 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libzlib >=1.3.2,<2.0a0 + constrains: + - libxml2 2.15.4 + license: MIT + license_family: MIT + purls: [] + run_exports: {} + size: 569196 + timestamp: 1788635197456 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_1.conda sha256: a16a576a5844a3a0e1cdfc5e162b9fe9c64dccf6a93f44c293bb42851aebe2b4 md5: 2d34cdb31014cbc8f1e9384c89ede0a5 @@ -4353,6 +6333,26 @@ packages: - libxml2-16 >=2.15.3 size: 46203 timestamp: 1787237584107 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.4-h7df9aa5_0.conda + sha256: 053d85821ce5e36b7ce03faea5930382f6af695df9e2cd68e5d8d273072d1551 + md5: ea192d1ef556bf1d55de4acb8c0f5b65 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=78.3,<79.0a0 + - libgcc >=15 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libxml2-16 2.15.4 hf3af7cc_0 + - libzlib >=1.3.2,<2.0a0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libxml2 + - libxml2-16 >=2.15.4 + size: 47077 + timestamp: 1788635202698 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda sha256: 0694760a3e62bdc659d90a14ae9c6e132b525a7900e59785b18a08bb52a5d7e5 md5: 87e6096ec6d542d1c1f8b33245fe8300 @@ -4369,6 +6369,22 @@ packages: - libxslt >=1.1.43,<2.0a0 size: 245434 timestamp: 1757963724977 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.45-h8e12856_1.conda + sha256: 3beb51b5ce8d2e0690b8517d3d955972d502cfbe2899279cbb9cbb6ff134d360 + md5: 5c8ce6af1772fcfc2b86d17b825abc8e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - libxml2 + - libxml2-16 >=2.15.3 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libxslt >=1.1.45,<2.0a0 + size: 250314 + timestamp: 1788534852474 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_3.conda sha256: eb8a0db0aa570124f7d2a93d7c7f596e3390df5e047818d873baad32985fc736 md5: 0de0122d9570a8ab637c6b73db268389 @@ -4407,31 +6423,175 @@ packages: - pyside6 >=6.7.2 - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 - - tornado >=5 + - tornado >=5 + license: PSF-2.0 + license_family: PSF + purls: [] + run_exports: {} + size: 14966 + timestamp: 1785211130546 +- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.11.1-py314h815e797_2.conda + sha256: 5dc6c469ed94cba223272ba70be250b5820e88640c8fdfe4ae85b2966b8d4b67 + md5: 19db05d03d18c1746c2212bc83e9c4c2 + depends: + - matplotlib-base >=3.11.1,<3.11.2.0a0 + - pyside6 >=6.7.2 + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 + - tornado >=5 + license: PSF-2.0 + license_family: PSF + purls: [] + run_exports: {} + size: 15007 + timestamp: 1785211130117 +- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.11.2-py312h6a12a82_1.conda + sha256: 44001a8f40445bf63e96537d041d0c40d46facb67448d039aec4fee9262f05ab + md5: bfc8bc50a9803addad9bb033bacb80f3 + depends: + - matplotlib-base >=3.11.2,<3.11.3.0a0 + - pyside6 >=6.7.2 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tornado >=5 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/matplotlib?source=compressed-mapping + run_exports: {} + size: 14909 + timestamp: 1789824128347 +- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.11.2-py313h4488465_1.conda + sha256: d22b0671e311dffce2a0b2b1a2139c402a32475c4a66b6d009588bac1618c7da + md5: ab3b99976ece0b3426aeac603dd0572f + depends: + - matplotlib-base >=3.11.2,<3.11.3.0a0 + - pyside6 >=6.7.2 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - tornado >=5 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/matplotlib?source=compressed-mapping + run_exports: {} + size: 14892 + timestamp: 1789824145341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.11.2-py314h815e797_1.conda + sha256: d54ae15e53db9e8761ed40b6b90540cbe629ba1e8e4ec9e42e7e30f67b4cf7ea + md5: 880352c55e026b039937d0752661ac55 + depends: + - matplotlib-base >=3.11.2,<3.11.3.0a0 + - pyside6 >=6.7.2 + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 + - tornado >=5 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/matplotlib?source=compressed-mapping + run_exports: {} + size: 14955 + timestamp: 1789824106774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.1-py312h4c94fcb_2.conda + sha256: 8596841a7adf2ff135a7d3a5266727d7a562046f998e8edf9c568a0b20de7ddd + md5: 97eb87f2704fc5212a05b5fb6202ace0 + depends: + - __glibc >=2.17,<3.0.a0 + - contourpy >=1.0.1 + - cycler >=0.10 + - fonttools >=4.28.2 + - freetype + - kiwisolver >=1.3.1 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - libgcc >=14 + - libraqm >=0.11.0,<0.12.0a0 + - libstdcxx >=14 + - numpy >=1.25 + - numpy >=1.25,<3 + - packaging >=20.0 + - pillow >=9 + - pyparsing >=3 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.7 + - python_abi 3.12.* *_cp312 + - qhull >=2020.2,<2020.3.0a0 + - tk >=8.6.13,<8.7.0a0 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/matplotlib?source=hash-mapping + run_exports: {} + size: 8931979 + timestamp: 1785211134185 +- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.1-py313h134213a_2.conda + sha256: 40e7f144d6a1df2372b7a8b8b42d7f03bcb236dfcb053c32030f9b1635c8f429 + md5: 2c99937357c9476a1f5dc5ecd08d0c75 + depends: + - __glibc >=2.17,<3.0.a0 + - contourpy >=1.0.1 + - cycler >=0.10 + - fonttools >=4.28.2 + - freetype + - kiwisolver >=1.3.1 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - libgcc >=14 + - libraqm >=0.11.0,<0.12.0a0 + - libstdcxx >=14 + - numpy >=1.25 + - numpy >=1.25,<3 + - packaging >=20.0 + - pillow >=9 + - pyparsing >=3 + - python >=3.13,<3.14.0a0 + - python-dateutil >=2.7 + - python_abi 3.13.* *_cp313 + - qhull >=2020.2,<2020.3.0a0 + - tk >=8.6.13,<8.7.0a0 license: PSF-2.0 license_family: PSF - purls: [] + purls: + - pkg:pypi/matplotlib?source=hash-mapping run_exports: {} - size: 14966 - timestamp: 1785211130546 -- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.11.1-py314h815e797_2.conda - sha256: 5dc6c469ed94cba223272ba70be250b5820e88640c8fdfe4ae85b2966b8d4b67 - md5: 19db05d03d18c1746c2212bc83e9c4c2 + size: 9005023 + timestamp: 1785211111407 +- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.1-py314h9a9c090_2.conda + sha256: d76657ece6fef30e44fca988a0a884cf5744f2fb1611814c5c993700148fbefa + md5: 57f668cbc4b70c11ea9d19ebed67295e depends: - - matplotlib-base >=3.11.1,<3.11.2.0a0 - - pyside6 >=6.7.2 + - __glibc >=2.17,<3.0.a0 + - contourpy >=1.0.1 + - cycler >=0.10 + - fonttools >=4.28.2 + - freetype + - kiwisolver >=1.3.1 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - libgcc >=14 + - libraqm >=0.11.0,<0.12.0a0 + - libstdcxx >=14 + - numpy >=1.25 + - numpy >=1.25,<3 + - packaging >=20.0 + - pillow >=9 + - pyparsing >=3 - python >=3.14,<3.15.0a0 + - python-dateutil >=2.7 - python_abi 3.14.* *_cp314 - - tornado >=5 + - qhull >=2020.2,<2020.3.0a0 + - tk >=8.6.13,<8.7.0a0 license: PSF-2.0 license_family: PSF - purls: [] + purls: + - pkg:pypi/matplotlib?source=hash-mapping run_exports: {} - size: 15007 - timestamp: 1785211130117 -- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.1-py312h4c94fcb_2.conda - sha256: 8596841a7adf2ff135a7d3a5266727d7a562046f998e8edf9c568a0b20de7ddd - md5: 97eb87f2704fc5212a05b5fb6202ace0 + size: 9068707 + timestamp: 1785211110030 +- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.2-py312hfe9aac7_1.conda + sha256: 066b5b0cee5edb51ad64eb0c55db99fc85a6dc92821c49531b778da1c6d9867e + md5: 0745f1af620efcb1095d8ddabcb2ed8b depends: - __glibc >=2.17,<3.0.a0 - contourpy >=1.0.1 @@ -4441,9 +6601,9 @@ packages: - kiwisolver >=1.3.1 - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - - libgcc >=14 + - libgcc >=15 - libraqm >=0.11.0,<0.12.0a0 - - libstdcxx >=14 + - libstdcxx >=15 - numpy >=1.25 - numpy >=1.25,<3 - packaging >=20.0 @@ -4457,13 +6617,13 @@ packages: license: PSF-2.0 license_family: PSF purls: - - pkg:pypi/matplotlib?source=hash-mapping + - pkg:pypi/matplotlib?source=compressed-mapping run_exports: {} - size: 8931979 - timestamp: 1785211134185 -- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.1-py313h134213a_2.conda - sha256: 40e7f144d6a1df2372b7a8b8b42d7f03bcb236dfcb053c32030f9b1635c8f429 - md5: 2c99937357c9476a1f5dc5ecd08d0c75 + size: 8946081 + timestamp: 1789824111301 +- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.2-py313he85fb2c_1.conda + sha256: 0cdfcbf58ca1cab8a941c2dbb1c958ea211fbb92cd262626fb766c06615d5d5e + md5: 85e795dd9e44b84961fafb4e7dd589aa depends: - __glibc >=2.17,<3.0.a0 - contourpy >=1.0.1 @@ -4473,9 +6633,9 @@ packages: - kiwisolver >=1.3.1 - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - - libgcc >=14 + - libgcc >=15 - libraqm >=0.11.0,<0.12.0a0 - - libstdcxx >=14 + - libstdcxx >=15 - numpy >=1.25 - numpy >=1.25,<3 - packaging >=20.0 @@ -4489,13 +6649,13 @@ packages: license: PSF-2.0 license_family: PSF purls: - - pkg:pypi/matplotlib?source=hash-mapping + - pkg:pypi/matplotlib?source=compressed-mapping run_exports: {} - size: 9005023 - timestamp: 1785211111407 -- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.1-py314h9a9c090_2.conda - sha256: d76657ece6fef30e44fca988a0a884cf5744f2fb1611814c5c993700148fbefa - md5: 57f668cbc4b70c11ea9d19ebed67295e + size: 9026765 + timestamp: 1789824128731 +- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.2-py314h9124352_1.conda + sha256: d2c2551d55eb2bf02c02f9d49d5b9893e811787297189d2279b7a91c0d845693 + md5: 55d364956c0d3a01f6e39db3f6f6cc9b depends: - __glibc >=2.17,<3.0.a0 - contourpy >=1.0.1 @@ -4505,9 +6665,9 @@ packages: - kiwisolver >=1.3.1 - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - - libgcc >=14 + - libgcc >=15 - libraqm >=0.11.0,<0.12.0a0 - - libstdcxx >=14 + - libstdcxx >=15 - numpy >=1.25 - numpy >=1.25,<3 - packaging >=20.0 @@ -4521,10 +6681,10 @@ packages: license: PSF-2.0 license_family: PSF purls: - - pkg:pypi/matplotlib?source=hash-mapping + - pkg:pypi/matplotlib?source=compressed-mapping run_exports: {} - size: 9068707 - timestamp: 1785211110030 + size: 9286809 + timestamp: 1789824093677 - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_1.conda sha256: 5d46557214ed184381dafe835b7c94a474a1c3b307a08a250b1ea4779b44ffb3 md5: ee6c0cd80a60961a1f48aa3e0b91f986 @@ -4662,6 +6822,24 @@ packages: - openjpeg >=2.5.4,<3.0a0 size: 355400 timestamp: 1758489294972 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-heb1ab33_2.conda + sha256: 131688a88bea8da92fe418c4558c5073435e2848911bc4c836c3a9dd5994b4aa + md5: a3f3ac7a68d01c198e276dbb99e62032 + depends: + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=15 + - libtiff >=4.7.2,<4.8.0a0 + - libzlib >=1.3.2,<2.0a0 + - libpng >=1.6.58,<1.7.0a0 + license: BSD-2-Clause + license_family: BSD + purls: [] + run_exports: + weak: + - openjpeg >=2.5.4,<3.0a0 + size: 391242 + timestamp: 1788425045145 - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda sha256: 21c4f6c7f41dc9bec2ea2f9c80440d9a4d45a6f2ac13243e658f10dcf1044146 md5: 680608784722880fbfe1745067570b00 @@ -4695,6 +6873,21 @@ packages: - openssl >=3.6.3,<4.0a0 size: 3182423 timestamp: 1785913583650 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.4-h781a0a9_0.conda + sha256: 4747b2d6a8336f52343bceb8a1ebf41a9e6e665b9d2e3f989972de53a310599e + md5: 16e3034a330cc625f2c685edec60cf4e + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=15 + license: Apache-2.0 + license_family: Apache + purls: [] + run_exports: + weak: + - openssl >=3.6.4,<4.0a0 + size: 3202955 + timestamp: 1787698780103 - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.5-py312h8ecdadd_1.conda sha256: 393e529c0574c020a9b790275af10ff35e21cbb4e12740888bd3f214f2f07034 md5: 85eb29ade84d1bd97be5ec55607efb00 @@ -4869,6 +7062,180 @@ packages: run_exports: {} size: 15360863 timestamp: 1785276230218 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.6-np2py312h91ec553_0.conda + sha256: a4c045408aea6536148307158fb873d8d8f5f1295931ea12494997eae778b096 + md5: 2143c2cef115b49a934d526f7da91696 + depends: + - python + - numpy >=1.26.0 + - python-dateutil >=2.8.2 + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=15 + - numpy >=1.25,<3 + - python_abi 3.12.* *_cp312 + constrains: + - adbc-driver-postgresql >=1.2.0 + - adbc-driver-sqlite >=1.2.0 + - beautifulsoup4 >=4.12.3 + - blosc >=1.21.3 + - bottleneck >=1.4.2 + - fastparquet >=2024.11.0 + - fsspec >=2024.10.0 + - gcsfs >=2024.10.0 + - html5lib >=1.1 + - hypothesis >=6.116.0 + - jinja2 >=3.1.5 + - lxml >=5.3.0 + - matplotlib >=3.9.3 + - numba >=0.60.0 + - numexpr >=2.10.2 + - odfpy >=1.4.1 + - openpyxl >=3.1.5 + - psycopg2 >=2.9.10 + - pyarrow >=13.0.0 + - pyiceberg >=0.8.1 + - pymysql >=1.1.1 + - pyqt5 >=5.15.9 + - pyreadstat >=1.2.8 + - pytables >=3.10.1 + - pytest >=8.3.4 + - pytest-xdist >=3.6.1 + - python-calamine >=0.3.0 + - pytz >=2024.2 + - pyxlsb >=1.0.10 + - qtpy >=2.4.2 + - scipy >=1.14.1 + - s3fs >=2024.10.0 + - sqlalchemy >=2.0.36 + - tabulate >=0.9.0 + - xarray >=2024.10.0 + - xlrd >=2.0.1 + - xlsxwriter >=3.2.0 + - zstandard >=0.23.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=compressed-mapping + run_exports: {} + size: 14976520 + timestamp: 1789803399961 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.6-np2py313h4900a6c_0.conda + sha256: 8a4ee0d733e2c4be00ad3c80a3bc97a28837f611e45e7f4384d061f392827841 + md5: 871596bf7cdadf8ccff03437e9b92173 + depends: + - python + - numpy >=1.26.0 + - python-dateutil >=2.8.2 + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - libstdcxx >=15 + - numpy >=1.25,<3 + - python_abi 3.13.* *_cp313 + constrains: + - adbc-driver-postgresql >=1.2.0 + - adbc-driver-sqlite >=1.2.0 + - beautifulsoup4 >=4.12.3 + - blosc >=1.21.3 + - bottleneck >=1.4.2 + - fastparquet >=2024.11.0 + - fsspec >=2024.10.0 + - gcsfs >=2024.10.0 + - html5lib >=1.1 + - hypothesis >=6.116.0 + - jinja2 >=3.1.5 + - lxml >=5.3.0 + - matplotlib >=3.9.3 + - numba >=0.60.0 + - numexpr >=2.10.2 + - odfpy >=1.4.1 + - openpyxl >=3.1.5 + - psycopg2 >=2.9.10 + - pyarrow >=13.0.0 + - pyiceberg >=0.8.1 + - pymysql >=1.1.1 + - pyqt5 >=5.15.9 + - pyreadstat >=1.2.8 + - pytables >=3.10.1 + - pytest >=8.3.4 + - pytest-xdist >=3.6.1 + - python-calamine >=0.3.0 + - pytz >=2024.2 + - pyxlsb >=1.0.10 + - qtpy >=2.4.2 + - scipy >=1.14.1 + - s3fs >=2024.10.0 + - sqlalchemy >=2.0.36 + - tabulate >=0.9.0 + - xarray >=2024.10.0 + - xlrd >=2.0.1 + - xlsxwriter >=3.2.0 + - zstandard >=0.23.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=compressed-mapping + run_exports: {} + size: 15128892 + timestamp: 1789803430881 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.6-np2py314h9e1d7c2_0.conda + sha256: 68a1803d2f72f6911f2cf2a9ea0eae483fc494a09d9feb8da81f03757795c4da + md5: e0f55ab2a87a7f0483a633ac39557098 + depends: + - python + - numpy >=1.26.0 + - python-dateutil >=2.8.2 + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=15 + - libgcc >=15 + - numpy >=1.25,<3 + - python_abi 3.14.* *_cp314 + constrains: + - adbc-driver-postgresql >=1.2.0 + - adbc-driver-sqlite >=1.2.0 + - beautifulsoup4 >=4.12.3 + - blosc >=1.21.3 + - bottleneck >=1.4.2 + - fastparquet >=2024.11.0 + - fsspec >=2024.10.0 + - gcsfs >=2024.10.0 + - html5lib >=1.1 + - hypothesis >=6.116.0 + - jinja2 >=3.1.5 + - lxml >=5.3.0 + - matplotlib >=3.9.3 + - numba >=0.60.0 + - numexpr >=2.10.2 + - odfpy >=1.4.1 + - openpyxl >=3.1.5 + - psycopg2 >=2.9.10 + - pyarrow >=13.0.0 + - pyiceberg >=0.8.1 + - pymysql >=1.1.1 + - pyqt5 >=5.15.9 + - pyreadstat >=1.2.8 + - pytables >=3.10.1 + - pytest >=8.3.4 + - pytest-xdist >=3.6.1 + - python-calamine >=0.3.0 + - pytz >=2024.2 + - pyxlsb >=1.0.10 + - qtpy >=2.4.2 + - scipy >=1.14.1 + - s3fs >=2024.10.0 + - sqlalchemy >=2.0.36 + - tabulate >=0.9.0 + - xarray >=2024.10.0 + - xlrd >=2.0.1 + - xlsxwriter >=3.2.0 + - zstandard >=0.23.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=compressed-mapping + run_exports: {} + size: 15425802 + timestamp: 1789803361338 - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-h8b3dc9c_1.conda sha256: 9ebb10a4eb3be51ae67d85c679f5a7a50cb040ed25c783e6331a225ea09991d4 md5: 06f6113cf1ff4a54b65f87ead132a5f1 @@ -4901,6 +7268,30 @@ packages: - pcre2 >=10.47,<10.48.0a0 size: 1222481 timestamp: 1763655398280 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py312h38079b3_4.conda + sha256: 057db21cb235e47a80f36ffbed86f4c4a11aec5d20505278a8f55142ea41e287 + md5: 87d8e4053a968e8b20937e6cdd945a18 + depends: + - python + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + - libtiff >=4.7.2,<4.8.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libjpeg-turbo >=3.2.0,<4.0a0 + - lcms2 >=2.19.1,<3.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - python_abi 3.12.* *_cp312 + - openjpeg >=2.5.4,<3.0a0 + - libxcb >=1.17.0,<2.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - tk >=8.6.13,<8.7.0a0 + license: HPND + purls: + - pkg:pypi/pillow?source=compressed-mapping + run_exports: {} + size: 1060052 + timestamp: 1789122647267 - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py312h50c33e8_0.conda sha256: 76b2e56c7a903a06be1210d35f35c2a8dcdc57912fda5c96b2e68acfd2b281fe md5: d749d04e1965315078f29320565c595a @@ -4925,6 +7316,30 @@ packages: run_exports: {} size: 1064129 timestamp: 1782912080163 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py313h3b26573_4.conda + sha256: 26d0fec97210b130c5d4299a0d648e78a7386be1cc90ae25618fa4b838f1627a + md5: 6739325f3022c709753d26fff83ae20e + depends: + - python + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - libwebp-base >=1.6.0,<2.0a0 + - libtiff >=4.7.2,<4.8.0a0 + - tk >=8.6.13,<8.7.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - openjpeg >=2.5.4,<3.0a0 + - lcms2 >=2.19.1,<3.0a0 + - libxcb >=1.17.0,<2.0a0 + - libjpeg-turbo >=3.2.0,<4.0a0 + license: HPND + purls: + - pkg:pypi/pillow?source=compressed-mapping + run_exports: {} + size: 1072896 + timestamp: 1789122647267 - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py313h80991f8_0.conda sha256: cb3e51a639d19e04d0ea197ff6f6805a40eeef92d762642f28fa1cd1d25f672a md5: 730e462e7e141813192b606cf07ebdd0 @@ -4949,6 +7364,30 @@ packages: run_exports: {} size: 1077037 timestamp: 1782912080163 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py314h50bfbbb_4.conda + sha256: d662d735be70bea19172bb9fc8eade16ec88a82459ee9c9497788bd0d52c468e + md5: 2180323126daa9971a80cc679cf12f46 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - libwebp-base >=1.6.0,<2.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - python_abi 3.14.* *_cp314 + - lcms2 >=2.19.1,<3.0a0 + - openjpeg >=2.5.4,<3.0a0 + - libtiff >=4.7.2,<4.8.0a0 + - libxcb >=1.17.0,<2.0a0 + - tk >=8.6.13,<8.7.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - libjpeg-turbo >=3.2.0,<4.0a0 + license: HPND + purls: + - pkg:pypi/pillow?source=compressed-mapping + run_exports: {} + size: 1104065 + timestamp: 1789122647267 - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py314h8ec4b1a_0.conda sha256: bcab128df8980514061a78b9c67f5004954048f584da20df8c5a78de9e3f5abb md5: 233e62a8eb894b79b5c93f4f8dec4dcd @@ -4988,6 +7427,18 @@ packages: - pixman >=0.46.4,<1.0a0 size: 376704 timestamp: 1786106621354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h1114479_1013.conda + sha256: 8f27ee1b6166c5be505dba4b0dd0f3b3b81ddec811f6118cc337b90cbd3937a4 + md5: 0aab2923309084c5f89ef32cd39a19b2 + depends: + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + license: GPL-2.0-or-later + license_family: GPL + purls: [] + run_exports: {} + size: 141376 + timestamp: 1788677377648 - conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h7c397b8_1011.conda sha256: ff8d0023722ef5600850074a9bbf418be4d2ec78edbf4d5db45d9f0331f248e4 md5: 435898aaa55d40aa4c016214d9e9ed98 @@ -5000,6 +7451,18 @@ packages: run_exports: {} size: 141002 timestamp: 1786352333107 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h7cc23a3_1004.conda + sha256: 4a44fd00ea73b79ca2c89b0727b9ccf61c506ead71e67a9abfa4c590042b5a4a + md5: bb66b610707b811e3c65181a6431e7a8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + license: MIT + license_family: MIT + purls: [] + run_exports: {} + size: 9630 + timestamp: 1788381877753 - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb03c661_1003.conda sha256: afc3b27b2cbb0487c1d0e963f96e71181ecfb623a24fb393bb19ff974a6382a1 md5: df2c27f36bdb0dde779f55b5df76a352 @@ -5038,6 +7501,58 @@ packages: run_exports: {} size: 13943954 timestamp: 1787219437874 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.11.2-py312hf520645_1.conda + sha256: b2b366746414187fc76b1c0ac5b875dcd48b51d0809c42739d6e8b21d34d3c48 + md5: c4121a6f49ae4e9e9beae7f70530b3be + depends: + - python + - qt6-main 6.11.2.* + - libgcc >=15 + - libstdcxx >=15 + - __glibc >=2.17,<3.0.a0 + - libxslt >=1.1.45,<2.0a0 + - python_abi 3.12.* *_cp312 + - libopengl >=1.7.0,<2.0a0 + - qt6-main >=6.11.2,<7.0a0 + - libclang13 >=23.1.0 + - libgl >=1.7.0,<2.0a0 + - libegl >=1.7.0,<2.0a0 + - libxml2 + - libxml2-16 >=2.15.4 + - libvulkan-loader >=1.4.357.0,<2.0a0 + license: LGPL-3.0-only + license_family: LGPL + purls: + - pkg:pypi/pyside6?source=compressed-mapping + run_exports: {} + size: 13944078 + timestamp: 1788744980531 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.11.2-py313hd9d88b3_1.conda + sha256: 428a6daef5ca7151ad0df1bffe9c865b58f7b76cbee2070189bcdbde3ac2ec7d + md5: 8b19f5888eb8a8ec70b5f987bd4dc8cd + depends: + - python + - qt6-main 6.11.2.* + - libgcc >=15 + - libstdcxx >=15 + - __glibc >=2.17,<3.0.a0 + - libopengl >=1.7.0,<2.0a0 + - libvulkan-loader >=1.4.357.0,<2.0a0 + - libxml2 + - libxml2-16 >=2.15.4 + - qt6-main >=6.11.2,<7.0a0 + - python_abi 3.13.* *_cp313 + - libclang13 >=23.1.0 + - libxslt >=1.1.45,<2.0a0 + - libgl >=1.7.0,<2.0a0 + - libegl >=1.7.0,<2.0a0 + license: LGPL-3.0-only + license_family: LGPL + purls: + - pkg:pypi/pyside6?source=compressed-mapping + run_exports: {} + size: 13947145 + timestamp: 1788745031498 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.11.2-py313hec6a3d9_0.conda sha256: b95defe4916ecb1ba454e0f841b5f5d3e3ebf1b2f9cade094ceaa167cbd26c44 md5: 72123d8621f0c3006dd79e0138130397 @@ -5064,6 +7579,33 @@ packages: run_exports: {} size: 13946979 timestamp: 1787219441414 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.11.2-py314h574d94f_1.conda + sha256: 1c2614b5939edd2626e0fa466de620421cbf896effffa1b69b0eb69a5b345b91 + md5: 27dc92eae9a0bdab0d731f4953860c08 + depends: + - python + - qt6-main 6.11.2.* + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=15 + - libgcc >=15 + - libvulkan-loader >=1.4.357.0,<2.0a0 + - libopengl >=1.7.0,<2.0a0 + - libclang13 >=23.1.0 + - qt6-main >=6.11.2,<7.0a0 + - libgl >=1.7.0,<2.0a0 + - python_abi 3.14.* *_cp314 + - libegl >=1.7.0,<2.0a0 + - libxslt >=1.1.45,<2.0a0 + - libxml2 + - libxml2-16 >=2.15.4 + license: LGPL-3.0-only + license_family: LGPL + purls: + - pkg:pypi/pyside6?source=hash-mapping + - pkg:pypi/shiboken6?source=hash-mapping + run_exports: {} + size: 13950516 + timestamp: 1788744994773 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.11.2-py314h5d85b37_0.conda sha256: ac013bb9f32a448468fad4269659fc772cf9eac7e5c9143c46bbe4f4a5a8922d md5: 78780ea7feb32f4b6e0c9aae536081dd @@ -5123,6 +7665,40 @@ packages: - python size: 31527849 timestamp: 1786445051525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.14-h5f976f7_3_cpython.conda + build_number: 3 + sha256: 14c579b1016da04e4c9f1c5c857272d83ec447317d8c4074a07d59de3cef70ef + md5: 98be3cf76eca2e8871f907a03aed3b84 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.8.1,<3.0a0 + - libffi >=3.7.0,<3.8.0a0 + - libgcc >=15 + - liblzma >=5.8.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libpython 3.12.14 h0c77377_3_cpython + - libsqlite >=3.53.4,<4.0a0 + - libuuid >=2.42.3,<3.0a0 + - libxcrypt >=4.4.38 + - libzlib >=1.3.2,<2.0a0 + - ncurses >=6.6,<7.0a0 + - openssl >=3.5.8,<4.0a0 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + purls: [] + run_exports: + weak: + - python_abi 3.12.* *_cp312 + noarch: + - python + size: 23044161 + timestamp: 1788392496306 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.15-hb101c97_101_cp313.conda build_number: 101 sha256: b7c23d7446502a267f341b27e6820d5e2d53e78c61e721f4af713168ee544cb2 @@ -5155,6 +7731,39 @@ packages: size: 37485991 timestamp: 1786368232136 python_site_packages_path: lib/python3.13/site-packages +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.15-hf47f18c_103_cp313.conda + build_number: 103 + sha256: cc18ba39af0d591ac012c1334ac98aa59ec7be389719b4cd80cc0a58a53019de + md5: 641613f2d89da811bc29fa4cde88ef20 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.8.1,<3.0a0 + - libffi >=3.7.0,<3.8.0a0 + - libgcc >=15 + - liblzma >=5.8.3,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libpython 3.13.15 hdc7f604_103_cp313 + - libsqlite >=3.53.4,<4.0a0 + - libuuid >=2.42.3,<3.0a0 + - libzlib >=1.3.2,<2.0a0 + - ncurses >=6.6,<7.0a0 + - openssl >=3.5.8,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + purls: [] + run_exports: + weak: + - python_abi 3.13.* *_cp313 + noarch: + - python + size: 24369771 + timestamp: 1788387840141 + python_site_packages_path: lib/python3.13/site-packages - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.7-h399a421_100_cp314.conda build_number: 100 sha256: ee59fa05898243b9a068476f4bed9461abef4487ebcdc094f569c4c47dc4a732 @@ -5188,6 +7797,40 @@ packages: size: 37028007 timestamp: 1787154417160 python_site_packages_path: lib/python3.14/site-packages +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.7-hcd007b5_106_cp314.conda + build_number: 106 + sha256: 4cd05407d6b07d00fd5b6cc78bd2f60ae5e21f777eb26ead82be2e3751c610a1 + md5: 56ee91e118243e46bfc0c41e4030d354 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.8.1,<3.0a0 + - libffi >=3.7.0,<3.8.0a0 + - libgcc >=15 + - liblzma >=5.8.3,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libpython 3.14.7 hdc7f604_106_cp314 + - libsqlite >=3.53.4,<4.0a0 + - libuuid >=2.42.3,<3.0a0 + - libzlib >=1.3.2,<2.0a0 + - ncurses >=6.6,<7.0a0 + - openssl >=3.5.8,<4.0a0 + - python_abi 3.14.* *_cp314 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - zstd >=1.5.7,<1.6.0a0 + license: Python-2.0 + purls: [] + run_exports: + weak: + - python_abi 3.14.* *_cp314 + noarch: + - python + size: 26484459 + timestamp: 1788383955577 + python_site_packages_path: lib/python3.14/site-packages - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda sha256: cb142bfd92f6e55749365ddc244294fa7b64db6d08c45b018ff1c658907bfcbf md5: 15878599a87992e44c059731771591cb @@ -5399,34 +8042,106 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/scipy?source=hash-mapping + - pkg:pypi/scipy?source=hash-mapping + run_exports: {} + size: 17171066 + timestamp: 1781912954186 +- conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.18.0-py314hf07bd8e_0.conda + sha256: 85503102237f8515ab92319fc14609e894ac9e95e3a1398b0c49db1f9ee50877 + md5: 62c390c1f8f51240f1ebc7ba782669ad + depends: + - __glibc >=2.17,<3.0.a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx >=14 + - numpy <2.7 + - numpy >=1.23,<3 + - numpy >=2.0.0 + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/scipy?source=hash-mapping + run_exports: {} + size: 17260022 + timestamp: 1781912924009 +- conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.18.1-py312h106c528_0.conda + sha256: 1304a96048fd68ae50e30ca4891e4d2851c20c5687b3152045930541a4008121 + md5: 9f57b4b1fa3b51dbf1df6eca1e6c0cfa + depends: + - __glibc >=2.17,<3.0.a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=15 + - libgfortran + - libgfortran5 >=15.3.0 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx >=15 + - numpy <2.8 + - numpy >=1.25,<3 + - numpy >=2.0.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/scipy?source=compressed-mapping + run_exports: {} + size: 17399079 + timestamp: 1789137054012 +- conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.18.1-py313he2a5f1a_0.conda + sha256: cc72d707bd4b20e469eca4102e76d13c65d3a834a4bb49624e9a77733a40c742 + md5: 80d63241bf0145b75cb32df937cc08eb + depends: + - __glibc >=2.17,<3.0.a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=15 + - libgfortran + - libgfortran5 >=15.3.0 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx >=15 + - numpy <2.8 + - numpy >=1.25,<3 + - numpy >=2.0.0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/scipy?source=compressed-mapping run_exports: {} - size: 17171066 - timestamp: 1781912954186 -- conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.18.0-py314hf07bd8e_0.conda - sha256: 85503102237f8515ab92319fc14609e894ac9e95e3a1398b0c49db1f9ee50877 - md5: 62c390c1f8f51240f1ebc7ba782669ad + size: 17382266 + timestamp: 1789137271106 +- conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.18.1-py314h36f0660_0.conda + sha256: 70c5ff1a62a80b2023a352d9185ba49ebff24ceaa024b47a81573d0424f71fe5 + md5: a7ca590bd80b6aaa5b0095e4f8fa0fee depends: - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libgcc >=14 + - libgcc >=15 - libgfortran - - libgfortran5 >=14.3.0 + - libgfortran5 >=15.3.0 - liblapack >=3.9.0,<4.0a0 - - libstdcxx >=14 - - numpy <2.7 - - numpy >=1.23,<3 + - libstdcxx >=15 + - numpy <2.8 + - numpy >=1.25,<3 - numpy >=2.0.0 - python >=3.14,<3.15.0a0 - python_abi 3.14.* *_cp314 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/scipy?source=hash-mapping + - pkg:pypi/scipy?source=compressed-mapping run_exports: {} - size: 17260022 - timestamp: 1781912924009 + size: 17476122 + timestamp: 1789137251549 - conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.5.0-py312h7900ff3_0.conda sha256: 0d07e47cf5de6035e724b64d7f315473b8f7b7dbe8297f4b8d563c8710ea6dd8 md5: a2a3a7d918348b77688e2ed98519a9d5 @@ -5443,6 +8158,22 @@ packages: run_exports: {} size: 33068 timestamp: 1780858489957 +- conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.5.0-py312h7900ff3_2.conda + sha256: 4006e8ffa0d05f3b49ad713ba65163379bf8473e395a4e33b6efed04dc4689a9 + md5: d65c8e382280bb9758c23e20dc91b8d5 + depends: + - cryptography >=2.0 + - dbus + - jeepney >=0.6 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/secretstorage?source=hash-mapping + run_exports: {} + size: 33359 + timestamp: 1788732680712 - conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.5.0-py313h78bf25f_0.conda sha256: f9dfaf76745306d78f73aaff483faf9d0ba1144aae6f1326b01a67af457b35bf md5: b127d964bb31b39d3431a063caf91e97 @@ -5459,6 +8190,22 @@ packages: run_exports: {} size: 33486 timestamp: 1780858508391 +- conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.5.0-py313h78bf25f_2.conda + sha256: b2745f8cfc8c6e4762d3dc5aec71d908e4382b17653dbee2bf390a715215d4b0 + md5: b7fd32063663e40ea01345bf8ce97260 + depends: + - cryptography >=2.0 + - dbus + - jeepney >=0.6 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/secretstorage?source=hash-mapping + run_exports: {} + size: 33817 + timestamp: 1788732699000 - conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.5.0-py314hdafbbf9_0.conda sha256: 1493aadd9fcb4894b879ea0e0e0eed4cb60a60a26bb95b821dcb6ea5def47d06 md5: 2d7b5ae8ad713d8a7097a75a248f8ba3 @@ -5475,6 +8222,22 @@ packages: run_exports: {} size: 34939 timestamp: 1780858492554 +- conda: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.5.0-py314hdafbbf9_2.conda + sha256: bac235125b4433f8fd5f086bc536c5a5c1f29bcc6b7279374f47e45034941c6c + md5: 251259b083a7159e792f00b68c48a3a7 + depends: + - cryptography >=2.0 + - dbus + - jeepney >=0.6 + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/secretstorage?source=hash-mapping + run_exports: {} + size: 35028 + timestamp: 1788732676725 - conda: https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.6-py312h4f23490_0.conda sha256: 0c61eccf3f71b9812da8ced747b1f22bafd6f66f9a64abe06bbe147a03b7322e md5: 423b8676bd6eed60e97097b33f13ea3f @@ -5538,6 +8301,72 @@ packages: run_exports: {} size: 12342973 timestamp: 1764983314123 +- conda: https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.15.0-np2py312h32d774f_1.conda + sha256: 39218a053df0c1cf106b0d2104365fb9c7c37f97d8ccba97270d73b6e65efbac + md5: 2d01f3fca038726411d065894596c854 + depends: + - python + - numpy >=1.23.5,<3 + - scipy >=1.8,!=1.9.2 + - pandas >=1.4,!=2.1.0 + - patsy >=0.5.6 + - packaging >=21.3 + - formulaic >=1.1.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - python_abi 3.12.* *_cp312 + - numpy >=1.25,<3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/statsmodels?source=compressed-mapping + run_exports: {} + size: 13538168 + timestamp: 1788196477208 +- conda: https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.15.0-np2py313hfeff522_1.conda + sha256: de3e0b08ed59b9f79f5639f64203a64b8f1c955c21ba348ff0d8e5995bb71dfe + md5: 916d581d09f36692020ced6e475d6e6a + depends: + - python + - numpy >=1.23.5,<3 + - scipy >=1.8,!=1.9.2 + - pandas >=1.4,!=2.1.0 + - patsy >=0.5.6 + - packaging >=21.3 + - formulaic >=1.1.0 + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 + - numpy >=1.25,<3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/statsmodels?source=hash-mapping + run_exports: {} + size: 13718113 + timestamp: 1788196483254 +- conda: https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.15.0-np2py314h8874201_1.conda + sha256: 88660eb35a62dfed62c71141d5557ab7592e0005cd5471ab3ccaf56504d3a1fc + md5: 028c0406879914bcca4ca068f444f76d + depends: + - python + - numpy >=1.23.5,<3 + - scipy >=1.8,!=1.9.2 + - pandas >=1.4,!=2.1.0 + - patsy >=0.5.6 + - packaging >=21.3 + - formulaic >=1.1.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - numpy >=1.25,<3 + - python_abi 3.14.* *_cp314 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/statsmodels?source=hash-mapping + run_exports: {} + size: 14186809 + timestamp: 1788196478643 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h1df4ec4_4.conda build_number: 104 sha256: a1a241d172c1ccab067ba245206dd048bc3c2d1b84504b53c9468e99adfc16a1 @@ -5572,6 +8401,51 @@ packages: - tk >=8.6.13,<8.7.0a0 size: 3550916 timestamp: 1784229071544 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.10-py312h5cc1888_0.conda + sha256: f895c3ce9ca97435f08b376a4978df10815d0f3c3531feabbe668858b41e250f + md5: b0414832500d750321eddce3822bea7b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=compressed-mapping + run_exports: {} + size: 895392 + timestamp: 1789911035492 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.10-py313h995f894_0.conda + sha256: 66d85753b02254ae528eed5c1908829c685f1c33fb3b58b023bf2bc7557a7cd0 + md5: 94985bd39e52fedc2270adb00e4779e6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=compressed-mapping + run_exports: {} + size: 924176 + timestamp: 1789911065267 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.10-py314h89acca1_0.conda + sha256: c205ceaa1536a8729bdad405ca711e94d2196aba30771029793557f250294598 + md5: d2bd0918d9c10df4fe2355e33fe7bc63 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - python >=3.14,<3.15.0a0 + - python_abi 3.14.* *_cp314 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=compressed-mapping + run_exports: {} + size: 950218 + timestamp: 1789911064461 - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.8-py312h4c3975b_0.conda sha256: 2ea8f8b10e869b675d2fba157b387eaf4eed1696bfc924bb7b28e67d7aa0a947 md5: 5423c2b8f82d60320e65b9ff30babbdf @@ -5717,6 +8591,21 @@ packages: run_exports: {} size: 409562 timestamp: 1770909102180 +- conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-18.0.0-py312h5cc1888_0.conda + sha256: 3b0c8ea41cd161043eb774bcb653e497811e4e6307e5149da7072c4fd70d356e + md5: 070e15c0fbb80b2f2fe405419b763f68 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/unicodedata2?source=compressed-mapping + run_exports: {} + size: 419998 + timestamp: 1789928085789 - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.26.0-h1964d1d_1.conda sha256: a8f1333274382d23721d6f72483ece364631231f8ac3f74389951b1ff2820148 md5: 47e3c5d0b1e968ee49efc7c3fa8ebc0c @@ -5734,6 +8623,65 @@ packages: - wayland >=1.26.0,<2.0a0 size: 339462 timestamp: 1786151675802 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.26.0-hc1c935e_2.conda + sha256: df65b987979e6d7f88e756494da5a230d4f2d08d17437d04eecd35559c3a04e4 + md5: 88a47e22b53e50865b1cabe2eb648352 + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat >=2.8.1,<3.0a0 + - libffi >=3.7.0,<3.8.0a0 + - libgcc >=15 + - libstdcxx >=15 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - wayland >=1.26.0,<2.0a0 + size: 340058 + timestamp: 1787793849093 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.4.1-py312h1b36aeb_0.conda + sha256: b07ed016c0befa20362bbd1b41cd6d730407f27f171ad15811347741a9553bb7 + md5: d06605fe1a45b11cb4f21d2438a3e3a9 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + - python_abi 3.12.* *_cp312 + license: BSD-2-Clause + purls: + - pkg:pypi/wrapt?source=compressed-mapping + run_exports: {} + size: 145019 + timestamp: 1789986016000 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.4.1-py313hd42f317_0.conda + sha256: 03a858fa56874f87c3181234c305e2ec83867b6b806c5fc85e9cc102fa0089bd + md5: 10ba77b688ad23f452400ce55fe63236 + depends: + - python + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.13.* *_cp313 + license: BSD-2-Clause + purls: + - pkg:pypi/wrapt?source=compressed-mapping + run_exports: {} + size: 148000 + timestamp: 1789986017258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.4.1-py314hfe1a184_0.conda + sha256: 1d706a003b2bdee04784a8fac90a14e6f00c3dca91bf4137a5f6db50c358bd42 + md5: 4f79d07d0f466843e04c7a54bd63d6d7 + depends: + - python + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.14.* *_cp314 + license: BSD-2-Clause + purls: + - pkg:pypi/wrapt?source=compressed-mapping + run_exports: {} + size: 149268 + timestamp: 1789986014273 - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda sha256: ad8cab7e07e2af268449c2ce855cbb51f43f4664936eff679b1f3862e6e4b01d md5: fdc27cb255a7a2cc73b7919a968b48f0 @@ -5882,6 +8830,20 @@ packages: - xorg-libx11 >=1.8.13,<2.0a0 size: 839578 timestamp: 1787087012372 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-h7cc23a3_2.conda + sha256: 3ec065b94554dc48a4ca582a960a5484bc166b26e83ce0954653e08d17e8bd53 + md5: da33efee1a93603d92e06d4a2b68def6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - xorg-libxau >=1.0.12,<2.0a0 + size: 18793 + timestamp: 1788960512381 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_2.conda sha256: cbf891f6cc1a859347680af1c8562bc6b033bf182a2a3bb536016932be3206de md5: f06ef439c280a5f90b8bf62355008dbc @@ -5946,6 +8908,20 @@ packages: - xorg-libxdamage >=1.1.6,<2.0a0 size: 13217 timestamp: 1727891438799 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-h7cc23a3_2.conda + sha256: 8a095df9bc1d2e50f2504ce8858a047ae29ea634aad6cc0b43298c63361da6d9 + md5: eabfc45786244de252090cf8d55128a8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=15 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - xorg-libxdmcp >=1.1.5,<2.0a0 + size: 22606 + timestamp: 1789676943335 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_2.conda sha256: c50a16c05ccd7fe7dd6d6cfb539f4e9a491d50f9ed7a5c902fec638f7d0d27be md5: 2e66c929f3d879708335b6ea4557c838 @@ -6150,6 +9126,18 @@ packages: run_exports: {} size: 594844 timestamp: 1786114408394 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hebe6cf0_3.conda + sha256: 8e9c7ca4fcfe9f0c300e4aa853b79c25411fc4e470decfe8f909b74f60dfb6dd + md5: c3d0a6f03ba3aa312777b41b20a71ec0 + depends: + - libgcc >=15 + - __glibc >=2.17,<3.0.a0 + license: MIT + license_family: MIT + purls: [] + run_exports: {} + size: 596340 + timestamp: 1788874111132 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-hebe6cf0_3.conda sha256: d164dfa75ecd538f6fd68765defcc06aa875bc697b9b215362d79a2a73125dd0 md5: e741576fb8f89821ac7c1c537322a33d @@ -6240,6 +9228,18 @@ packages: run_exports: {} size: 7541 timestamp: 1786861415851 +- conda: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.7.0-py314h680f03e_1.conda + noarch: generic + sha256: ad0f78582ee64ec1c66a3daac32986e81b400d3ac719e5a3cbdb22e55065760e + md5: 67924260a851b5273e39f9b28b6b5e24 + depends: + - python >=3.14 + license: BSD-3-Clause AND MIT AND EPL-2.0 + purls: + - pkg:pypi/backports-zstd?source=compressed-mapping + run_exports: {} + size: 7539 + timestamp: 1788491291925 - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda sha256: 0a0544cf95f64394fe4959286f5c71f5444ad58feb0602e53becb27448d24da6 md5: 0f51e2391ade309db462a55611263e9c @@ -6309,6 +9309,18 @@ packages: run_exports: {} size: 45930 timestamp: 1786443506006 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.14-py312hd8ed1ab_3.conda + noarch: generic + sha256: 1052869d599008850098c033f9568a2e28bb31238705969719be69a87474cc93 + md5: adee9213d9a98d7f8b5627209c8b4ae0 + depends: + - python >=3.12,<3.13.0a0 + - python_abi * *_cp312 + license: Python-2.0 + purls: [] + run_exports: {} + size: 47172 + timestamp: 1788391292962 - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.15-py313hd8ed1ab_101.conda noarch: generic sha256: 1015448e0fb319fa8bb23148dd6ea34181cbcdc8f1880df61626db1999533a99 @@ -6321,6 +9333,18 @@ packages: run_exports: {} size: 48329 timestamp: 1786366745175 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.15-py313hd8ed1ab_103.conda + noarch: generic + sha256: c46fe2993a44cfa59e2d7673d77ce29c5bbc72b73e2597d58536eff7c196e57c + md5: 23f5019df9a1d2287cb99af4c81ca8d2 + depends: + - python >=3.13,<3.14.0a0 + - python_abi * *_cp313 + license: Python-2.0 + purls: [] + run_exports: {} + size: 49553 + timestamp: 1788386188585 - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.7-py314hd8ed1ab_100.conda noarch: generic sha256: 2a58aa937a36623e97d23fe595f26f56e0bfe9ecbac7418699f8b5744de15de1 @@ -6333,6 +9357,18 @@ packages: run_exports: {} size: 50365 timestamp: 1787153603657 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.7-py314hd8ed1ab_106.conda + noarch: generic + sha256: fd701880cf6f696420aa5b4b530dbdf0c83a16bdb50aeb760b3159eec5c416bf + md5: 3b52b830ac00367685c08f98f50963bf + depends: + - python >=3.14,<3.15.0a0 + - python_abi * *_cp314 + license: Python-2.0 + purls: [] + run_exports: {} + size: 51289 + timestamp: 1788383537525 - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda sha256: bb47aec5338695ff8efbddbc669064a3b10fe34ad881fb8ad5d64fbfa6910ed1 md5: 4c2a8fef270f6c69591889b93f9f55c1 @@ -6418,6 +9454,17 @@ packages: run_exports: {} size: 78622 timestamp: 1787521663311 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.6-pyhd8ed1ab_0.conda + sha256: f20f0d74a3e31131ec02e24dc555bcf1446bd275c968fc601ec86a8633f7608d + md5: 42afc06f6512975dc9ee5afc15dcc3ee + depends: + - python >=3.11 + license: Unlicense + purls: + - pkg:pypi/filelock?source=compressed-mapping + run_exports: {} + size: 78889 + timestamp: 1788940924870 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b md5: 0c96522c6bdaed4b1566d11387caaf45 @@ -6496,6 +9543,29 @@ packages: run_exports: {} size: 846038 timestamp: 1778770337113 +- conda: https://conda.anaconda.org/conda-forge/noarch/formulaic-1.2.2-pyhd8ed1ab_0.conda + sha256: a6e065128ef1f2b6b2636268409155c1013460babb619e6e8415686305e776ea + md5: f18f43fb3e20ab309d46faebfb3348b0 + depends: + - interface_meta >=1.2 + - narwhals >=1.17 + - numpy >=1.20 + - pandas >=1.3 + - python >=3.10 + - scipy >=1.6 + - typing-extensions >=4.2 + - wrapt >=1.17 + constrains: + - polars >=1 + - pyarrow >=1 + - sympy >=1.3,!=1.10 + license: MIT + license_family: MIT + purls: + - pkg:pypi/formulaic?source=hash-mapping + run_exports: {} + size: 90142 + timestamp: 1780453843138 - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.4.1-pyhcf101f3_0.conda sha256: 307dd6ec90140c3cf4171071b0e5e870abec314f4565c1edd5bc433e942cdcc0 md5: e652ac7756069c456d0da2a922cd7df5 @@ -6589,6 +9659,20 @@ packages: run_exports: {} size: 34766 timestamp: 1779714582554 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.1-pyhcf101f3_0.conda + sha256: 95a074a7d3f58b3494c068d4789c364dcb591c56b70ca6b12f149a540f9aeea4 + md5: 77ec68e0aa61c3fff9ecbf840f93d64e + depends: + - python >=3.10 + - zipp >=3.20 + - python + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/importlib-metadata?source=compressed-mapping + run_exports: {} + size: 34920 + timestamp: 1787943971257 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-7.1.0-pyhd8ed1ab_0.conda sha256: a563a51aa522998172838e867e6dedcf630bc45796e8612f5a1f6d73e9c8125a md5: 0ba6225c279baf7ea9473a62ea0ec9ae @@ -6616,6 +9700,18 @@ packages: run_exports: {} size: 13387 timestamp: 1760831448842 +- conda: https://conda.anaconda.org/conda-forge/noarch/interface_meta-1.3.0-pyhd8ed1ab_1.conda + sha256: cdd4377e9565f383e3e69f26b43fc1abc892fda591fa724af508e498c2dc0859 + md5: 97f07ae607e01877f0454fce4c833e40 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/interface-meta?source=hash-mapping + run_exports: {} + size: 18422 + timestamp: 1734284523576 - conda: https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.4.0-pyhcf101f3_3.conda sha256: 3cc991f0f09dfd00d2626e745ba68da03e4f1dcbb7b36dd20f7a7373643cd5d5 md5: d59568bad316413c89831456e691de29 @@ -6758,6 +9854,19 @@ packages: run_exports: {} size: 15851 timestamp: 1749895533014 +- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.26.0-pyh5ded981_0.conda + sha256: 54b91bd1aa1687b92f9e2fa5169bbf9f2bc1c428179109dd9e9fcc6b2e8c9479 + md5: afb7146667be7c8121f5f8337be60680 + depends: + - python >=3.11 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/narwhals?source=compressed-mapping + run_exports: {} + size: 296900 + timestamp: 1788964134075 - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda sha256: 4fa40e3e13fc6ea0a93f67dfc76c96190afd7ea4ffc1bac2612d954b42cdc3ee md5: eb52d14a901e23c39e9e7b4a1a5c015f @@ -6797,6 +9906,20 @@ packages: run_exports: {} size: 193450 timestamp: 1760998269054 +- conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.3-pyhcf101f3_0.conda + sha256: d204290be1e2d895ebd945ffd310ff00ea6a7670fe20a92a04ade7d197cdadf5 + md5: 13e1355debaf21a0b8c2726697ebb01b + depends: + - numpy >=1.4.0 + - packaging + - python >=3.10 + - python + license: BSD-2-Clause AND PSF-2.0 + purls: + - pkg:pypi/patsy?source=hash-mapping + run_exports: {} + size: 193838 + timestamp: 1788106018957 - conda: https://conda.anaconda.org/conda-forge/noarch/pip-26.2.1-pyh145f28c_0.conda sha256: 0f7021cfb3ff454c91a5e28e1f5060906a52c6d1cde3f879a7d03ac33c28b1c3 md5: 573cb3ed111004230ed3de650653cd4d @@ -6823,6 +9946,19 @@ packages: run_exports: {} size: 1199593 timestamp: 1785914492234 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.11-pyh5ded981_0.conda + sha256: ba9e3a7ba041b569fb1c369ad5d16e47d79a0768b7a3a9bf469a5730c1c90cd8 + md5: 8fbbcac647ae8d387f011d2f0fe9041c + depends: + - python >=3.11 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/platformdirs?source=compressed-mapping + run_exports: {} + size: 28536 + timestamp: 1789914745574 - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.3-pyhcf101f3_0.conda sha256: 810511c90649ca59fa0174958a210fd5051c0a7848cfbd42c87054a6836726b5 md5: 31474b00d0ca5accac14eda09ba11216 @@ -7013,6 +10149,20 @@ packages: run_exports: {} size: 38785 timestamp: 1786705670745 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.6.1-pyh5ded981_0.conda + sha256: 396bf7b5a62eb3a12d20e16962acf36f9018332b2842d29548399df03b9deaa4 + md5: ae0feb6a3f297952bd4f4270fe77f530 + depends: + - python >=3.11 + - filelock >=3.15.4 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/python-discovery?source=compressed-mapping + run_exports: {} + size: 39252 + timestamp: 1789811798811 - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.13-hd8ed1ab_1.conda sha256: cf0972372c4469881e13e9342ab51aed8b25d0d5dff45fcd0fe847b3dd11f97c md5: 87225cc6af32ec67528efa39c4945aaf @@ -7024,6 +10174,17 @@ packages: run_exports: {} size: 45874 timestamp: 1786443525835 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.14-hd8ed1ab_3.conda + sha256: 7096d98d7dd0cdb9256c5714d7228a8ce7aca3bd014304ea5c1673c259df72ef + md5: 7fafcd204183cfa7c1ae4ad9c2d8d414 + depends: + - cpython 3.12.14.* + - python_abi * *_cp312 + license: Python-2.0 + purls: [] + run_exports: {} + size: 47142 + timestamp: 1788391303150 - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.15-h4df99d1_101.conda sha256: bc9fcc5c7bf80a382fc2b38a22db3549b39dc5ae114537c32fe610be005d16ba md5: c5e565a020c31fd7aba0a87dc2fc29d0 @@ -7035,6 +10196,17 @@ packages: run_exports: {} size: 48362 timestamp: 1786366765154 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.15-h4df99d1_103.conda + sha256: ce01f8f3c9fde229b26e0d37b85e1566bb32fcf26750af95d6313b4a369775c3 + md5: 86d251460e192368d2982e5b0dcad798 + depends: + - cpython 3.13.15.* + - python_abi * *_cp313 + license: Python-2.0 + purls: [] + run_exports: {} + size: 49529 + timestamp: 1788386202638 - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.7-h4df99d1_100.conda sha256: 05d8d9f928cf1ba1217b3cde7fb41dfe2995feb4e6b4ef5b1a9f19ce44e18f66 md5: c56da48fd8d5d1feb1829d0241fd338c @@ -7046,6 +10218,17 @@ packages: run_exports: {} size: 50369 timestamp: 1787153622440 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.7-h4df99d1_106.conda + sha256: 801ef80bc9f9394d9b3b5cae5a90c33cbbc33004b3e93195b93af818aad8888b + md5: b672ecb44198ade19ef249bf99f4b1ff + depends: + - cpython 3.14.7.* + - python_abi * *_cp314 + license: Python-2.0 + purls: [] + run_exports: {} + size: 51276 + timestamp: 1788383547342 - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda build_number: 8 sha256: 80677180dd3c22deb7426ca89d6203f1c7f1f256f2d5a94dc210f6e758229809 @@ -7058,6 +10241,18 @@ packages: run_exports: {} size: 6958 timestamp: 1752805918820 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-9_cp312.conda + build_number: 9 + sha256: ee9c2922e07afc85fc82d5fa82c9ac2c79da3be3283a5e17bf2f2ae38dbd02fb + md5: 4c32076993e6270825441d059ab5c18b + constrains: + - python 3.12.* *_cpython + license: BSD-3-Clause + license_family: BSD + purls: [] + run_exports: {} + size: 6751 + timestamp: 1788302823694 - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda build_number: 8 sha256: 210bffe7b121e651419cb196a2a63687b087497595c9be9d20ebe97dd06060a7 @@ -7070,6 +10265,18 @@ packages: run_exports: {} size: 7002 timestamp: 1752805902938 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-9_cp313.conda + build_number: 9 + sha256: 9dc0cb6a20ebc7e9bcd8c6868f2bec083c114b0ba20b7118405c036533d5c522 + md5: c5abc97af551bc12d71305852392f75c + constrains: + - python 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: [] + run_exports: {} + size: 6769 + timestamp: 1788302828005 - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda build_number: 8 sha256: ad6d2e9ac39751cc0529dd1566a26751a0bf2542adb0c232533d32e176e21db5 @@ -7082,6 +10289,18 @@ packages: run_exports: {} size: 6989 timestamp: 1752805904792 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-9_cp314.conda + build_number: 9 + sha256: e7f8e965bbfb98e08feb2365cacdad8bb218fa5b5a0a2752f747287f425f213c + md5: 350d89b50d7de805abf2e63e29dee451 + constrains: + - python 3.14.* *_cp314 + license: BSD-3-Clause + license_family: BSD + purls: [] + run_exports: {} + size: 6791 + timestamp: 1788302824440 - conda: https://conda.anaconda.org/conda-forge/noarch/readme_renderer-45.0-pyhcf101f3_1.conda sha256: 352b0c6b8c9d25cb16518420e45eae8a3be6718c924c747032a5c6578851b4c9 md5: be7d616ec4d4e8eec1e4b3f3fe144af4 @@ -7099,6 +10318,23 @@ packages: run_exports: {} size: 22324 timestamp: 1781105511621 +- conda: https://conda.anaconda.org/conda-forge/noarch/readme_renderer-46.0-pyhcf101f3_0.conda + sha256: d91c9c4ff6fba4248f5076f34aa26d20b54626f43a12f348a8ed1844057dbc26 + md5: e39ab45098c95a6463e2a626eed5fcbb + depends: + - nh3 >=0.2.14 + - comrak >=0.0.13 + - docutils >=0.21.2 + - pygments >=2.5.1 + - python >=3.10 + - python + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/readme-renderer?source=hash-mapping + run_exports: {} + size: 22552 + timestamp: 1788095111892 - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda sha256: 1715246b19c9f85ee022933b4845f2fc14ac9184981b7b7d9b728bec8e9588da md5: 4a85203c1d80c1059086ae860836ffb9 @@ -7250,6 +10486,17 @@ packages: run_exports: {} size: 42936 timestamp: 1785252141368 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.16.0-h69aa097_0.conda + sha256: b141933ece3518f6d7b75dfb59451e2f26b405a44c18e2518a83e9a02e09315c + md5: c680b5747e8c4c8f23dca0bb7042a8fc + depends: + - typing_extensions ==4.16.0 pyhcf101f3_0 + license: PSF-2.0 + license_family: PSF + purls: [] + run_exports: {} + size: 94080 + timestamp: 1783002732887 - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.16.0-pyhcf101f3_0.conda sha256: 2d888f90af0686044882c74193ec80a90ec1943145d94a7b1b048958acda1848 md5: c70ad746c22219b9700931707482992c @@ -7287,6 +10534,22 @@ packages: run_exports: {} size: 103560 timestamp: 1778188657149 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.8.0-pyhd8ed1ab_0.conda + sha256: c5511c190ab55168ca412f3c54592fbf677ae6250784cb72b227a7cf3f538f7d + md5: 407a3d3778570bae8e8fcf554e803e43 + depends: + - backports.zstd >=1.0.0 + - brotli-python >=1.2.0 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.11 + license: MIT + license_family: MIT + purls: + - pkg:pypi/urllib3?source=compressed-mapping + run_exports: {} + size: 107485 + timestamp: 1789566710244 - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.7.4-pyhcf101f3_0.conda sha256: 27c96f147dd74c713b3d4696a53c0c5adf890f2fb3fa512419728cb0026461e7 md5: 90a05eca97a7d9a34a055b3d12be08ad @@ -7306,6 +10569,22 @@ packages: run_exports: {} size: 3894937 timestamp: 1786427893830 +- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.9.0-pyh5ded981_0.conda + sha256: 568a27218e2494f812401eb4a7e24ad88ead88ccb2b76e55984b9660ffe50bd1 + md5: e5f0d028a80952fd4c500bb96da6f398 + depends: + - python >=3.11 + - distlib >=0.3.7,<1 + - filelock >=3.24.2,<4 + - platformdirs >=3.9.1,<5 + - python-discovery >=1.6 + - python + license: MIT + purls: + - pkg:pypi/virtualenv?source=compressed-mapping + run_exports: {} + size: 3991037 + timestamp: 1789975521980 - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.48.0-pyhd8ed1ab_0.conda sha256: ba64b29b6d418024cb565081a1799262cb2780d2534ff4c14f76aa858c4286cd md5: 9a2124517bfd5d792e0f7b86eefdfeb8 @@ -9701,6 +12980,186 @@ packages: - networkx - parallelbar requires_python: '>=3.10' +- pypi: https://download-r2.pytorch.org/whl/triton_xpu-3.7.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + name: triton-xpu + version: 3.7.0 + sha256: a6663ebe43e3c0d560ff774708632d7a75208ee64a291c1724ed5c16a92d1c72 + index: https://download.pytorch.org/whl/xpu + requires_dist: + - pyelftools + - importlib-metadata ; python_full_version < '3.10' + - cmake>=3.20,<4.0 ; extra == 'build' + - lit ; extra == 'build' + - autopep8 ; extra == 'tests' + - isort ; extra == 'tests' + - numpy ; extra == 'tests' + - pytest ; extra == 'tests' + - pytest-forked ; extra == 'tests' + - pytest-xdist ; extra == 'tests' + - scipy>=1.7.1 ; extra == 'tests' + - llnl-hatchet ; extra == 'tests' + - matplotlib ; extra == 'tutorials' + - pandas<3.0 ; extra == 'tutorials' + - tabulate ; extra == 'tutorials' + requires_python: '>=3.10,<3.15' +- pypi: https://download-r2.pytorch.org/whl/triton_xpu-3.7.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + name: triton-xpu + version: 3.7.0 + sha256: 08c8d43b2831faf9d6799480df2b45dde58102257aebd810d07a2ce18cd4e5df + index: https://download.pytorch.org/whl/xpu + requires_dist: + - pyelftools + - importlib-metadata ; python_full_version < '3.10' + - cmake>=3.20,<4.0 ; extra == 'build' + - lit ; extra == 'build' + - autopep8 ; extra == 'tests' + - isort ; extra == 'tests' + - numpy ; extra == 'tests' + - pytest ; extra == 'tests' + - pytest-forked ; extra == 'tests' + - pytest-xdist ; extra == 'tests' + - scipy>=1.7.1 ; extra == 'tests' + - llnl-hatchet ; extra == 'tests' + - matplotlib ; extra == 'tutorials' + - pandas<3.0 ; extra == 'tutorials' + - tabulate ; extra == 'tutorials' + requires_python: '>=3.10,<3.15' +- pypi: https://download-r2.pytorch.org/whl/triton_xpu-3.7.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + name: triton-xpu + version: 3.7.0 + sha256: 1e204bb184498f0228dde0bc764788aef4a3135e5209e8d25902758666c30aa8 + index: https://download.pytorch.org/whl/xpu + requires_dist: + - pyelftools + - importlib-metadata ; python_full_version < '3.10' + - cmake>=3.20,<4.0 ; extra == 'build' + - lit ; extra == 'build' + - autopep8 ; extra == 'tests' + - isort ; extra == 'tests' + - numpy ; extra == 'tests' + - pytest ; extra == 'tests' + - pytest-forked ; extra == 'tests' + - pytest-xdist ; extra == 'tests' + - scipy>=1.7.1 ; extra == 'tests' + - llnl-hatchet ; extra == 'tests' + - matplotlib ; extra == 'tutorials' + - pandas<3.0 ; extra == 'tutorials' + - tabulate ; extra == 'tutorials' + requires_python: '>=3.10,<3.15' +- pypi: https://download-r2.pytorch.org/whl/xpu/torch-2.11.0%2Bxpu-cp312-cp312-linux_x86_64.whl + name: torch + version: 2.11.0+xpu + index: https://download.pytorch.org/whl/xpu + requires_dist: + - filelock + - typing-extensions>=4.10.0 + - setuptools<82 + - sympy>=1.13.3 + - networkx>=2.5.1 + - jinja2 + - fsspec>=0.8.5 + - intel-cmplr-lib-rt==2025.3.2 + - intel-cmplr-lib-ur==2025.3.2 + - intel-cmplr-lic-rt==2025.3.2 + - intel-sycl-rt==2025.3.2 + - oneccl-devel==2021.17.2 ; platform_machine == 'x86_64' and sys_platform == 'linux' + - oneccl==2021.17.2 ; platform_machine == 'x86_64' and sys_platform == 'linux' + - impi-rt==2021.17.2 ; platform_machine == 'x86_64' and sys_platform == 'linux' + - onemkl-license==2025.3.1 + - onemkl-sycl-blas==2025.3.1 + - onemkl-sycl-dft==2025.3.1 + - onemkl-sycl-lapack==2025.3.1 + - onemkl-sycl-rng==2025.3.1 + - onemkl-sycl-sparse==2025.3.1 + - dpcpp-cpp-rt==2025.3.2 + - intel-opencl-rt==2025.3.2 + - mkl==2025.3.1 + - intel-openmp==2025.3.2 + - tbb==2022.3.1 + - tcmlib==1.4.1 + - umf==1.0.3 + - intel-pti==0.16.0 + - triton-xpu==3.7.0 + - optree>=0.13.0 ; extra == 'optree' + - opt-einsum>=3.3 ; extra == 'opt-einsum' + - pyyaml ; extra == 'pyyaml' + requires_python: '>=3.10' +- pypi: https://download-r2.pytorch.org/whl/xpu/torch-2.11.0%2Bxpu-cp313-cp313-linux_x86_64.whl + name: torch + version: 2.11.0+xpu + index: https://download.pytorch.org/whl/xpu + requires_dist: + - filelock + - typing-extensions>=4.10.0 + - setuptools<82 + - sympy>=1.13.3 + - networkx>=2.5.1 + - jinja2 + - fsspec>=0.8.5 + - intel-cmplr-lib-rt==2025.3.2 + - intel-cmplr-lib-ur==2025.3.2 + - intel-cmplr-lic-rt==2025.3.2 + - intel-sycl-rt==2025.3.2 + - oneccl-devel==2021.17.2 ; platform_machine == 'x86_64' and sys_platform == 'linux' + - oneccl==2021.17.2 ; platform_machine == 'x86_64' and sys_platform == 'linux' + - impi-rt==2021.17.2 ; platform_machine == 'x86_64' and sys_platform == 'linux' + - onemkl-license==2025.3.1 + - onemkl-sycl-blas==2025.3.1 + - onemkl-sycl-dft==2025.3.1 + - onemkl-sycl-lapack==2025.3.1 + - onemkl-sycl-rng==2025.3.1 + - onemkl-sycl-sparse==2025.3.1 + - dpcpp-cpp-rt==2025.3.2 + - intel-opencl-rt==2025.3.2 + - mkl==2025.3.1 + - intel-openmp==2025.3.2 + - tbb==2022.3.1 + - tcmlib==1.4.1 + - umf==1.0.3 + - intel-pti==0.16.0 + - triton-xpu==3.7.0 + - optree>=0.13.0 ; extra == 'optree' + - opt-einsum>=3.3 ; extra == 'opt-einsum' + - pyyaml ; extra == 'pyyaml' + requires_python: '>=3.10' +- pypi: https://download-r2.pytorch.org/whl/xpu/torch-2.11.0%2Bxpu-cp314-cp314-linux_x86_64.whl + name: torch + version: 2.11.0+xpu + index: https://download.pytorch.org/whl/xpu + requires_dist: + - filelock + - typing-extensions>=4.10.0 + - setuptools<82 + - sympy>=1.13.3 + - networkx>=2.5.1 + - jinja2 + - fsspec>=0.8.5 + - intel-cmplr-lib-rt==2025.3.2 + - intel-cmplr-lib-ur==2025.3.2 + - intel-cmplr-lic-rt==2025.3.2 + - intel-sycl-rt==2025.3.2 + - oneccl-devel==2021.17.2 ; platform_machine == 'x86_64' and sys_platform == 'linux' + - oneccl==2021.17.2 ; platform_machine == 'x86_64' and sys_platform == 'linux' + - impi-rt==2021.17.2 ; platform_machine == 'x86_64' and sys_platform == 'linux' + - onemkl-license==2025.3.1 + - onemkl-sycl-blas==2025.3.1 + - onemkl-sycl-dft==2025.3.1 + - onemkl-sycl-lapack==2025.3.1 + - onemkl-sycl-rng==2025.3.1 + - onemkl-sycl-sparse==2025.3.1 + - dpcpp-cpp-rt==2025.3.2 + - intel-opencl-rt==2025.3.2 + - mkl==2025.3.1 + - intel-openmp==2025.3.2 + - tbb==2022.3.1 + - tcmlib==1.4.1 + - umf==1.0.3 + - intel-pti==0.16.0 + - triton-xpu==3.7.0 + - optree>=0.13.0 ; extra == 'optree' + - opt-einsum>=3.3 ; extra == 'opt-einsum' + - pyyaml ; extra == 'pyyaml' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/00/78/9cbcc1c073b9d4918e925af1a059762265dc65004e020511b2a06fbfd020/pydssp-0.9.1-py3-none-any.whl name: pydssp version: 0.9.1 @@ -10190,6 +13649,12 @@ packages: - netcdf4>=1.7.1 ; extra == 'test' - ruff==0.6.1 ; extra == 'lint' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/08/59/8d381a2cfe8d36c4f4ff9f94769ff2809bfc16014d888360b0e24c7e5c6b/tbb-2022.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + name: tbb + version: 2022.3.1 + sha256: 534c089eca6bcf148408684c156229d5f09c01d323b685b15739f41985b529d7 + requires_dist: + - tcmlib==1.* - pypi: https://files.pythonhosted.org/packages/08/b8/2bc2590a34c733ea0570f366e6ad7d889d05c7825bd3ccab01f36ece71c6/zstd-1.5.7.2-cp312-cp312-macosx_11_0_arm64.whl name: zstd version: 1.5.7.2 @@ -10205,6 +13670,16 @@ packages: name: zstd version: 1.5.7.2 sha256: 6d8684c69009be49e1b18ec251a5eb0d7e24f93624990a8a124a1da66a92fc8a +- pypi: https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl + name: anyio + version: 4.15.1 + sha256: 6152fdbbf9a77fdec97731721bebf7c4c44f7c29b424b0065826173efc7ed101 + requires_dist: + - exceptiongroup>=1.0.2 ; python_full_version < '3.11' + - idna>=2.8 + - typing-extensions>=4.16.0 ; python_full_version < '3.15' + - trio>=0.32.0 ; extra == 'trio' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl name: jmespath version: 1.1.0 @@ -10229,6 +13704,36 @@ packages: requires_dist: - numpy requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/18/53/84099323c2ec4be98d935f63c033ac4151ee83836ca1050ede3b3aadf155/joblib-1.6.0-py3-none-any.whl + name: joblib + version: 1.6.0 + sha256: 3dbbf9f6e4b592a2357b854608e980fe6390d131d7a82f011a377ef2ebef7aba + requires_dist: + - cloudpickle>=3.0 + - distributed ; extra == 'test' + - lz4 ; extra == 'test' + - numpy ; extra == 'test' + - memory-profiler ; extra == 'test' + - pytest ; extra == 'test' + - pytest-asyncio ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-run-parallel ; extra == 'test' + - pytest-timeout ; extra == 'test' + - threadpoolctl ; extra == 'test' + - distributed ; extra == 'docs' + - lz4 ; extra == 'docs' + - numpy ; extra == 'docs' + - numpydoc ; extra == 'docs' + - matplotlib ; extra == 'docs' + - pandas ; extra == 'docs' + - psutil ; extra == 'docs' + - sphinx ; extra == 'docs' + - pydata-sphinx-theme ; extra == 'docs' + - sphinx-gallery ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-design ; extra == 'docs' + - tqdm ; extra == 'docs' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/19/03/8c63e8cf52958534ef688625965ab04c269a6cadd8caef16758b380a821a/msgpack-1.2.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl name: msgpack version: 1.2.1 @@ -10276,6 +13781,10 @@ packages: - opt-einsum>=3.3 ; extra == 'opt-einsum' - pyyaml ; extra == 'pyyaml' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/1b/d7/ffb7e58ac260737b5076e2738ce198468a4efb3ba1885bced038801c387a/intel_cmplr_lib_rt-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + name: intel-cmplr-lib-rt + version: 2025.3.2 + sha256: c413efc1b2ddd8a879e9518bcbc375541b8b633951b2825684571d833aea26ad - pypi: https://files.pythonhosted.org/packages/1d/04/cb4e8ba80ba81790d02dcc69d7529961140fc114abde927c99e9ba9c9457/biotite-1.7.1-cp312-cp312-manylinux_2_28_x86_64.whl name: biotite version: 1.7.1 @@ -10358,6 +13867,11 @@ packages: - pooch>=1.8.0 ; extra == 'tests' - conda-lock==3.0.1 ; extra == 'maintenance' requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/20/3b/000c79c3f9c06b7542225a5d3a7f9a85405da7224b3b9af94a491d07abea/regex-2026.9.10-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: regex + version: 2026.9.10 + sha256: bafa41b0dd63669e5c0f8adf3d24819efeb73c847f492eb011212eb352e69041 + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl name: ptyprocess version: 0.7.0 @@ -10371,6 +13885,26 @@ packages: version: 3.4.0 sha256: 69bb92469f86a1565195ece4ac0323943e83477171b91d24c35afe028a90d7cd requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/23/e5/688703d357e5393f708d98eb189fd415ae69e39f6de03c6bd4005aef6118/scikit_learn-1.9.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + name: scikit-learn + version: 1.9.1 + sha256: 55e79d6e9b0923f1a978179822bd43d7f5543f45e970a00fe861f43486380aba + requires_dist: + - numpy>=1.24.1 + - scipy>=1.10.0 + - joblib>=1.4.0 + - narwhals>=2.0.1 + - threadpoolctl>=3.5.0 + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/24/f6/f4e38bb1a81fbda3afa2d79aa95b5a5d73c838977c1f86fbf73e7dafe676/onemkl_sycl_lapack-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + name: onemkl-sycl-lapack + version: 2025.3.1 + sha256: 360fc636bc0832d5a2ee2d3c4f440145ec43d94c170a351d588a9af7a84849ce + requires_dist: + - dpcpp-cpp-rt==2025.* + - intel-opencl-rt==2025.* + - mkl==2025.3.1 + - onemkl-sycl-blas==2025.3.1 - pypi: https://files.pythonhosted.org/packages/26/0d/8603382f61abd0db35841148ddc1ffd607bf3100b11c6e1dab6d2fc44e72/torch-2.11.0-cp314-cp314-macosx_11_0_arm64.whl name: torch version: 2.11.0 @@ -10469,6 +14003,52 @@ packages: version: 2026.7.19 sha256: c0d702548d89d572b2929879bc883bb7a4c4709efafe4512cadee56c55c9bd15 requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/2d/1e/65b59cf518c106aa755e7f7da3099027738687a862ec785060702a481320/ipython-9.17.1-py3-none-any.whl + name: ipython + version: 9.17.1 + sha256: 6d1645743cfd1a07eb695d85aa2b5fa66721f8cbae9431d4049f7084bbf06509 + requires_dist: + - colorama>=0.4.4 ; sys_platform == 'win32' + - ipython-pygments-lexers>=1.0.0 + - jedi>=0.18.2 + - matplotlib-inline>=0.1.6 + - pexpect>4.6 ; sys_platform != 'emscripten' and sys_platform != 'win32' + - prompt-toolkit>=3.0.41,<3.1.0 + - psutil>=7 ; sys_platform != 'cygwin' and sys_platform != 'emscripten' + - pygments>=2.14.0 + - stack-data>=0.6.0 + - traitlets>=5.13.0 + - typing-extensions>=4.6 ; python_full_version < '3.12' + - black ; extra == 'black' + - docrepr ; extra == 'doc' + - exceptiongroup ; extra == 'doc' + - intersphinx-registry ; extra == 'doc' + - ipykernel ; extra == 'doc' + - ipython[matplotlib,test] ; extra == 'doc' + - setuptools>=80.0 ; extra == 'doc' + - sphinx-toml==0.0.4 ; extra == 'doc' + - sphinx-rtd-theme>=0.1.8 ; extra == 'doc' + - sphinx>=8.0 ; extra == 'doc' + - typing-extensions ; extra == 'doc' + - pytest>=7.0.0 ; extra == 'test' + - pytest-asyncio>=1.0.0 ; extra == 'test' + - testpath>=0.2 ; extra == 'test' + - packaging>=23.0.0 ; extra == 'test' + - setuptools>=80.0 ; extra == 'test' + - ipython[test] ; extra == 'test-extra' + - curio ; extra == 'test-extra' + - jupyter-ai ; extra == 'test-extra' + - ipython[matplotlib] ; extra == 'test-extra' + - nbformat ; extra == 'test-extra' + - nbclient ; extra == 'test-extra' + - ipykernel>6.30 ; extra == 'test-extra' + - numpy>=2.0 ; extra == 'test-extra' + - pandas>2.1 ; extra == 'test-extra' + - trio>=0.22.0 ; extra == 'test-extra' + - matplotlib>3.9 ; extra == 'matplotlib' + - ipython[doc,matplotlib,test,test-extra] ; extra == 'all' + - argcomplete>=3.0 ; extra == 'all' + requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/2e/24/d1558f3b68b1d26e706813b1d10aa1d785e4698c425af8db8edc3dced472/nvidia_cuda_runtime-13.0.96-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl name: nvidia-cuda-runtime version: 13.0.96 @@ -10577,6 +14157,11 @@ packages: - cuda-toolkit==13.* ; extra == 'all' - nvidia-cudla==13.* ; platform_machine == 'aarch64' and sys_platform == 'linux' and extra == 'all' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/39/cc/9c0adc5861020de426ec71716b6c1bef8d90694b7d6d0a16202cdb1647f5/wcwidth-0.8.4-py3-none-any.whl + name: wcwidth + version: 0.8.4 + sha256: 2097bb1d28a0ba8fe177c2eb607317f9b1627b03f33ebebfd3da670b337a65ba + requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl name: markupsafe version: 3.0.3 @@ -10738,6 +14323,10 @@ packages: - pooch>=1.8.0 ; extra == 'tests' - conda-lock==3.0.1 ; extra == 'maintenance' requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/3e/1d/7acbedb07bf4c71cc499527c25a3ef60bf83ed41b8918e986ed7a4573bd4/onemkl_license-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + name: onemkl-license + version: 2025.3.1 + sha256: b6263a01bf29c04ea683eab1712eb6b74c2b8b722722f46fd90784ed8778c093 - pypi: https://files.pythonhosted.org/packages/3e/dc/cfbc0d38bded4f481d46be88c7ce00c0cd6f9455fb7d728484b2006ff4fe/biotite-1.7.1-cp314-cp314-manylinux_2_28_x86_64.whl name: biotite version: 1.7.1 @@ -10761,6 +14350,13 @@ packages: version: 1.15.1.6 sha256: 08a3ecefae5a01c7f5117351c64f17c7c62efa5fffdbe24fc7d298da19cd0b44 requires_python: '>=3' +- pypi: https://files.pythonhosted.org/packages/40/6b/51459a9a6ac585ab8ca1accc58a580a23b91c5272a63ccf419c8f9d52f37/intel_opencl_rt-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + name: intel-opencl-rt + version: 2025.3.2 + sha256: 2adc6a6450ca91b0a000d6443e91f565e29323a0f15f462d7be541f076a8c536 + requires_dist: + - tbb==2022.* + - intel-cmplr-lic-rt==2025.* - pypi: https://files.pythonhosted.org/packages/41/09/5b161152e2d90f7b87f781c2e1267494aef9c32498df793f73ad0a0a494a/matplotlib_inline-0.2.2-py3-none-any.whl name: matplotlib-inline version: 0.2.2 @@ -10779,6 +14375,24 @@ packages: version: 3.0.3 sha256: 457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97 requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/41/ae/46fe3ca4fcf715cfef35b239abe705d32f355c3be4b9e94aca782a4720ae/onemkl_sycl_dft-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + name: onemkl-sycl-dft + version: 2025.3.1 + sha256: 39f43a334d05ab5989b22ceb46243eacce4571d016c9f67923179ff4e427b88a + requires_dist: + - dpcpp-cpp-rt==2025.* + - intel-opencl-rt==2025.* + - mkl==2025.3.1 +- pypi: https://files.pythonhosted.org/packages/41/f0/29f591bea185616cf417645ac03bd3ad9b317483ad8572160e325f7fe777/msgpack-1.2.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: msgpack + version: 1.2.2 + sha256: 77c2e018417dc1d66f235e383877ee885b60ade9d29e494dd581e08af2cb1923 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/43/3f/f88a53f60a472b46f4023f56d204dd7de33d34c5d2acbfa0d70a674e639e/threadpoolctl-3.7.0-py3-none-any.whl + name: threadpoolctl + version: 3.7.0 + sha256: cd8b60b5641b45c67bbf73c64c843235fc2d8a480c87389f52f5dbee893b86be + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl name: mpmath version: 1.3.0 @@ -10792,6 +14406,11 @@ packages: - sphinx ; extra == 'docs' - gmpy2>=2.1.0a4 ; platform_python_implementation != 'PyPy' and extra == 'gmpy' - pytest>=4.6 ; extra == 'tests' +- pypi: https://files.pythonhosted.org/packages/46/2a/f9697576603dae937727827505a6126a066affb227034e77e6f9068910da/pyelftools-0.33-py3-none-any.whl + name: pyelftools + version: '0.33' + sha256: f215ad5f47d3f1373a21496a6c9e0707c622840d0622f23ff7ce08678b020036 + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/47/e8/b98ca2d39b2e0e4730c0ee52537e488e7008025bc77ca89552ff91021f7c/torch-2.11.0-cp314-cp314-manylinux_2_28_x86_64.whl name: torch version: 2.11.0 @@ -10815,6 +14434,12 @@ packages: - opt-einsum>=3.3 ; extra == 'opt-einsum' - pyyaml ; extra == 'pyyaml' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/49/7e/bc668ee301350964b7be980db7d527a54a61b89a749d09bb430b4598ed3b/intel_cmplr_lib_ur-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + name: intel-cmplr-lib-ur + version: 2025.3.2 + sha256: 175cdb0fbca5c3ef0db176f1cbd8b8f2c36d33eb774cf1d0cfa0404f748df634 + requires_dist: + - umf==1.0.* - pypi: https://files.pythonhosted.org/packages/49/d5/f34b9313ca9db131ad7d74156e3459694ced17f81233a248bd00eb6d67b1/botocore-1.43.79-py3-none-any.whl name: botocore version: 1.43.79 @@ -10825,6 +14450,12 @@ packages: - urllib3>=1.25.4,!=2.2.0,<3 - awscrt==0.36.0 ; extra == 'crt' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/4a/a1/4fad3108825e2d65d812ba69a9fd3664181cfe8860e49110c92431d1629f/oneccl_devel-2021.17.2-py2.py3-none-manylinux_2_28_x86_64.whl + name: oneccl-devel + version: 2021.17.2 + sha256: 6cdaaf12f04fa8eb7934f3b23c202410fece7ae05dfd3b8cc4219701726f1999 + requires_dist: + - oneccl>=2021.17 - pypi: https://files.pythonhosted.org/packages/4b/69/55b8dcf636142ae660fec1869fcac14c4da2e8412e14d6eee1523be77e9f/hf_xet-1.6.0-cp38-abi3-macosx_11_0_arm64.whl name: hf-xet version: 1.6.0 @@ -10832,6 +14463,12 @@ packages: requires_dist: - pytest ; extra == 'tests' requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/4c/b9/fe8c54eab5a3fdfdff1839d9299d90bfce5c467186b5c9ff9fd95d55ad64/umf-1.0.3-py2.py3-none-manylinux_2_28_x86_64.whl + name: umf + version: 1.0.3 + sha256: c89c0974daed30a1cac77fb7ce5ff9140d178e286bb2dd91b751486d5d0a65b0 + requires_dist: + - tcmlib>=1.4 - pypi: https://files.pythonhosted.org/packages/4e/d0/4b9da3d9c5749bf2c93f2818af4dc306f3b3ccc671f68f6820635fd53b74/cuequivariance_torch-0.11.1-py3-none-any.whl name: cuequivariance-torch version: 0.11.1 @@ -10844,6 +14481,14 @@ packages: version: 1.2.1 sha256: d3567748a5107cb40cdf66a275430c2f87c07777698f4bfd25c35f44d533258c requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/51/17/497d29cd13029f4835383d95e644d1602dafa9b7887d298ba9ea77734dce/onemkl_sycl_blas-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + name: onemkl-sycl-blas + version: 2025.3.1 + sha256: b956c14db44990579cf376eb72ba6010b0c83ae27fc132f66752b1b337d9e728 + requires_dist: + - dpcpp-cpp-rt==2025.* + - intel-opencl-rt==2025.* + - mkl==2025.3.1 - pypi: https://files.pythonhosted.org/packages/52/89/d0baf1269e57ac548387c11e5d9ba78d1e118ceb43f1e5e5114bdd2e8391/boto3-1.43.75-py3-none-any.whl name: boto3 version: 1.43.75 @@ -10874,6 +14519,11 @@ packages: version: 13.0.88 sha256: 13a74f429e23b921c1109976abefacc69835f2f433ebd323d3946e11d804e47b requires_python: '>=3' +- pypi: https://files.pythonhosted.org/packages/56/9c/1342ebb460ce2afd014ec5a002adc99108e3c53a6b70f399cf64dd1f267d/nvidia_cuda_nvrtc-13.4.92-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl + name: nvidia-cuda-nvrtc + version: 13.4.92 + sha256: 5ce8c97b00b232c4f50c8c4b5a3b68cafee08bdb82ea86f2052ff01d03194f4a + requires_python: '>=3' - pypi: https://files.pythonhosted.org/packages/57/b2/453099f5f3b698d7d0eab38916aac44c7f76229f451709e2eb9db6615dcd/cuda_toolkit-13.0.2-py2.py3-none-any.whl name: cuda-toolkit version: 13.0.2 @@ -10936,6 +14586,15 @@ packages: requires_dist: - numpy requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/5d/88/4b7e2095f5d16ce1d8425efb2bf0126dd60ef659e24619bdeea85c10ef74/onemkl_sycl_sparse-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + name: onemkl-sycl-sparse + version: 2025.3.1 + sha256: 4a27ded81ab3826a839dc1ce66e44cbb739f0f7109a1dccd1aa77cc9a6663d08 + requires_dist: + - dpcpp-cpp-rt==2025.* + - intel-opencl-rt==2025.* + - mkl==2025.3.1 + - onemkl-sycl-blas==2025.3.1 - pypi: https://files.pythonhosted.org/packages/5f/67/cba3777620cdacb99102da4042883709c41c709f4b6323c10781a9c3aa34/nvidia_cusolver-12.0.4.66-py3-none-manylinux_2_27_x86_64.whl name: nvidia-cusolver version: 12.0.4.66 @@ -10957,6 +14616,14 @@ packages: requires_dist: - pytest ; extra == 'test' requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/60/f9/1f3b6ce37848c721462b4f30de08482dc27d6ffbcbba621b61ef53e28d3c/onemkl_sycl_rng-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + name: onemkl-sycl-rng + version: 2025.3.1 + sha256: 3b0d89c6d38cfbeccc00d2ebe95d6ad81637d62e146e4f3f2101952bc836c39d + requires_dist: + - dpcpp-cpp-rt==2025.* + - intel-opencl-rt==2025.* + - mkl==2025.3.1 - pypi: https://files.pythonhosted.org/packages/62/01/a7171c5e2e8755597bd8f1c1eb228a0876f502afdf25f936061f5dbe2880/cuda_pathfinder-1.7.0-py3-none-any.whl name: cuda-pathfinder version: 1.7.0 @@ -10980,6 +14647,16 @@ packages: version: 26.1.0 sha256: c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309 requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/65/ca/c7617e99c3247f545233ab2181840d142c5f72034e22864172866fb1369a/botocore-1.43.98-py3-none-any.whl + name: botocore + version: 1.43.98 + sha256: 84b35b10402c2fc0c265f634fbf86336eecc6489ee23f55074b329924b2cfd6f + requires_dist: + - jmespath>=0.7.1,<2.0.0 + - python-dateutil>=2.1,<3.0.0 + - urllib3>=1.25.4,!=2.2.0,<3 + - awscrt==0.36.0 ; extra == 'crt' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/66/2f/e762d2a929d8e22d96b937ab94ccd39dd2e20b2cf9dbd7a4fc29feb90bd1/cuequivariance_ops_torch_cu13-0.11.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl name: cuequivariance-ops-torch-cu13 version: 0.11.1 @@ -11011,6 +14688,115 @@ packages: version: 1.2.1 sha256: 020e881a764b20d8d7ca1a54fc01b8175519d108e3c3f194fddc200bda95951a requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/6c/c0/a98505f18594f1bce828bb159cec0fcf9860562f1a2c85913409fc8f3d9e/fsspec-2026.9.0-py3-none-any.whl + name: fsspec + version: 2026.9.0 + sha256: 8dd6e646e99ea382bd85f97a45e6b526a442d79423a7dc673f1e2756d05fcb5f + requires_dist: + - adlfs ; extra == 'abfs' + - adlfs ; extra == 'adl' + - pyarrow>=1 ; extra == 'arrow' + - dask ; extra == 'dask' + - distributed ; extra == 'dask' + - pre-commit ; extra == 'dev' + - ruff>=0.5 ; extra == 'dev' + - numpydoc ; extra == 'doc' + - sphinx ; extra == 'doc' + - sphinx-design ; extra == 'doc' + - sphinx-rtd-theme ; extra == 'doc' + - yarl ; extra == 'doc' + - dropbox ; extra == 'dropbox' + - dropboxdrivefs ; extra == 'dropbox' + - requests ; extra == 'dropbox' + - adlfs ; extra == 'full' + - aiohttp!=4.0.0a0,!=4.0.0a1 ; extra == 'full' + - dask ; extra == 'full' + - distributed ; extra == 'full' + - dropbox ; extra == 'full' + - dropboxdrivefs ; extra == 'full' + - fusepy ; extra == 'full' + - gcsfs>=2026.4.0 ; extra == 'full' + - libarchive-c ; extra == 'full' + - ocifs ; extra == 'full' + - panel ; extra == 'full' + - paramiko ; extra == 'full' + - pyarrow>=1 ; extra == 'full' + - pygit2 ; extra == 'full' + - requests ; extra == 'full' + - s3fs>=2026.6.0 ; extra == 'full' + - smbprotocol ; extra == 'full' + - tqdm ; extra == 'full' + - fusepy ; extra == 'fuse' + - gcsfs>=2026.4.0 ; extra == 'gcs' + - pygit2 ; extra == 'git' + - requests ; extra == 'github' + - gcsfs>=2026.4.0 ; extra == 'gs' + - panel ; extra == 'gui' + - pyarrow>=1 ; extra == 'hdfs' + - aiohttp!=4.0.0a0,!=4.0.0a1 ; extra == 'http' + - libarchive-c ; extra == 'libarchive' + - ocifs ; extra == 'oci' + - s3fs>=2026.6.0 ; extra == 's3' + - paramiko ; extra == 'sftp' + - smbprotocol ; extra == 'smb' + - paramiko ; extra == 'ssh' + - aiohttp!=4.0.0a0,!=4.0.0a1 ; extra == 'test' + - numpy ; extra == 'test' + - pytest ; extra == 'test' + - pytest-asyncio!=0.22.0 ; extra == 'test' + - pytest-benchmark ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-mock ; extra == 'test' + - pytest-recording ; extra == 'test' + - pytest-rerunfailures ; extra == 'test' + - requests ; extra == 'test' + - aiobotocore>=2.5.4,<3.0.0 ; extra == 'test-downstream' + - dask[dataframe,test] ; extra == 'test-downstream' + - moto[server]>4,<5 ; extra == 'test-downstream' + - pytest-timeout ; extra == 'test-downstream' + - xarray ; extra == 'test-downstream' + - zarr ; extra == 'test-downstream' + - adlfs ; extra == 'test-full' + - aiohttp!=4.0.0a0,!=4.0.0a1 ; extra == 'test-full' + - backports-zstd ; python_full_version < '3.14' and extra == 'test-full' + - cloudpickle ; extra == 'test-full' + - dask ; extra == 'test-full' + - distributed ; extra == 'test-full' + - dropbox ; extra == 'test-full' + - dropboxdrivefs ; extra == 'test-full' + - fastparquet ; extra == 'test-full' + - fusepy ; extra == 'test-full' + - gcsfs>=2026.4.0 ; extra == 'test-full' + - jinja2 ; extra == 'test-full' + - kerchunk ; extra == 'test-full' + - libarchive-c ; extra == 'test-full' + - lz4 ; extra == 'test-full' + - notebook ; extra == 'test-full' + - numpy ; extra == 'test-full' + - ocifs ; extra == 'test-full' + - pandas<3.0.0 ; extra == 'test-full' + - panel ; extra == 'test-full' + - paramiko ; extra == 'test-full' + - pyarrow>=1 ; extra == 'test-full' + - pyftpdlib ; extra == 'test-full' + - pygit2 ; extra == 'test-full' + - pytest ; extra == 'test-full' + - pytest-asyncio!=0.22.0 ; extra == 'test-full' + - pytest-benchmark ; extra == 'test-full' + - pytest-cov ; extra == 'test-full' + - pytest-mock ; extra == 'test-full' + - pytest-recording ; extra == 'test-full' + - pytest-rerunfailures ; extra == 'test-full' + - python-snappy ; extra == 'test-full' + - requests ; extra == 'test-full' + - s3fs>=2026.6.0 ; extra == 'test-full' + - smbprotocol ; extra == 'test-full' + - tqdm ; extra == 'test-full' + - urllib3 ; extra == 'test-full' + - zarr<3.2.0 ; extra == 'test-full' + - zstandard ; python_full_version < '3.14' and extra == 'test-full' + - tqdm ; extra == 'tqdm' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/6c/c2/63fdda36c56437eeb44aaf9493c8bcd62ce230ab1598924fc626ffbfa943/scikit_learn-1.9.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl name: scikit-learn version: 1.9.0 @@ -11075,6 +14861,17 @@ packages: - pooch>=1.8.0 ; extra == 'tests' - conda-lock==3.0.1 ; extra == 'maintenance' requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/6d/18/83376915176eb058cb86470eb7396388a13350b09a8f233a79303bbcbc5b/pure_eval-0.2.4-py3-none-any.whl + name: pure-eval + version: 0.2.4 + sha256: 96cae060a313cfaad51bb761278bfb0e62dc0248d9315a81173752dc546cd37a + requires_dist: + - pytest ; extra == 'tests' +- pypi: https://files.pythonhosted.org/packages/6e/d3/6592e4064619b04f2dd0054c5fa13e37e3d55eb26044483d871fadb2f46b/msgpack-1.2.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: msgpack + version: 1.2.2 + sha256: d24b38a825bcca41bb956de50eb98451ef291304a8607fad99e619043d3e79b9 + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/6f/8b/69e3008d78e5cee2b30183340cc425081b78afc5eff3d080daab0adda9aa/torch-2.11.0-cp312-cp312-macosx_11_0_arm64.whl name: torch version: 2.11.0 @@ -11105,6 +14902,11 @@ packages: requires_dist: - numpy - pillow +- pypi: https://files.pythonhosted.org/packages/70/98/c3e488257ffe7f9caa90c56f0e79e6a2860cf5af763da7b4e7eadc008228/pygtrie-2.6.2-py3-none-any.whl + name: pygtrie + version: 2.6.2 + sha256: 51dcc50ecb8291238e261b4e9f8ecca7313b763da258dd320d208ca2bc86b5f4 + requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/72/f1/b1f191b91d049780eb4db2605b81af28a697710c4ac219708bcba192f80c/cuequivariance_ops_cu13-0.11.1-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl name: cuequivariance-ops-cu13 version: 0.11.1 @@ -11117,11 +14919,25 @@ packages: - numpy ; extra == 'test' - pytest ; extra == 'test' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/73/9b/2932b6b128924ba96712ea1c807c1618b9963518eb8ec80cf834ffc3c684/oneccl-2021.17.2-py2.py3-none-manylinux_2_28_x86_64.whl + name: oneccl + version: 2021.17.2 + sha256: a77c2c56eeba1c78379a530a2ba2bbd33407f6440b44476f83292d1694100373 + requires_dist: + - impi-rt>=2021.17 + - intel-sycl-rt>=2025.3 - pypi: https://files.pythonhosted.org/packages/79/d3/36a46a8ed992b781acbc05928bd5bee3c810cb0c3563bf81a7b0c04a1a76/msgpack-1.2.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl name: msgpack version: 1.2.1 sha256: 787c9bebb5833e8f6fc8abca3c0597683d8d87f56a8842b6b89c75a5f3176e2d requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/7a/38/bdd540bf511d2c9b6f9efc71a81c60cb88e295be0b9312b61d19bbed2212/nvidia_cublas-13.8.0.4-py3-none-manylinux_2_27_x86_64.whl + name: nvidia-cublas + version: 13.8.0.4 + sha256: 9f17797dfcc048694461f4e47de17d2e3c25adf172ef723d2db0a07cd8744b89 + requires_dist: + - nvidia-cuda-nvrtc + requires_python: '>=3' - pypi: https://files.pythonhosted.org/packages/7a/90/eef59b9b64442b4c966b027e8db407f59d99200b82b71316fc4466562a53/boto3-1.43.79-py3-none-any.whl name: boto3 version: 1.43.79 @@ -11259,6 +15075,17 @@ packages: requires_dist: - numpy requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/86/4e/0bab75490ca4b85fad8388739c7ebc71d9db553f8c69e39943ee8db0aaae/scikit_learn-1.9.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + name: scikit-learn + version: 1.9.1 + sha256: 993d332ff80e62efae9e39603b7e872297c418d780f01a01855269a3489c950f + requires_dist: + - numpy>=1.24.1 + - scipy>=1.10.0 + - joblib>=1.4.0 + - narwhals>=2.0.1 + - threadpoolctl>=3.5.0 + requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/87/74/0b692da2520d51fbff19c88b83d97e4c702909dd02386c585998b7e2dbed/regex-2026.7.19-cp314-cp314-macosx_11_0_arm64.whl name: regex version: 2026.7.19 @@ -11287,6 +15114,88 @@ packages: - opt-einsum>=3.3 ; extra == 'opt-einsum' - pyyaml ; extra == 'pyyaml' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/88/39/799be3f2f0f38cc727ee3b4f1445fe6d5e4133064ec2e4115069418a5bb6/cloudpickle-3.1.2-py3-none-any.whl + name: cloudpickle + version: 3.1.2 + sha256: 9acb47f6afd73f60dc1df93bb801b472f05ff42fa6c84167d25cb206be1fbf4a + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/8a/4c/34f0450479d01195027260da68d8a3880683f1640c3ca5adf64acb3185f1/accelerate-1.15.0-py3-none-any.whl + name: accelerate + version: 1.15.0 + sha256: 97eacca0b73e45cb867dbf8c5d5d4dc32219544300e0c8992c7334dc2ef33cec + requires_dist: + - numpy>=1.17 + - packaging>=20.0 + - psutil + - pyyaml + - torch>=2.0.0 + - huggingface-hub>=0.21.0 + - safetensors>=0.4.3 + - ruff==0.13.1 ; extra == 'quality' + - pytest>=7.2.0 ; extra == 'test-prod' + - pytest-xdist ; extra == 'test-prod' + - pytest-subtests ; extra == 'test-prod' + - parameterized ; extra == 'test-prod' + - pytest-order ; extra == 'test-prod' + - datasets ; extra == 'test-dev' + - diffusers ; extra == 'test-dev' + - evaluate ; extra == 'test-dev' + - peft ; extra == 'test-dev' + - torchdata>=0.8.0 ; extra == 'test-dev' + - torchpippy>=0.2.0 ; extra == 'test-dev' + - transformers ; extra == 'test-dev' + - scipy ; extra == 'test-dev' + - scikit-learn ; extra == 'test-dev' + - tqdm ; extra == 'test-dev' + - bitsandbytes ; extra == 'test-dev' + - timm ; extra == 'test-dev' + - pytest>=7.2.0 ; extra == 'testing' + - pytest-xdist ; extra == 'testing' + - pytest-subtests ; extra == 'testing' + - parameterized ; extra == 'testing' + - pytest-order ; extra == 'testing' + - datasets ; extra == 'testing' + - diffusers ; extra == 'testing' + - evaluate ; extra == 'testing' + - peft ; extra == 'testing' + - torchdata>=0.8.0 ; extra == 'testing' + - torchpippy>=0.2.0 ; extra == 'testing' + - transformers ; extra == 'testing' + - scipy ; extra == 'testing' + - scikit-learn ; extra == 'testing' + - tqdm ; extra == 'testing' + - bitsandbytes ; extra == 'testing' + - timm ; extra == 'testing' + - deepspeed ; extra == 'deepspeed' + - rich ; extra == 'rich' + - torchao ; extra == 'test-fp8' + - wandb ; extra == 'test-trackers' + - tensorboard ; extra == 'test-trackers' + - dvclive ; extra == 'test-trackers' + - matplotlib ; extra == 'test-trackers' + - swanlab[dashboard] ; extra == 'test-trackers' + - trackio ; extra == 'test-trackers' + - ruff==0.13.1 ; extra == 'dev' + - pytest>=7.2.0 ; extra == 'dev' + - pytest-xdist ; extra == 'dev' + - pytest-subtests ; extra == 'dev' + - parameterized ; extra == 'dev' + - pytest-order ; extra == 'dev' + - datasets ; extra == 'dev' + - diffusers ; extra == 'dev' + - evaluate ; extra == 'dev' + - peft ; extra == 'dev' + - torchdata>=0.8.0 ; extra == 'dev' + - torchpippy>=0.2.0 ; extra == 'dev' + - transformers ; extra == 'dev' + - scipy ; extra == 'dev' + - scikit-learn ; extra == 'dev' + - tqdm ; extra == 'dev' + - bitsandbytes ; extra == 'dev' + - timm ; extra == 'dev' + - rich ; extra == 'dev' + - sagemaker ; extra == 'sagemaker' + requires_python: '>=3.10.0' - pypi: https://files.pythonhosted.org/packages/8c/03/bbc5e9d4aaa2f1c4a942bbeb0c6eff79e56ec370ad8670e029ae6d156489/rdkit-2026.3.5-cp312-cp312-macosx_11_0_arm64.whl name: rdkit version: 2026.3.5 @@ -11300,12 +15209,29 @@ packages: sha256: 1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0 requires_dist: - pytest ; extra == 'tests' +- pypi: https://files.pythonhosted.org/packages/8e/57/a50162f3d29feb979ab6347c6debda506dfb525bcff3c50dd17606651c7e/scikit_learn-1.9.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + name: scikit-learn + version: 1.9.1 + sha256: e5d7b18a5b9dca241a74695f3275fa4c895a9dadc72b3d8df5fa9d1083c9b83e + requires_dist: + - numpy>=1.24.1 + - scipy>=1.10.0 + - joblib>=1.4.0 + - narwhals>=2.0.1 + - threadpoolctl>=3.5.0 + requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/8e/5a/7fd1b784a87e96e0078f49a0a13a98b4c5f644ba5597a4a3b70a2ba3e613/py3dmol-2.5.5-py2.py3-none-any.whl name: py3dmol version: 2.5.5 sha256: 9717ea9a899ec641b458f53de538e5bae758281f5053be78bc2db0706ae60bcb requires_dist: - ipython ; extra == 'ipython' +- pypi: https://files.pythonhosted.org/packages/91/99/5ee1e9ae85ed3d10517d17d5a3a924fecc15b116385045a0a89eb2d5bc82/intel_openmp-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + name: intel-openmp + version: 2025.3.2 + sha256: 2de5f12fb282e7e275723539cba335ce1831e533f94b1c484062569e1bc57399 + requires_dist: + - intel-cmplr-lib-ur==2025.3.2 - pypi: https://files.pythonhosted.org/packages/92/32/95245f5960b168ea4503529d174e48da5034ed14e8fc170f3a4ab9c3c269/rdkit-2026.3.5-cp314-cp314-manylinux_2_28_x86_64.whl name: rdkit version: 2026.3.5 @@ -11333,6 +15259,13 @@ packages: version: 0.8.2 sha256: d63947694a0539a1d51e01eda7caf800c291020e6cdd7e28ad7b14dd33ad4f85 requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/99/1c/368b4b179295a76d773cadcc30da3afccbf1123e648e28e7dc0de6d61fe2/rdkit-2026.3.6-cp312-cp312-manylinux_2_28_x86_64.whl + name: rdkit + version: 2026.3.6 + sha256: 9f97b58f1962df73bdacf44347bfa013f4fcb9896e049f98af2183e70e7aab46 + requires_dist: + - numpy + - pillow - pypi: https://files.pythonhosted.org/packages/99/5d/8268b644392ee874ee82a635cd0df1773de230bde356c38de28e298392cc/parso-0.8.7-py2.py3-none-any.whl name: parso version: 0.8.7 @@ -11453,6 +15386,10 @@ packages: - pytest-mpl ; extra == 'test-extras' - pytest-randomly ; extra == 'test-extras' requires_python: '>=3.11,!=3.14.1' +- pypi: https://files.pythonhosted.org/packages/a1/a4/38e8b5a27b66ab286168ba6c449771ed71d71ec76524e7f12401474a5151/tcmlib-1.4.1-py2.py3-none-manylinux_2_28_x86_64.whl + name: tcmlib + version: 1.4.1 + sha256: 0d5bd98db48d31bec7fedba5c23599bf9ae43c7016d4c3946d25242d320cee89 - pypi: https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl name: sympy version: 1.14.0 @@ -11474,6 +15411,20 @@ packages: version: 10.4.0.35 sha256: 1aee33a5da6e1db083fe2b90082def8915f30f3248d5896bcec36a579d941bfc requires_python: '>=3' +- pypi: https://files.pythonhosted.org/packages/a7/03/921a3d3c75785aca9ebfbfcabfbc3a1be12e2ab5265deb026d55a5a3f83e/tqdm-4.70.1-py3-none-any.whl + name: tqdm + version: 4.70.1 + sha256: c293e525e6fef9c20e8728fd4612df02a0aa31bb5fe91ecd93e123b1b7bffa73 + requires_dist: + - colorama ; sys_platform == 'win32' + - requests ; extra == 'discord' + - envwrap ; extra == 'discord' + - slack-sdk ; extra == 'slack' + - envwrap ; extra == 'slack' + - requests ; extra == 'telegram' + - envwrap ; extra == 'telegram' + - ipywidgets>=6 ; extra == 'notebook' + requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/a8/2f/7b57e29836ea8714f81e9898409196f47d772d5ddedddf1592eadb8ab743/nvidia_cufft-12.0.0.61-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl name: nvidia-cufft version: 12.0.0.61 @@ -11740,6 +15691,10 @@ packages: requires_dist: - numpy requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/af/85/dee48118c530d9574f683f8cf3a7ad576a23f060a520335c9284ff6ba65b/intel_pti-0.16.0-py2.py3-none-manylinux_2_28_x86_64.whl + name: intel-pti + version: 0.16.0 + sha256: 452e44479a5720b3fe19f00fa01bdea29586a1a25a557278857ab0a3d11c7852 - pypi: https://files.pythonhosted.org/packages/b0/b4/878fefaad5b2bcc6fcf8d474a25e3e3774bc5133e4b58adff4d0bca238bc/nvidia_nccl_cu13-2.28.9-py3-none-manylinux_2_18_x86_64.whl name: nvidia-nccl-cu13 version: 2.28.9 @@ -11787,6 +15742,14 @@ packages: - polygraphy ; extra == 'plugins' - cuda-bindings ; extra == 'plugins' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/b3/ee/76755ca0ec9626835e0d024c369b968f24eadce2106a7884404720670623/mkl-2025.3.1-py2.py3-none-manylinux_2_28_x86_64.whl + name: mkl + version: 2025.3.1 + sha256: db31e59fa368dd4fa45b494351f4b7e0e6204b08d7db27836118c4e1370eb011 + requires_dist: + - onemkl-license==2025.3.1 + - intel-openmp>=2024,<2026 + - tbb==2022.* - pypi: https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl name: markupsafe version: 3.0.3 @@ -11836,10 +15799,27 @@ packages: - wheel ; implementation_name != 'pypy' and os_name == 'nt' and extra == 'test' - wmi ; implementation_name != 'pypy' and os_name == 'nt' and extra == 'test' requires_python: '>=3.6' +- pypi: https://files.pythonhosted.org/packages/b6/4e/46f5a5d949dbd054dab60cb15aac7ac6ae6774c134532893414689bf2f53/msgpack-1.2.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: msgpack + version: 1.2.2 + sha256: 73b0e05c32c3cfc3cd84994908e57430c0ebc6813abf905d3f18ff115d54df3f + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/b6/a6/e4c718d76ac37f69c482164f00252064e3858673c5aad5b18dd7da6c56eb/rdkit-2026.3.6-cp314-cp314-manylinux_2_28_x86_64.whl + name: rdkit + version: 2026.3.6 + sha256: a4ce417cb1da5dc552b708eff3e851e4c1c9d257119aa2f8cf6371d1f3b7cd32 + requires_dist: + - numpy + - pillow - pypi: https://files.pythonhosted.org/packages/b7/80/6252de3a70cfd7767718ad476893f1c7dc129f942cc7ed0322e3137c03d9/zstd-1.5.7.2-cp312-cp312-manylinux_2_14_x86_64.whl name: zstd version: 1.5.7.2 sha256: ac7bdfedda51b1fcdcf0ab69267d01256fc97ddf666ce894fde0fae9f3630eac +- pypi: https://files.pythonhosted.org/packages/bb/64/9b56f69100d3afdbc9c4fa6e302764f9cb717fbc06a9d50558d98ca89cd2/regex-2026.9.10-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: regex + version: 2026.9.10 + sha256: 05fb018cfe7144585fc83882405906ff84994a2d154afc2509ecc7752c51f864 + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/bb/b7/0bdc51f7fe13c84466ddcd9c82a440abe32e0b50b1deea70d8598ccb6f5f/rdkit-2026.3.5-cp313-cp313-macosx_11_0_arm64.whl name: rdkit version: 2026.3.5 @@ -11847,6 +15827,16 @@ packages: requires_dist: - numpy - pillow +- pypi: https://files.pythonhosted.org/packages/bc/46/d29efd46ecac6637065a39418c5fb95500d70ec63e76065b5a72c936172f/boto3-1.43.98-py3-none-any.whl + name: boto3 + version: 1.43.98 + sha256: 7454f666a9e852a56db0a7fa23be33a899f64e27828930eac43c3edba7b34e17 + requires_dist: + - botocore>=1.43.98,<1.44.0 + - jmespath>=0.7.1,<2.0.0 + - s3transfer>=0.19.0,<0.20.0 + - botocore[crt]>=1.21.0,<2.0a0 ; extra == 'crt' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/bc/8e/1239df488393d61076653bfb29f759d0f60cab8e030abdf7c17c31539b51/ipython-9.16.1-py3-none-any.whl name: ipython version: 9.16.1 @@ -11923,6 +15913,10 @@ packages: - pyright==1.1.409 ; extra == 'lint' - taplo==0.9.3 ; extra == 'lint' requires_python: '>=3.12' +- pypi: https://files.pythonhosted.org/packages/c1/27/bbadf924bf134143895fc197701951d9d28c77bd1cfbabd5e1dfb9b90b8b/intel_cmplr_lic_rt-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + name: intel-cmplr-lic-rt + version: 2025.3.2 + sha256: 8730fb1dc84740a495603403531b9245ac47d2d3563a853a7b1a0dfe3a81b2bb - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl name: executing version: 2.2.1 @@ -11995,6 +15989,18 @@ packages: - psutil ; extra == 'test' - netcdf4>=1.7.1 ; extra == 'test' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/c8/6f/db9080c49ddab3c2dd46f99ab98386095d81d74098d292b64f5bf4c231fe/rdkit-2026.3.6-cp313-cp313-manylinux_2_28_x86_64.whl + name: rdkit + version: 2026.3.6 + sha256: 3d0a2011c2a46f312010c8d8ec89b8210795663285545b2ac0909d1b9551fe41 + requires_dist: + - numpy + - pillow +- pypi: https://files.pythonhosted.org/packages/cb/f5/dcdf5e0d898024005cfcce631e3e934d111dfbe177ca0b7f253ae8a735a2/regex-2026.9.10-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: regex + version: 2026.9.10 + sha256: 2e67f8843f0e4b931f1fa860bf3bbe4134b714c0155cc5c7c0d7ea450230aae0 + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/cc/d5/2b5148f2279196775e1db2aeb85d14b70ac80e7e32b3b28e7ebeafb0901d/scikit_learn-1.9.0-cp312-cp312-macosx_12_0_arm64.whl name: scikit-learn version: 1.9.0 @@ -12059,6 +16065,10 @@ packages: - pooch>=1.8.0 ; extra == 'tests' - conda-lock==3.0.1 ; extra == 'maintenance' requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/ce/29/496c69c70a5645eaa2dfe230ee9ab7dcee041a64f7a6555c515512530495/impi_rt-2021.17.2-py2.py3-none-manylinux_2_28_x86_64.whl + name: impi-rt + version: 2021.17.2 + sha256: f10206010456d77e5b55bf19045cbc2eac46d240373539416a4fecd8a52530c8 - pypi: https://files.pythonhosted.org/packages/d2/f7/9243bb99b8525421a7db741604d29aebe9a849539500f2248d74bf2614be/zstd-1.5.7.2-cp314-cp314-manylinux_2_14_x86_64.whl name: zstd version: 1.5.7.2 @@ -12156,6 +16166,14 @@ packages: - graphviz ; extra == 'dev' - pytest ; extra == 'dev' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/e9/d2/edcbe7995ae3fe18f709c8ae122da8978aee1311c3e8d3bdcd23fc684e69/dpcpp_cpp_rt-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + name: dpcpp-cpp-rt + version: 2025.3.2 + sha256: 7084cfa5dd43c609389b67615b212c5f5f633b44b79da1281893dbe3459f8e2d + requires_dist: + - intel-opencl-rt==2025.3.2 + - intel-openmp==2025.3.2 + - intel-sycl-rt==2025.3.2 - pypi: https://files.pythonhosted.org/packages/eb/dc/55481808fd70ef1567cf13540ffd4702af3f74b112e35427564b03f79c2d/narwhals-2.25.0-py3-none-any.whl name: narwhals version: 2.25.0 @@ -12342,6 +16360,14 @@ packages: - psutil ; extra == 'test' - netcdf4>=1.7.1 ; extra == 'test' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/f7/e4/047a0b42f8240a9c70f3ac120479aa1996f99cfe9fd97afb025d6bbd89a8/intel_sycl_rt-2025.3.2-py2.py3-none-manylinux_2_28_x86_64.whl + name: intel-sycl-rt + version: 2025.3.2 + sha256: 3b19d9f64b56804a7bc58a91fe95daacf10bc906b94ce3c5b6416153367df972 + requires_dist: + - intel-cmplr-lib-rt==2025.3.2 + - intel-cmplr-lic-rt==2025.3.2 + - intel-cmplr-lib-ur==2025.3.2 - pypi: https://files.pythonhosted.org/packages/f9/0b/37d991d8c130ce81a8728ae3c25b6e60935838e9be1b58791f5997b24a54/triton-3.6.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl name: triton version: 3.6.0 diff --git a/pyproject.toml b/pyproject.toml index 6a14c6bf..f9bf7d8e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -158,13 +158,30 @@ xformers = { url = "https://download.pytorch.org/whl/cu130/xformers-0.0.35-py39- cuequivariance-torch = ">=0.8.1" cuequivariance-ops-torch-cu13 = ">=0.8.1" +# Intel GPU (XPU). No flash-attn/xformers/transformer_engine/cuequivariance +# on XPU upstream; ESMC/ESMFold2 fall back to their reference path plus the +# Triton "fused" backend, which does run on XPU. +[tool.pixi.feature.xpu] +platforms = ["linux-64"] + +[tool.pixi.feature.xpu.pypi-dependencies] +torch = { version = "*", index = "https://download.pytorch.org/whl/xpu" } +# torch's XPU wheel depends on this exact package name (not the older +# `pytorch-triton-xpu`), only published on the xpu index. +triton-xpu = { version = "*", index = "https://download.pytorch.org/whl/xpu" } + # `gpu` stays on 3.12: the prebuilt flash_attn wheel in `fused` is cp312-only. +# `xpu` environments get their own solve-groups since they pin a different +# torch wheel index than `default`. [tool.pixi.environments] default = {features = ["py312"], solve-group = "default"} dev = {features = ["dev", "py312"], solve-group = "default"} gpu = {features = ["dev", "fused", "py312"], solve-group = "default"} dev-py313 = {features = ["dev", "py313"], solve-group = "py313"} dev-py314 = {features = ["dev", "py314"], solve-group = "py314"} +xpu = {features = ["dev", "xpu", "py312"], solve-group = "xpu"} +xpu-py313 = {features = ["dev", "xpu", "py313"], solve-group = "xpu-py313"} +xpu-py314 = {features = ["dev", "xpu", "py314"], solve-group = "xpu-py314"} [tool.ruff] extend-include = ["*.ipynb"] From 557d9e08d324ddfbb6c51bbf48ceb5f1b6eb6476 Mon Sep 17 00:00:00 2001 From: rajeshgangireddy Date: Mon, 21 Sep 2026 19:28:06 +0200 Subject: [PATCH 02/15] utils: add accelerator-agnostic device helpers resolve_default_device/autocast_device_type/empty_cache/synchronize/ manual_seed_all/*_rng_state_all dispatch to cuda or xpu. Extends fp32_autocast_context with an xpu branch alongside its existing cpu/cuda/mps ones. --- esm/utils/device.py | 70 +++++++++++++++++++++++++++++++++++++++++++++ esm/utils/misc.py | 4 +-- 2 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 esm/utils/device.py diff --git a/esm/utils/device.py b/esm/utils/device.py new file mode 100644 index 00000000..8e13ed2a --- /dev/null +++ b/esm/utils/device.py @@ -0,0 +1,70 @@ +"""Device dispatch helpers, so cuda/xpu/cpu are handled the same way. + +Keep this separate from "is a CUDA-only library available" (flash-attn, +xformers, transformer_engine, cuequivariance) -- that's a different question +and stays gated on `torch.cuda.is_available()` directly, wherever it's +checked. +""" + +from __future__ import annotations + +import torch + +_ACCELERATED_AUTOCAST_TYPES = ("cuda", "xpu") + + +def resolve_default_device() -> torch.device: + """Best available accelerator, else CPU.""" + if torch.accelerator.is_available(): + return torch.accelerator.current_accelerator() + return torch.device("cpu") + + +def autocast_device_type(x: torch.Tensor | torch.device | torch.nn.Module) -> str: + """device_type string for torch.autocast, from a tensor/device/module.""" + if isinstance(x, torch.device): + return x.type + if isinstance(x, torch.nn.Module): + return next(x.parameters()).device.type + return x.device.type + + +def supports_amp_autocast(device_type: str) -> bool: + """Whether device_type supports bf16/fp16 autocast (cuda, xpu do; mps/cpu don't the same way).""" + return device_type in _ACCELERATED_AUTOCAST_TYPES + + +def empty_cache(device_type: str) -> None: + if device_type == "cuda": + torch.cuda.empty_cache() + elif device_type == "xpu": + torch.xpu.empty_cache() + + +def synchronize(device_type: str) -> None: + if device_type == "cuda": + torch.cuda.synchronize() + elif device_type == "xpu": + torch.xpu.synchronize() + + +def manual_seed_all(device_type: str, seed: int) -> None: + if device_type == "cuda": + torch.cuda.manual_seed_all(seed) + elif device_type == "xpu": + torch.xpu.manual_seed_all(seed) + + +def get_rng_state_all(device_type: str) -> list[torch.Tensor] | None: + if device_type == "cuda": + return torch.cuda.get_rng_state_all() + elif device_type == "xpu": + return torch.xpu.get_rng_state_all() + return None + + +def set_rng_state_all(device_type: str, states: list[torch.Tensor]) -> None: + if device_type == "cuda": + torch.cuda.set_rng_state_all(states) + elif device_type == "xpu": + torch.xpu.set_rng_state_all(states) diff --git a/esm/utils/misc.py b/esm/utils/misc.py index 0f7b0b14..008fea8b 100644 --- a/esm/utils/misc.py +++ b/esm/utils/misc.py @@ -278,9 +278,9 @@ def fp32_autocast_context(device_type: str) -> ContextManager[Any]: if device_type == "cpu": return torch.amp.autocast(device_type, enabled=False) elif device_type == "mps": - # For MPS, just return a no-op context manager (nullcontext) since MPS does not support autocast. + # MPS doesn't support autocast, so just no-op. return nullcontext() - elif device_type == "cuda": + elif device_type in ("cuda", "xpu"): return torch.amp.autocast(device_type, dtype=torch.float32) else: raise ValueError(f"Unsupported device type: {device_type}") From 474e3255275e8a4c35e8cd9df6d3b1cc70416224 Mon Sep 17 00:00:00 2001 From: rajeshgangireddy Date: Mon, 21 Sep 2026 19:28:20 +0200 Subject: [PATCH 03/15] models: replace hardcoded cuda-or-cpu device defaults esm3.py, esmc/model.py, esmc/compatibility.py, widgets/utils/clients.py now resolve their default device via esm.utils.device instead of 'cuda' if torch.cuda.is_available() else 'cpu'. Autocast-enable conditions gated on device.type == 'cuda' now use supports_amp_autocast so xpu gets the same bf16 autocast cuda does. --- esm/models/esm3.py | 5 +++-- esm/models/esmc/compatibility.py | 7 +++++-- esm/models/esmc/model.py | 3 ++- esm/widgets/utils/clients.py | 4 ++-- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/esm/models/esm3.py b/esm/models/esm3.py index 05141f33..079e5a1b 100644 --- a/esm/models/esm3.py +++ b/esm/models/esm3.py @@ -31,6 +31,7 @@ from esm.utils.constants import esm3 as C from esm.utils.constants.models import ESM3_OPEN_SMALL, normalize_model_name from esm.utils.decoding import decode_protein_tensor +from esm.utils.device import resolve_default_device, supports_amp_autocast from esm.utils.generation import ( _batch_forward, _sample_per_prompt, @@ -234,7 +235,7 @@ def from_pretrained( if not model_name: raise ValueError(f"Model name {model_name} is not a valid ESM3 model name.") if device is None: - device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + device = resolve_default_device() model = load_local_model(model_name, device=device) if device.type != "cpu": model = model.to(torch.bfloat16) @@ -536,7 +537,7 @@ def logits( with ( torch.no_grad(), # Assume no gradients for now... torch.autocast(enabled=True, device_type=device.type, dtype=torch.bfloat16) - if device.type == "cuda" + if supports_amp_autocast(device.type) else contextlib.nullcontext(), ): output = self( diff --git a/esm/models/esmc/compatibility.py b/esm/models/esmc/compatibility.py index fea1e8b5..25f19f52 100644 --- a/esm/models/esmc/compatibility.py +++ b/esm/models/esmc/compatibility.py @@ -39,6 +39,7 @@ LogitsOutput, ) from esm.utils.constants.models import ESMC_6B, ESMC_300M, ESMC_600M +from esm.utils.device import resolve_default_device, supports_amp_autocast from esm.utils.sampling import _BatchedESMProteinTensor _DEPRECATION_MESSAGE = ( @@ -160,7 +161,7 @@ def from_pretrained( use_flash_attn: bool = True, ) -> "ESMC": if device is None: - device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + device = resolve_default_device() device = torch.device(device) model = EsmcForMaskedLM.from_pretrained( _legacy_name_to_repo(model_name), @@ -304,7 +305,9 @@ def logits( with ( torch.no_grad(), torch.autocast( - device.type, dtype=torch.bfloat16, enabled=device.type == "cuda" + device.type, + dtype=torch.bfloat16, + enabled=supports_amp_autocast(device.type), ), ): out = self(sequence_tokens=input.sequence) diff --git a/esm/models/esmc/model.py b/esm/models/esmc/model.py index dea2ee95..0fb5783f 100644 --- a/esm/models/esmc/model.py +++ b/esm/models/esmc/model.py @@ -28,6 +28,7 @@ from esm.models.esmc.layers import EsmcRotaryEmbedding, EsmcTransformerStack from esm.models.esmc.sae import EsmcSaeLayer from esm.models.hub import HubPreTrainedModel, resolve_model_dir +from esm.utils.device import resolve_default_device _SAFETENSORS_INDEX = "model.safetensors.index.json" _SAFETENSORS_SINGLE = "model.safetensors" @@ -253,7 +254,7 @@ def from_pretrained( if attn_implementation is not None: config.attn_implementation = attn_implementation if device is None: - device = "cuda" if torch.cuda.is_available() else "cpu" + device = resolve_default_device() # Sets the default device the encoder reads to choose its kernels. with torch.device(device): return cls._load_pretrained(local_dir, config, device=device, dtype=dtype) diff --git a/esm/widgets/utils/clients.py b/esm/widgets/utils/clients.py index 6c9846e9..e40dc88d 100644 --- a/esm/widgets/utils/clients.py +++ b/esm/widgets/utils/clients.py @@ -2,11 +2,11 @@ import huggingface_hub import huggingface_hub.errors -import torch from esm.models.esm3 import ESM3 from esm.sdk import ESM3ForgeInferenceClient from esm.sdk.api import ESM3InferenceClient +from esm.utils.device import resolve_default_device def get_local_client() -> ESM3InferenceClient: @@ -14,7 +14,7 @@ def get_local_client() -> ESM3InferenceClient: huggingface_hub.whoami() except huggingface_hub.errors.LocalTokenNotFoundError: raise ValueError("Hugging Face token not found.") - return ESM3.from_pretrained(device=torch.device("cuda")) + return ESM3.from_pretrained(device=resolve_default_device()) def get_forge_client(model_name: str) -> ESM3InferenceClient: From 173df2a66f6874619c324c6ab0511caf0320a5a3 Mon Sep 17 00:00:00 2001 From: rajeshgangireddy Date: Mon, 21 Sep 2026 19:28:25 +0200 Subject: [PATCH 04/15] esmfold2, vqvae, structure: generalize hardcoded cuda autocast torch.amp.autocast("cuda", ...) call sites now derive device_type from the actual tensor/device instead of a literal 'cuda', so xpu gets the same bf16 autocast path cuda does. The precision-guard @autocast("cuda", enabled=False) decorators (Kabsch alignment, RMSD) get a paired @autocast("xpu", enabled=False) so they disable autocast on whichever device is actually active. --- esm/models/esmfold2/experimental.py | 6 ++++-- esm/models/esmfold2/model.py | 18 +++++++++++------- esm/models/vqvae.py | 2 +- esm/utils/structure/metrics.py | 1 + esm/utils/structure/protein_structure.py | 3 +++ 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/esm/models/esmfold2/experimental.py b/esm/models/esmfold2/experimental.py index e73bbefe..91ee0980 100644 --- a/esm/models/esmfold2/experimental.py +++ b/esm/models/esmfold2/experimental.py @@ -62,6 +62,7 @@ # Not circular: model.py's reference to this module is inside ``from_pretrained``. from esm.models.esmfold2.model import _IGNORED_FEATURE_KEYS from esm.models.hub import HubPreTrainedModel, resolve_model_dir +from esm.utils.device import supports_amp_autocast _EPS = 1e-5 @@ -988,10 +989,11 @@ def forward( atom_to_token = atom_to_token * atm_mask.long() - use_amp = ref_pos.device.type == "cuda" + device_type = ref_pos.device.type + use_amp = supports_amp_autocast(device_type) with ( torch.set_grad_enabled(res_type_soft is not None), - torch.amp.autocast("cuda", enabled=use_amp, dtype=torch.bfloat16), + torch.amp.autocast(device_type, enabled=use_amp, dtype=torch.bfloat16), ): # 1. Input embeddings x_inputs = self.inputs_embedder( diff --git a/esm/models/esmfold2/model.py b/esm/models/esmfold2/model.py index b0051f06..c20bceca 100644 --- a/esm/models/esmfold2/model.py +++ b/esm/models/esmfold2/model.py @@ -59,6 +59,7 @@ maybe_subsample_msa, ) from esm.models.hub import HubPreTrainedModel, resolve_model_dir +from esm.utils.device import empty_cache, supports_amp_autocast _EPS = 1e-6 @@ -224,7 +225,9 @@ def forward( # FoldingTrunk handles the bf16 cast internally during inference so # each block's fused trimul engages. In-place residual avoids an # extra fp32 pair allocation. - with torch.amp.autocast("cuda", enabled=pair.is_cuda, dtype=torch.bfloat16): + with torch.amp.autocast( + pair.device.type, enabled=supports_amp_autocast(pair.device.type), dtype=torch.bfloat16 + ): pair_delta = self.folding_trunk(pair, pair_attention_mask=pair_mask) pair.add_(pair_delta.float()) del pair_delta @@ -518,13 +521,13 @@ def _walk(mod: nn.Module) -> None: @contextmanager -def _lm_precision_context(fp8: bool): +def _lm_precision_context(fp8: bool, device_type: str): """bf16 autocast (+ optional TE fp8 autocast) around the LM forward. te.autocast keeps te.Linear outputs bf16 instead of the fp32 default (~425 MB at L=1024 in the hidden-state cache). """ - with torch.autocast(device_type="cuda", dtype=torch.bfloat16): + with torch.autocast(device_type=device_type, dtype=torch.bfloat16): if fp8 and TE_AVAILABLE: fp8_recipe = DelayedScaling( fp8_format=Format.HYBRID, @@ -863,7 +866,7 @@ def _compute_lm_hidden_states( self.esmc.to(self.device) # fp8 TE kernels require prod(shape[:-1]) % 8 == 0. pad_to = 8 if self._esmc_fp8 else None - with _lm_precision_context(self._esmc_fp8): + with _lm_precision_context(self._esmc_fp8, device_type=self.device.type): return compute_lm_hidden_states( self.esmc, input_ids, @@ -1110,8 +1113,9 @@ def forward( ).unsqueeze(-1) atom_to_token = atom_to_token * atm_mask.long() - use_amp = ref_pos.device.type == "cuda" - with torch.amp.autocast("cuda", enabled=use_amp, dtype=torch.bfloat16): + device_type = ref_pos.device.type + use_amp = supports_amp_autocast(device_type) + with torch.amp.autocast(device_type, enabled=use_amp, dtype=torch.bfloat16): x_inputs = self.inputs_embedder( aatype=res_type_oh, profile=profile.float(), @@ -1203,7 +1207,7 @@ def forward( # the diffusion rigid-align SVD — can succeed near the OOM boundary. if self._offload_esmc and self.esmc is not None: self.esmc.to("cpu") - torch.cuda.empty_cache() + empty_cache(self.device.type) # Pair attention mask: sharded block under CP (outer product of the # sliced row/col token-mask — never the full L×L), else the serial diff --git a/esm/models/vqvae.py b/esm/models/vqvae.py index 9018251e..43fe3a8d 100644 --- a/esm/models/vqvae.py +++ b/esm/models/vqvae.py @@ -280,7 +280,7 @@ def find_knn_edges( (coords.shape[0], coords.shape[1]), device=coords.device ).long() - with torch.no_grad(), torch.amp.autocast("cuda", enabled=False): + with torch.no_grad(), torch.amp.autocast(coords.device.type, enabled=False): ca = coords[..., 1, :] edges, edge_mask = knn_graph( ca, coord_mask, padding_mask, sequence_id, no_knn=knn diff --git a/esm/utils/structure/metrics.py b/esm/utils/structure/metrics.py index 138ff9db..b3e87950 100644 --- a/esm/utils/structure/metrics.py +++ b/esm/utils/structure/metrics.py @@ -280,6 +280,7 @@ def compute_lddt_ca( # NOTE(roshan): no_grad required for stack_variable_length_tensors apparently... let's revisit if we want to backprop @torch.no_grad() @autocast("cuda", enabled=False) +@autocast("xpu", enabled=False) def compute_rmsd( mobile: torch.Tensor, target: torch.Tensor, diff --git a/esm/utils/structure/protein_structure.py b/esm/utils/structure/protein_structure.py index d5ed7f83..28c817ef 100644 --- a/esm/utils/structure/protein_structure.py +++ b/esm/utils/structure/protein_structure.py @@ -67,6 +67,7 @@ def normalize(x: ArrayOrTensor): @torch.no_grad() @autocast("cuda", enabled=False) +@autocast("xpu", enabled=False) def compute_alignment_tensors( mobile: torch.Tensor, target: torch.Tensor, @@ -162,6 +163,7 @@ def compute_alignment_tensors( @torch.no_grad() @autocast("cuda", enabled=False) +@autocast("xpu", enabled=False) def compute_rmsd_no_alignment( aligned: torch.Tensor, target: torch.Tensor, @@ -211,6 +213,7 @@ def compute_rmsd_no_alignment( @torch.no_grad() @autocast("cuda", enabled=False) +@autocast("xpu", enabled=False) def compute_affine_and_rmsd( mobile: torch.Tensor, target: torch.Tensor, From 360924571f70796db802acfb6610bd40e2487f5a Mon Sep 17 00:00:00 2001 From: rajeshgangireddy Date: Mon, 21 Sep 2026 19:28:28 +0200 Subject: [PATCH 05/15] esmfold2: xpu branch for seed/rng-state save-restore processor.py's _seed_context saved/restored torch.cuda's rng state directly; now goes through esm.utils.device so xpu is covered too. --- esm/models/esmfold2/processor.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/esm/models/esmfold2/processor.py b/esm/models/esmfold2/processor.py index 47ff27d0..a5a446e9 100644 --- a/esm/models/esmfold2/processor.py +++ b/esm/models/esmfold2/processor.py @@ -16,6 +16,12 @@ ProteinInput, StructurePredictionInput, ) +from esm.utils.device import ( + get_rng_state_all, + manual_seed_all, + resolve_default_device, + set_rng_state_all, +) from esm.utils.structure.molecular_complex import MolecularComplexResult @@ -24,23 +30,23 @@ def _seed_context(seed: int | None): if seed is None: yield return + device_type = resolve_default_device().type py_state = random.getstate() np_state = np.random.get_state() torch_state = torch.random.get_rng_state() - cuda_state = torch.cuda.get_rng_state_all() if torch.cuda.is_available() else None + accel_state = get_rng_state_all(device_type) random.seed(seed) np.random.seed(seed) torch.manual_seed(seed) - if torch.cuda.is_available(): - torch.cuda.manual_seed_all(seed) + manual_seed_all(device_type, seed) try: yield finally: random.setstate(py_state) np.random.set_state(np_state) torch.random.set_rng_state(torch_state) - if cuda_state is not None: - torch.cuda.set_rng_state_all(cuda_state) + if accel_state is not None: + set_rng_state_all(device_type, accel_state) @contextmanager From ed5f0a0bc516199e2d01182eea06fc5ff86276ce Mon Sep 17 00:00:00 2001 From: rajeshgangireddy Date: Mon, 21 Sep 2026 19:28:43 +0200 Subject: [PATCH 06/15] esmfold2/layers: enable xpu (autocast, rng, triton, cueq gating) - generalize the two remaining hardcoded cuda autocast sites - _seed_context saves/restores rng state via esm.utils.device - allow the vendored Triton kernels to import on xpu, not just cuda (is_cuda checks -> device.type in (cuda, xpu)) - CUE_AVAILABLE now also requires torch.cuda.is_available(): the cuequivariance import can succeed on xpu even though the library JIT-compiles via nvrtc and can't actually run there - FusedLNLinearSwiGLUFunction's forward/backward used torch.amp.custom_fwd/custom_bwd(device_type="cuda"), which silently skips the bf16 cast under an xpu autocast context since device_type is fixed at decoration time. Replaced with an explicit, device-derived equivalent. Verified forward+backward on both cuda and xpu: bf16 autocast now engages correctly and both devices land on the same max-diff vs an fp32 reference. --- .../esmfold2/kernels/fused_lnlin_swiglu.py | 63 ++++++++++--------- esm/models/esmfold2/layers.py | 52 ++++++++++----- 2 files changed, 71 insertions(+), 44 deletions(-) diff --git a/esm/models/esmfold2/kernels/fused_lnlin_swiglu.py b/esm/models/esmfold2/kernels/fused_lnlin_swiglu.py index b163c5aa..144ea6d7 100644 --- a/esm/models/esmfold2/kernels/fused_lnlin_swiglu.py +++ b/esm/models/esmfold2/kernels/fused_lnlin_swiglu.py @@ -341,39 +341,46 @@ class FusedLNLinearSwiGLUFunction(torch.autograd.Function): """ @staticmethod - @torch.amp.custom_fwd(device_type="cuda", cast_inputs=torch.bfloat16) def forward(ctx, X, W12, LN_W, LN_B): - x_shape = X.shape - x_2d = X.contiguous().view(-1, x_shape[-1]) - out, lin, mean, rstd = _lnlin_swiglu_fwd(x_2d, W12, LN_W, LN_B) - ctx.save_for_backward(x_2d, W12, LN_W, LN_B, mean, rstd, lin) - ctx.x_shape = x_shape - ctx.has_ln_bias = LN_B is not None - return out.view(*x_shape[:-1], out.shape[-1]) + # Mirrors torch.amp.custom_fwd(cast_inputs=bfloat16), but device-derived + # instead of hardcoded to "cuda" so XPU autocast is respected too. + device_type = X.device.type + if torch.is_autocast_enabled(device_type): + X, W12, LN_W = X.bfloat16(), W12.bfloat16(), LN_W.bfloat16() + if LN_B is not None: + LN_B = LN_B.bfloat16() + with torch.amp.autocast(device_type, enabled=False): + x_shape = X.shape + x_2d = X.contiguous().view(-1, x_shape[-1]) + out, lin, mean, rstd = _lnlin_swiglu_fwd(x_2d, W12, LN_W, LN_B) + ctx.save_for_backward(x_2d, W12, LN_W, LN_B, mean, rstd, lin) + ctx.x_shape = x_shape + ctx.has_ln_bias = LN_B is not None + return out.view(*x_shape[:-1], out.shape[-1]) @staticmethod - @torch.amp.custom_bwd(device_type="cuda") def backward(ctx, dout): x_2d, W12, LN_W, LN_B, mean, rstd, lin = ctx.saved_tensors - dout_2d = dout.contiguous().view(-1, dout.shape[-1]) - K = x_2d.shape[1] - - # SwiGLU backward, in-place into the saved `lin` buffer (no new alloc). - dlin = _swiglu_bwd_inplace(dout_2d, lin) - - # LN+Linear backward via cuBLAS + ATen LN bwd. - # x_norm needed for dW12; recomputed via F.layer_norm (cuDNN, ~100 µs at d=256). - x_norm = F.layer_norm(x_2d, (K,), LN_W, LN_B, eps=1e-5) - dW12 = x_norm.transpose(0, 1) @ dlin # [K, 2N] - dx_norm = dlin @ W12.transpose(0, 1) # [M, K] - del x_norm - - # native_layer_norm_backward output_mask = [need_dX, need_dGamma, need_dBeta]. - # We always need dX and dGamma; dBeta only when LN bias was used. - output_mask = [True, True, ctx.has_ln_bias] - dX, dLN_W, dLN_B = torch.ops.aten.native_layer_norm_backward( - dx_norm, x_2d, [K], mean.float(), rstd.float(), LN_W, LN_B, output_mask - ) + with torch.amp.autocast(x_2d.device.type, enabled=False): + dout_2d = dout.contiguous().view(-1, dout.shape[-1]) + K = x_2d.shape[1] + + # SwiGLU backward, in-place into the saved `lin` buffer (no new alloc). + dlin = _swiglu_bwd_inplace(dout_2d, lin) + + # LN+Linear backward via cuBLAS + ATen LN bwd. + # x_norm needed for dW12; recomputed via F.layer_norm (cuDNN, ~100 µs at d=256). + x_norm = F.layer_norm(x_2d, (K,), LN_W, LN_B, eps=1e-5) + dW12 = x_norm.transpose(0, 1) @ dlin # [K, 2N] + dx_norm = dlin @ W12.transpose(0, 1) # [M, K] + del x_norm + + # native_layer_norm_backward output_mask = [need_dX, need_dGamma, need_dBeta]. + # We always need dX and dGamma; dBeta only when LN bias was used. + output_mask = [True, True, ctx.has_ln_bias] + dX, dLN_W, dLN_B = torch.ops.aten.native_layer_norm_backward( + dx_norm, x_2d, [K], mean.float(), rstd.float(), LN_W, LN_B, output_mask + ) # If LN_B was None (no bias), ATen returns dLN_B=None and we just pass it through. return dX.view(ctx.x_shape), dW12, dLN_W, dLN_B diff --git a/esm/models/esmfold2/layers.py b/esm/models/esmfold2/layers.py index d4a796e7..bf749841 100644 --- a/esm/models/esmfold2/layers.py +++ b/esm/models/esmfold2/layers.py @@ -40,7 +40,10 @@ triangle_multiplicative_update as _cue_tri_mul, ) - CUE_AVAILABLE = True + # cuequivariance JIT-compiles via nvrtc (CUDA-only): the import above can + # succeed on XPU even though the library can't actually run there, so + # also require a real CUDA device. + CUE_AVAILABLE = torch.cuda.is_available() except ImportError: _cue_attn_pair_bias: Any = None _cue_tri_mul: Any = None @@ -49,9 +52,10 @@ # Vendored inference-only Triton kernels. try: # `@triton.autotune` resolves `driver.active` when it decorates, so importing - # these without a device raises RuntimeError rather than ImportError. - if not torch.cuda.is_available(): - raise ImportError("no CUDA device; skipping the Triton kernels") + # these without a device raises RuntimeError rather than ImportError. Triton + # supports XPU too, so allow either. + if not (torch.cuda.is_available() or torch.xpu.is_available()): + raise ImportError("no CUDA/XPU device; skipping the Triton kernels") from esm.models.esmfold2.kernels import ( FusedDropoutResidual as _FusedDropoutResidual, @@ -71,11 +75,21 @@ TRITON_KERNELS_AVAILABLE = False from esm.models.esmfold2.config import EsmFold2Config +from esm.utils.device import ( + get_rng_state_all, + manual_seed_all, + resolve_default_device, + set_rng_state_all, + supports_amp_autocast, +) BACKEND_FUSED = "fused" BACKEND_CUEQ = "cuequivariance" _VALID_BACKENDS = (None, BACKEND_FUSED, BACKEND_CUEQ) +# Devices the vendored Triton kernels can run on. +_TRITON_DEVICE_TYPES = ("cuda", "xpu") + # The vendored fused Triton kernels (LN+SwiGLU, trimul-with-residual) operate in # bfloat16 only. Single-source that dtype here so every fused-path buffer and # cast references one named constant instead of scattering ``torch.bfloat16``. @@ -88,7 +102,7 @@ def _fused_active(module: nn.Module, tensor: Tensor) -> bool: TRITON_KERNELS_AVAILABLE and getattr(module, "_kernel_backend", None) == BACKEND_FUSED and not torch.is_grad_enabled() - and tensor.is_cuda + and tensor.device.type in _TRITON_DEVICE_TYPES ) @@ -97,7 +111,7 @@ def _fused_pair_stack_active(module: nn.Module, tensor: Tensor) -> bool: return ( TRITON_KERNELS_AVAILABLE and getattr(module, "_kernel_backend", None) == BACKEND_FUSED - and tensor.is_cuda + and tensor.device.type in _TRITON_DEVICE_TYPES ) @@ -1402,7 +1416,12 @@ def forward( z_rel = relative_position_encoding.to(dtype=torch.float32) z = torch.cat([z_trunk.to(dtype=torch.float32), z_rel], dim=-1) z = self.z_proj(self.z_input_norm(z)) - with torch.autocast(device_type="cuda", dtype=torch.bfloat16): + device_type = z.device.type + with torch.autocast( + device_type=device_type, + dtype=torch.bfloat16, + enabled=supports_amp_autocast(device_type), + ): for block in self.z_transitions: z = z + block(z) if inference_cache is not None: @@ -1907,7 +1926,7 @@ def sample( diff_atom_intermediates = dm_out.get("atom_intermediates") # Reverse diffusion alignment (Kabsch) - with torch.autocast(device_type="cuda", enabled=False): + with torch.autocast(device_type=x_noisy.device.type, enabled=False): x_noisy = self._weighted_rigid_align( x_noisy.float(), x_denoised.float(), atom_mask, atom_mask ) @@ -2184,31 +2203,32 @@ def forward(self, hidden_states: Tensor, *, lm_dropout: float = 0.0) -> Tensor: @contextmanager -def _seed_context(seed: int | None, *, cuda: bool = True): +def _seed_context(seed: int | None, *, seed_accelerator: bool = True): """Temporarily seed Python, NumPy, and PyTorch RNGs.""" if seed is None: yield return + device_type = resolve_default_device().type py_state = random.getstate() np_state = np.random.get_state() torch_state = torch.get_rng_state() - cuda_states = ( - torch.cuda.get_rng_state_all() if cuda and torch.cuda.is_available() else None + accel_states = ( + get_rng_state_all(device_type) if seed_accelerator else None ) seed = int(seed) % (2**32) random.seed(seed) np.random.seed(seed) torch.manual_seed(seed) - if cuda and torch.cuda.is_available(): - torch.cuda.manual_seed_all(seed) + if seed_accelerator: + manual_seed_all(device_type, seed) try: yield finally: random.setstate(py_state) np.random.set_state(np_state) torch.set_rng_state(torch_state) - if cuda_states is not None: - torch.cuda.set_rng_state_all(cuda_states) + if accel_states is not None: + set_rng_state_all(device_type, accel_states) # =========================================================================== @@ -2706,7 +2726,7 @@ def forward( len(self.blocks) > 0 and getattr(self.blocks[0], "_kernel_backend", None) == BACKEND_FUSED ) - if pair.is_cuda and fused_on and orig_dtype != torch.bfloat16: + if pair.device.type in _TRITON_DEVICE_TYPES and fused_on and orig_dtype != torch.bfloat16: pair = pair.to(torch.bfloat16) for block in self.blocks: fn = partial(block, pair_attention_mask=pair_attention_mask) From 56ee6952f68318ac470ae7ad32d3843f19ef3a0a Mon Sep 17 00:00:00 2001 From: rajeshgangireddy Date: Mon, 21 Sep 2026 19:28:55 +0200 Subject: [PATCH 07/15] esmc: clarify on_cuda -> cuda_fused_kernels_available Rename only; this flag gates CUDA-only libs (flash-attn, TE), not whether an accelerator is present at all. --- esm/models/esmc/model.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/esm/models/esmc/model.py b/esm/models/esmc/model.py index 0fb5783f..4e8a043b 100644 --- a/esm/models/esmc/model.py +++ b/esm/models/esmc/model.py @@ -285,12 +285,12 @@ class EsmcModel(EsmcPreTrainedModel): def __init__(self, config: EsmcConfig): super().__init__(config) - # Every fused kernel is CUDA-only, so all of them hang off one condition: - # the device this model's parameters are being created on. Deriving them - # separately is what let the LayerNorm and attention gates disagree. - on_cuda = torch.get_default_device().type == "cuda" + # flash-attn and TE are both CUDA-only, so they hang off one condition: + # the device this model's parameters are being created on. Deriving + # them separately is what let the LayerNorm and attention gates disagree. + cuda_fused_kernels_available = torch.get_default_device().type == "cuda" self._use_flash_attn = ( - on_cuda + cuda_fused_kernels_available and FLASH_ATTN_INSTALLED and config.attn_implementation == "flash_attention_2" ) @@ -300,7 +300,7 @@ def __init__(self, config: EsmcConfig): config.num_attention_heads, config.num_hidden_layers, use_flash_attn=self._use_flash_attn, - use_te=on_cuda and TE_INSTALLED, + use_te=cuda_fused_kernels_available and TE_INSTALLED, ) self._sae_models: nn.ModuleDict = nn.ModuleDict() self._register_state_dict_hook(_drop_te_extra_state) From 671a20f915105271ff0db5ae1f31b7342db34b31 Mon Sep 17 00:00:00 2001 From: rajeshgangireddy Date: Mon, 21 Sep 2026 19:44:21 +0200 Subject: [PATCH 08/15] tests: add xpu coverage mirroring existing gpu tests - xpu pytest marker - esmc_test: cpu-vs-xpu agreement + build matrix - esmfold2_test: kernel_backends_agree extended to xpu/fused - esmfold2_builds_test: cpu-vs-xpu agreement, use_amp, build matrix - fixed stale use_amp docstring (now supports_amp_autocast, not a cuda string check) All tolerances measured on real hardware (RTX 3090 / Arc Pro B70), not guessed. --- pyproject.toml | 1 + tests/models/esmc_test.py | 83 +++++++++++++++++++++++++++- tests/models/esmfold2_builds_test.py | 61 +++++++++++++++++++- tests/models/esmfold2_test.py | 24 +++++--- 4 files changed, 159 insertions(+), 10 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index f9bf7d8e..b8a42ff6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -76,6 +76,7 @@ addopts = """ """ markers = [ "gpu: requires a CUDA device; run in the monorepo's gpu-ci", + "xpu: requires an Intel XPU device; run manually on xpu hardware", "manual: too heavy for a hosted runner; run in the monorepo's research-ci", "merge_only: needs a real published checkpoint; run in the monorepo's research-ci", ] diff --git a/tests/models/esmc_test.py b/tests/models/esmc_test.py index 9e89188d..554c4ceb 100644 --- a/tests/models/esmc_test.py +++ b/tests/models/esmc_test.py @@ -2,7 +2,7 @@ Structural tests run on CPU against tiny randomly-initialised models. Tests that need published weights use ESMC-300M and skip when the Hub is unreachable. GPU -tests are marked ``gpu``. +tests are marked ``gpu``, XPU tests ``xpu``. """ import functools @@ -1328,6 +1328,27 @@ def test_cpu_and_gpu_agree(esmc_300m_dir, esmc_tokenizer): torch.testing.assert_close(actual, expected, atol=3e-3, rtol=1e-4) +@pytest.mark.xpu +def test_cpu_and_xpu_agree(esmc_300m_dir, esmc_tokenizer): + """Same weights, same input, both devices, fp32 on each side. + + XPU has no fused Transformer Engine layers, so both sides run the same + reference implementation; the gap is just device/kernel rounding. + """ + on_cpu = EsmcModel.from_pretrained(esmc_300m_dir, device="cpu") + on_xpu = EsmcModel.from_pretrained(esmc_300m_dir, device="xpu") + + for sequence in SEQUENCES.values(): + enc = esmc_tokenizer(sequence, return_tensors="pt") + with torch.no_grad(): + expected = on_cpu(**enc).last_hidden_state.float() + actual = on_xpu(**{k: v.to("xpu") for k, v in enc.items()}) + actual = actual.last_hidden_state.float().cpu() + + # Observed max|Δ|: 3e-7 short to 7.4e-6 long. + torch.testing.assert_close(actual, expected, atol=1e-5, rtol=1e-5) + + # Every build reachable on a GPU: dtype x attention backend x fused/reference # layers. flash_attention_2 is only paired with fp16 / bf16 because the kernel # rejects fp32, and only with the fused layers because a CPU-built model never @@ -1407,6 +1428,66 @@ def test_every_gpu_build_reaches_the_reference( ) +# XPU has no flash-attn / Transformer Engine, so every build degenerates to +# the reference layers regardless of the requested `layers`; sdpa and eager +# are the only attention backends. +XPU_BUILDS = [ + (torch.float32, "sdpa"), + (torch.float32, "eager"), + (torch.bfloat16, "sdpa"), + (torch.bfloat16, "eager"), + (torch.float16, "sdpa"), + (torch.float16, "eager"), +] + +# Worst observed across every build and length in XPU_BUILDS: +# max|Δ| norms argmax mismatches (of 12 / 131 / 412) +# fp32 2.6e-6 0 / 0 / 0 +# bf16 1.34e-2 0 / 2 / 1 +# fp16 1.45e-3 0 / 1 / 0 +# Tighter than the CUDA table above: there is no Transformer Engine to +# accommodate, so every XPU build runs the same math as the CPU reference. +REFERENCE_NORM_TOLERANCE_XPU = { + torch.float32: 1e-5, + torch.bfloat16: 0.02, + torch.float16: 3e-3, +} +REFERENCE_ARGMAX_MISMATCHES_XPU = {torch.float32: 0, torch.bfloat16: 3, torch.float16: 2} + + +@pytest.mark.xpu +@pytest.mark.parametrize("dtype,attn", XPU_BUILDS) +def test_every_xpu_build_reaches_the_reference( + esmc_300m_dir, esmc_tokenizer, dtype, attn +): + """Correct, not merely self-consistent: every XPU build vs the CPU reference.""" + model = build_esmc( + esmc_300m_dir, + device="xpu", + dtype=dtype, + attn=attn, + model_class=EsmcForMaskedLM, + ) + + for name, sequence in SEQUENCES.items(): + case = reference_values()["cases"][name] + enc = { + k: v.to("xpu") + for k, v in esmc_tokenizer(sequence, return_tensors="pt").items() + } + with torch.no_grad(): + out = model(**enc) + mismatches = argmax_mismatches(out.logits, case["argmax"]) + assert mismatches <= REFERENCE_ARGMAX_MISMATCHES_XPU[dtype], (name, mismatches) + torch.testing.assert_close( + out.last_hidden_state.float()[0].norm(dim=-1).cpu(), + torch.tensor(case["last_hidden_state_norms"]), + atol=REFERENCE_NORM_TOLERANCE_XPU[dtype], + rtol=0, + msg=lambda text: f"{name}: {text}", + ) + + # --------------------------------------------------------------------------- # The retired date-stamped factories still do real work # --------------------------------------------------------------------------- diff --git a/tests/models/esmfold2_builds_test.py b/tests/models/esmfold2_builds_test.py index 9e494fe0..4c50b314 100644 --- a/tests/models/esmfold2_builds_test.py +++ b/tests/models/esmfold2_builds_test.py @@ -436,7 +436,7 @@ def test_cuda_autocast_is_a_no_op_off_cuda(tiny_esmfold2): def test_use_amp_is_off_for_cpu_inputs(tiny_esmfold2): - """``use_amp = ref_pos.device.type == "cuda"``, observed rather than read. + """``use_amp = supports_amp_autocast(device_type)``, observed rather than read. The single device-conditional switch in ``forward``. Asserted where it takes effect - inside the autocast block, at the first module the block wraps - @@ -615,9 +615,19 @@ def test_cpu_and_gpu_agree(kernel_esmfold2_config, cpu_fp32_result): assert_close_to_reference(result, cpu_fp32_result, GPU_TOLERANCE, "cpu-vs-gpu") +@pytest.mark.xpu +def test_cpu_and_xpu_agree(kernel_esmfold2_config, cpu_fp32_result): + """E1 on Intel XPU. Same reasoning as ``test_cpu_and_gpu_agree``.""" + model = build_model(kernel_esmfold2_config, device="xpu") + assert next(model.parameters()).device.type == "xpu" + result = run_forward(model, ESMFOLD2_SEQUENCES[MATRIX_LENGTH], flash=False) + + assert_close_to_reference(result, cpu_fp32_result, GPU_TOLERANCE, "cpu-vs-xpu") + + @pytest.mark.gpu def test_use_amp_is_on_for_cuda_inputs(tiny_esmfold2_config): - """The other half of ``use_amp = ref_pos.device.type == "cuda"``. + """The other half of ``use_amp = supports_amp_autocast(device_type)``. Pinned as an expectation because it is *why* the CPU/GPU tolerances below are bf16-sized rather than fp32-sized: there is no supported way to run the @@ -636,6 +646,22 @@ def test_use_amp_is_on_for_cuda_inputs(tiny_esmfold2_config): assert seen and all(seen) +@pytest.mark.xpu +def test_use_amp_is_on_for_xpu_inputs(tiny_esmfold2_config): + """The XPU half of ``use_amp = supports_amp_autocast(device_type)``.""" + model = build_model(tiny_esmfold2_config, device="xpu") + seen: list[bool] = [] + handle = model.inputs_embedder.register_forward_pre_hook( + lambda module, args: seen.append(torch.is_autocast_enabled("xpu")) + ) + try: + run_forward(model, ESMFOLD2_SEQUENCES["tiny"], flash=False) + finally: + handle.remove() + + assert seen and all(seen) + + @pytest.mark.gpu @pytest.mark.parametrize("backend,flash,chunk_size", GPU_BUILDS) def test_every_gpu_build_reaches_the_cpu_reference( @@ -675,6 +701,36 @@ def test_every_gpu_build_reaches_the_cpu_reference( assert_close_to_reference(result, cpu_fp32_result, GPU_TOLERANCE, label) +# XPU has no flash-attn and no cuequivariance build, so the matrix is just +# backend x chunk size. Measured deltas were the same order as GPU_BUILDS +# (9.4e-3 to 9.6e-3 vs 9.96e-3 to 1.01e-2), so it reuses GPU_TOLERANCE. +XPU_BUILDS = [ + (None, None), + (None, 64), + ("fused", None), + ("fused", 64), +] + + +@pytest.mark.xpu +@pytest.mark.parametrize("backend,chunk_size", XPU_BUILDS) +def test_every_xpu_build_reaches_the_cpu_reference( + kernel_esmfold2_config, cpu_fp32_result, backend, chunk_size +): + """E2 on Intel XPU. Same reasoning as the CUDA version above.""" + skip_if_backend_missing(backend) + model = build_model(kernel_esmfold2_config, device="xpu") + model.set_kernel_backend(backend) + model.set_chunk_size(chunk_size) + + assert_backend_dispatched(model, backend) + assert_chunking_dispatched(model, chunk_size) + + result = run_forward(model, ESMFOLD2_SEQUENCES[MATRIX_LENGTH], flash=False) + label = f"{backend}/chunk={chunk_size}" + assert_close_to_reference(result, cpu_fp32_result, GPU_TOLERANCE, label) + + # --------------------------------------------------------------------------- # Torch.compile # --------------------------------------------------------------------------- @@ -699,3 +755,4 @@ def test_torch_compile_refuses_to_stack_with_the_fused_backend(tiny_esmfold2_con # to be enough to get past the guard. model.set_kernel_backend(None) model.apply_torch_compile(mode="fixed_seqlen") + diff --git a/tests/models/esmfold2_test.py b/tests/models/esmfold2_test.py index 503a472b..4539c0df 100644 --- a/tests/models/esmfold2_test.py +++ b/tests/models/esmfold2_test.py @@ -3,7 +3,7 @@ Structural tests run on CPU against a tiny randomly-initialised model with synthetic LM states, so no 6B PLM backbone is needed. Published-weight tests use biohub/ESMFold2 and skip when the Hub is unreachable. GPU tests are marked -``gpu``. +``gpu``, XPU tests ``xpu``. """ import json @@ -1175,9 +1175,16 @@ def test_loads_from_hub_with_full_key_coverage(repo, expected): # --------------------------------------------------------------------------- -@pytest.mark.gpu -@pytest.mark.parametrize("backend", ["fused", "cuequivariance"]) -def test_kernel_backends_agree(kernel_esmfold2_config, backend): +KERNEL_BACKEND_CASES = [ + pytest.param("cuda", "fused", marks=pytest.mark.gpu), + pytest.param("cuda", "cuequivariance", marks=pytest.mark.gpu), + # cuequivariance has no XPU build; fused (Triton) is the only backend there. + pytest.param("xpu", "fused", marks=pytest.mark.xpu), +] + + +@pytest.mark.parametrize("device,backend", KERNEL_BACKEND_CASES) +def test_kernel_backends_agree(kernel_esmfold2_config, device, backend): """Whatever accelerators a user has installed, the answer must match. Compared on the final coordinates and pLDDT rather than intermediate @@ -1196,12 +1203,12 @@ def test_kernel_backends_agree(kernel_esmfold2_config, backend): pytest.skip("cuequivariance unavailable") # ty:ignore[too-many-positional-arguments] torch.manual_seed(0) - model = EsmFold2Model(kernel_esmfold2_config).eval().cuda() + model = EsmFold2Model(kernel_esmfold2_config).eval().to(device) model.set_chunk_size(None) features, lm_hidden_states = esmfold2_inputs(model) - features = {k: v.cuda() for k, v in features.items()} - lm_hidden_states = lm_hidden_states.cuda() + features = {k: v.to(device) for k, v in features.items()} + lm_hidden_states = lm_hidden_states.to(device) def run(): # The sampler draws fresh noise per call; reseed for a fair comparison. @@ -1233,6 +1240,9 @@ def run(): # amplifies it. It matches the 25x-of-floor headroom esmfold2_builds_test # uses for the same comparison, which survives that runner. A wrong kernel # misses by orders of magnitude, so the check keeps its teeth. + # + # xpu/fused measured 2.3e-3, well inside this bound, so it reuses the same + # tolerances rather than a separate table. torch.testing.assert_close( candidate["sample_atom_coords"].float(), reference["sample_atom_coords"].float(), From 0c56a1580818afba827b55ad225ae30169df052d Mon Sep 17 00:00:00 2001 From: rajeshgangireddy Date: Mon, 21 Sep 2026 19:57:24 +0200 Subject: [PATCH 09/15] docs: note Intel XPU support in README --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index ec5f8658..de5d2c4d 100644 --- a/README.md +++ b/README.md @@ -268,6 +268,11 @@ with open("1mht_pred.cif", "w") as f: > **AMD ROCm users:** use ROCm 6.4 with PyTorch 2.9 or newer. +> **Intel XPU users:** pass `device="xpu"` instead of `"cuda"`. `pixi run -e xpu ...` +> gives a working environment. The vendored Triton kernels run on XPU; libraries +> with no XPU build (Transformer Engine, cuequivariance, flash-attn) fall back to +> the reference PyTorch path automatically. + ### Running ESMFold2 Through the Biohub Platform Install the `esm` Python package From e8e802139faea546de8c510978206ef031e07ee1 Mon Sep 17 00:00:00 2001 From: rajeshgangireddy Date: Fri, 25 Sep 2026 13:50:09 +0200 Subject: [PATCH 10/15] feat: add XPU support for rotary embeddings with Triton kernel --- esm/models/esmc/layers.py | 23 +++++++- esm/models/esmc/xpu_rotary.py | 102 ++++++++++++++++++++++++++++++++++ tests/models/esmc_test.py | 88 +++++++++++++++++++++++++---- 3 files changed, 199 insertions(+), 14 deletions(-) create mode 100644 esm/models/esmc/xpu_rotary.py diff --git a/esm/models/esmc/layers.py b/esm/models/esmc/layers.py index 8a55589e..ddf42942 100644 --- a/esm/models/esmc/layers.py +++ b/esm/models/esmc/layers.py @@ -7,6 +7,7 @@ """ import math +from functools import lru_cache import torch import torch.nn as nn @@ -26,6 +27,13 @@ ) +@lru_cache(maxsize=1) +def _get_xpu_rotary_kernel(): + from esm.models.esmc.xpu_rotary import apply_rotary_emb_xpu + + return apply_rotary_emb_xpu + + class EsmcRotaryEmbedding(nn.Module): """Rotary position embeddings (RoPE) as used by ESMC. @@ -35,8 +43,8 @@ class EsmcRotaryEmbedding(nn.Module): * The ``inv_freq`` buffer is recomputed on every device move and kept in fp32 even when the module is cast to bf16/fp16. CPU and CUDA ``pow`` differ by ~1 fp32 ULP, which compounds across the deep attention stack. - * The ``forward`` selects the Flash-Attention Triton RoPE kernel when it is - available and the tensors live on CUDA, otherwise the pure-PyTorch path. + * CUDA uses Flash-Attention Triton RoPE when available. XPU fp32 inference + uses a separate Triton kernel; other calls use the pure-PyTorch path. Parameters ---------- @@ -187,6 +195,17 @@ def forward( assert apply_triton_rotary is not None q_rot = apply_triton_rotary(q, cos, sin, interleaved=self.interleaved) k_rot = apply_triton_rotary(k, cos, sin, interleaved=self.interleaved) + elif ( + q.device.type == "xpu" + and q.dtype == torch.float32 + and k.device.type == "xpu" + and k.dtype == torch.float32 + and not self.interleaved + and not torch.is_grad_enabled() + ): + apply_xpu_rotary = _get_xpu_rotary_kernel() + q_rot = apply_xpu_rotary(q, cos, sin) + k_rot = apply_xpu_rotary(k, cos, sin) else: q_rot = apply_rotary_emb_torch(q, cos, sin, self.interleaved) k_rot = apply_rotary_emb_torch(k, cos, sin, self.interleaved) diff --git a/esm/models/esmc/xpu_rotary.py b/esm/models/esmc/xpu_rotary.py new file mode 100644 index 00000000..9459b2d7 --- /dev/null +++ b/esm/models/esmc/xpu_rotary.py @@ -0,0 +1,102 @@ +"""Inference-only fp32 RoPE kernel for ESMC on Intel XPU.""" + +import torch +import triton +import triton.language as tl + + +@triton.jit +def _rotary_kernel( + x_ptr, + cos_ptr, + sin_ptr, + out_ptr, + B: tl.constexpr, + S: tl.constexpr, + H: tl.constexpr, + D: tl.constexpr, + RO: tl.constexpr, + X_S0: tl.constexpr, + X_S1: tl.constexpr, + X_S2: tl.constexpr, + X_S3: tl.constexpr, + C_S0: tl.constexpr, + C_S1: tl.constexpr, + S_S0: tl.constexpr, + S_S1: tl.constexpr, + BLOCK: tl.constexpr, +): + index = tl.program_id(0) * BLOCK + tl.arange(0, BLOCK) + total = B * S * H * D + mask = index < total + + d = index % D + h = (index // D) % H + s = (index // (D * H)) % S + b = index // (D * H * S) + x_offset = b * X_S0 + s * X_S1 + h * X_S2 + d * X_S3 + value = tl.load(x_ptr + x_offset, mask=mask, other=0.0).to(tl.float32) + + rotate_mask = mask & (d < RO) + frequency = tl.where(d < RO // 2, d, d - RO // 2) + cos_value = tl.load( + cos_ptr + s * C_S0 + frequency * C_S1, mask=rotate_mask, other=0.0 + ).to(tl.float32) + sin_value = tl.load( + sin_ptr + s * S_S0 + frequency * S_S1, mask=rotate_mask, other=0.0 + ).to(tl.float32) + pair_d = tl.where(d < RO // 2, d + RO // 2, d - RO // 2) + pair_offset = b * X_S0 + s * X_S1 + h * X_S2 + pair_d * X_S3 + pair_value = tl.load(x_ptr + pair_offset, mask=rotate_mask, other=0.0).to( + tl.float32 + ) + pair_sign = tl.where(d < RO // 2, -1.0, 1.0) + rotated = value * cos_value + (pair_value * pair_sign) * sin_value + result = tl.where(d < RO, rotated, value) + tl.store(out_ptr + index, result, mask=mask) + + +def apply_rotary_emb_xpu( + x: torch.Tensor, cos: torch.Tensor, sin: torch.Tensor +) -> torch.Tensor: + """Apply ESMC's non-interleaved RoPE in fp32 inference mode.""" + if torch.is_grad_enabled(): + raise RuntimeError("XPU Triton RoPE is only supported with gradients disabled") + if x.device.type != "xpu" or cos.device != x.device or sin.device != x.device: + raise ValueError("XPU Triton RoPE requires all inputs on the same XPU") + if x.dtype != torch.float32 or cos.dtype != x.dtype or sin.dtype != x.dtype: + raise ValueError("XPU Triton RoPE requires fp32 inputs") + if x.ndim != 4 or cos.ndim != 2 or sin.shape != cos.shape: + raise ValueError("unexpected RoPE input shapes") + + batch, sequence, heads, dim = x.shape + rotary_dim = cos.shape[-1] * 2 + if rotary_dim > dim or cos.shape[0] < sequence: + raise ValueError("RoPE dimensions exceed the input shape") + + output = torch.empty( + x.shape, device=x.device, dtype=x.dtype, memory_format=torch.contiguous_format + ) + block = 128 + _rotary_kernel[(triton.cdiv(x.numel(), block),)]( + x, + cos, + sin, + output, + batch, # ty:ignore[invalid-argument-type] + sequence, # ty:ignore[invalid-argument-type] + heads, # ty:ignore[invalid-argument-type] + dim, # ty:ignore[invalid-argument-type] + rotary_dim, # ty:ignore[invalid-argument-type] + x.stride(0), # ty:ignore[invalid-argument-type] + x.stride(1), # ty:ignore[invalid-argument-type] + x.stride(2), # ty:ignore[invalid-argument-type] + x.stride(3), # ty:ignore[invalid-argument-type] + cos.stride(0), # ty:ignore[invalid-argument-type] + cos.stride(1), # ty:ignore[invalid-argument-type] + sin.stride(0), # ty:ignore[invalid-argument-type] + sin.stride(1), # ty:ignore[invalid-argument-type] + BLOCK=block, # ty:ignore[invalid-argument-type] + num_warps=4, # ty:ignore[unknown-argument] + ) + return output diff --git a/tests/models/esmc_test.py b/tests/models/esmc_test.py index 554c4ceb..629bae16 100644 --- a/tests/models/esmc_test.py +++ b/tests/models/esmc_test.py @@ -20,6 +20,7 @@ import torch.nn as nn from safetensors.torch import save_file +from esm.layers.rotary import apply_rotary_emb_torch from esm.models.esmc import ( ESMC, EsmcConfig, @@ -30,6 +31,7 @@ EsmcOutput, EsmcTokenizer, ) +from esm.models.esmc import layers as layers_module from esm.models.esmc import model as model_module from esm.models.esmc.checkpoint_layout import native_to_published, published_to_native from esm.models.esmc.kernels import FLASH_ATTN_INSTALLED, TE_INSTALLED @@ -1332,8 +1334,8 @@ def test_cpu_and_gpu_agree(esmc_300m_dir, esmc_tokenizer): def test_cpu_and_xpu_agree(esmc_300m_dir, esmc_tokenizer): """Same weights, same input, both devices, fp32 on each side. - XPU has no fused Transformer Engine layers, so both sides run the same - reference implementation; the gap is just device/kernel rounding. + XPU uses its Triton RoPE kernel for inference; the CPU side is the + reference implementation. """ on_cpu = EsmcModel.from_pretrained(esmc_300m_dir, device="cpu") on_xpu = EsmcModel.from_pretrained(esmc_300m_dir, device="xpu") @@ -1345,10 +1347,72 @@ def test_cpu_and_xpu_agree(esmc_300m_dir, esmc_tokenizer): actual = on_xpu(**{k: v.to("xpu") for k, v in enc.items()}) actual = actual.last_hidden_state.float().cpu() - # Observed max|Δ|: 3e-7 short to 7.4e-6 long. + # The original tight reference tolerance also holds with fused XPU RoPE. torch.testing.assert_close(actual, expected, atol=1e-5, rtol=1e-5) +@pytest.mark.xpu +def test_xpu_rotary_triton_matches_torch_reference(monkeypatch): + rotary = EsmcRotaryEmbedding(dim=16).to("xpu").eval() + q_storage = torch.randn((2, 13, 3, 32), device="xpu", dtype=torch.float32) + q = q_storage[..., ::2] + k = torch.randn_like(q) + + get_kernel = layers_module._get_xpu_rotary_kernel + kernel_lookups = 0 + + def counted_get_kernel(): + nonlocal kernel_lookups + kernel_lookups += 1 + return get_kernel() + + monkeypatch.setattr(layers_module, "_get_xpu_rotary_kernel", counted_get_kernel) + with torch.inference_mode(): + actual_q, actual_k = rotary(q, k) + assert rotary._cos_cached is not None and rotary._sin_cached is not None + expected_q = apply_rotary_emb_torch(q, rotary._cos_cached, rotary._sin_cached) + expected_k = apply_rotary_emb_torch(k, rotary._cos_cached, rotary._sin_cached) + + assert kernel_lookups == 1 + torch.testing.assert_close(actual_q, expected_q, atol=1e-6, rtol=1e-6) + torch.testing.assert_close(actual_k, expected_k, atol=1e-6, rtol=1e-6) + + +@pytest.mark.xpu +@pytest.mark.parametrize( + ("dtype", "requires_grad"), [(torch.float32, True), (torch.bfloat16, False)] +) +def test_xpu_rotary_keeps_reference_for_grad_or_non_fp32( + monkeypatch, dtype, requires_grad +): + def unexpected_kernel(): + raise AssertionError("unsupported RoPE configuration selected Triton") + + monkeypatch.setattr(layers_module, "_get_xpu_rotary_kernel", unexpected_kernel) + rotary = EsmcRotaryEmbedding(dim=16).to(device="xpu", dtype=dtype).eval() + q = torch.randn( + (2, 13, 3, 16), device="xpu", dtype=dtype, requires_grad=requires_grad + ) + k = torch.randn_like(q, requires_grad=requires_grad) + + if requires_grad: + actual_q, actual_k = rotary(q, k) + (actual_q.sum() + actual_k.sum()).backward() + assert q.grad is not None and k.grad is not None + else: + with torch.inference_mode(): + actual_q, actual_k = rotary(q, k) + assert rotary._cos_cached is not None and rotary._sin_cached is not None + expected_q = apply_rotary_emb_torch( + q, rotary._cos_cached, rotary._sin_cached + ) + expected_k = apply_rotary_emb_torch( + k, rotary._cos_cached, rotary._sin_cached + ) + assert torch.equal(actual_q, expected_q) + assert torch.equal(actual_k, expected_k) + + # Every build reachable on a GPU: dtype x attention backend x fused/reference # layers. flash_attention_2 is only paired with fp16 / bf16 because the kernel # rejects fp32, and only with the fused layers because a CPU-built model never @@ -1440,19 +1504,23 @@ def test_every_gpu_build_reaches_the_reference( (torch.float16, "eager"), ] -# Worst observed across every build and length in XPU_BUILDS: +# Pre-fusion maxima across every build and length in XPU_BUILDS: # max|Δ| norms argmax mismatches (of 12 / 131 / 412) # fp32 2.6e-6 0 / 0 / 0 # bf16 1.34e-2 0 / 2 / 1 # fp16 1.45e-3 0 / 1 / 0 -# Tighter than the CUDA table above: there is no Transformer Engine to -# accommodate, so every XPU build runs the same math as the CPU reference. +# XPU has no Transformer Engine; fp32 inference now uses fused Triton RoPE. +# These bounds are against fixed CPU references and still pass for that path. REFERENCE_NORM_TOLERANCE_XPU = { torch.float32: 1e-5, torch.bfloat16: 0.02, torch.float16: 3e-3, } -REFERENCE_ARGMAX_MISMATCHES_XPU = {torch.float32: 0, torch.bfloat16: 3, torch.float16: 2} +REFERENCE_ARGMAX_MISMATCHES_XPU = { + torch.float32: 0, + torch.bfloat16: 3, + torch.float16: 2, +} @pytest.mark.xpu @@ -1462,11 +1530,7 @@ def test_every_xpu_build_reaches_the_reference( ): """Correct, not merely self-consistent: every XPU build vs the CPU reference.""" model = build_esmc( - esmc_300m_dir, - device="xpu", - dtype=dtype, - attn=attn, - model_class=EsmcForMaskedLM, + esmc_300m_dir, device="xpu", dtype=dtype, attn=attn, model_class=EsmcForMaskedLM ) for name, sequence in SEQUENCES.items(): From 4b3b8c497edb1f0557a126184609fc5fbc653401 Mon Sep 17 00:00:00 2001 From: rajeshgangireddy Date: Wed, 7 Oct 2026 15:02:35 +0200 Subject: [PATCH 11/15] feat: enhance XPU support with error handling and new tests --- esm/models/esmc/layers.py | 12 +++++- esm/models/esmfold2/layers.py | 31 +++++++++++++--- esm/models/esmfold2/model.py | 4 +- esm/utils/device.py | 11 +++++- pyproject.toml | 2 +- tests/models/esm3_test.py | 55 ++++++++++++++++++++++++++++ tests/models/esmc_test.py | 18 +++++++++ tests/models/esmfold2_builds_test.py | 35 ++++++++++++++---- 8 files changed, 150 insertions(+), 18 deletions(-) create mode 100644 tests/models/esm3_test.py diff --git a/esm/models/esmc/layers.py b/esm/models/esmc/layers.py index ddf42942..9a2d7f39 100644 --- a/esm/models/esmc/layers.py +++ b/esm/models/esmc/layers.py @@ -29,8 +29,16 @@ @lru_cache(maxsize=1) def _get_xpu_rotary_kernel(): - from esm.models.esmc.xpu_rotary import apply_rotary_emb_xpu + """Triton RoPE kernel, or ``None`` if triton isn't installed. + Only the import is guarded: a real failure inside the kernel itself + (compile error, bad launch, ...) must still raise, not get treated as + "unavailable" and silently swapped for the reference path. + """ + try: + from esm.models.esmc.xpu_rotary import apply_rotary_emb_xpu + except ImportError: + return None return apply_rotary_emb_xpu @@ -202,8 +210,8 @@ def forward( and k.dtype == torch.float32 and not self.interleaved and not torch.is_grad_enabled() + and (apply_xpu_rotary := _get_xpu_rotary_kernel()) is not None ): - apply_xpu_rotary = _get_xpu_rotary_kernel() q_rot = apply_xpu_rotary(q, cos, sin) k_rot = apply_xpu_rotary(k, cos, sin) else: diff --git a/esm/models/esmfold2/layers.py b/esm/models/esmfold2/layers.py index bf749841..65868fbc 100644 --- a/esm/models/esmfold2/layers.py +++ b/esm/models/esmfold2/layers.py @@ -1094,13 +1094,22 @@ def _can_use_fused_pair_bias( def _can_use_cueq_pair_bias( self, z: Tensor, n_queries: int, beta: Tensor | float ) -> bool: - return ( + if not ( _cueq_active(self) and n_queries > 750 and z.dim() == 4 and self._is_zero_beta(beta) and hasattr(self, "pair_bias_proj") - ) + ): + return False + if z.device.type != "cuda": + # cuequivariance is CUDA-only. Raise instead of silently falling + # back to the reference path -- the user explicitly asked for + # this backend. + raise RuntimeError( + f"backend={BACKEND_CUEQ!r} is CUDA-only, got device {z.device.type!r}" + ) + return True def forward( self, @@ -2212,9 +2221,7 @@ def _seed_context(seed: int | None, *, seed_accelerator: bool = True): py_state = random.getstate() np_state = np.random.get_state() torch_state = torch.get_rng_state() - accel_states = ( - get_rng_state_all(device_type) if seed_accelerator else None - ) + accel_states = get_rng_state_all(device_type) if seed_accelerator else None seed = int(seed) % (2**32) random.seed(seed) np.random.seed(seed) @@ -2437,6 +2444,14 @@ def forward(self, pair_grid: Tensor, visibility: Tensor | None = None) -> Tensor visibility = pair_grid.new_ones(pair_grid.shape[:-1]) if self._use_kernels: + if pair_grid.device.type != "cuda": + # cuequivariance is CUDA-only. Raise here instead of letting + # the broad except below swallow a device mismatch as a + # "kernel failed" warning and silently fall back. + raise RuntimeError( + f"backend={BACKEND_CUEQ!r} is CUDA-only, got device " + f"{pair_grid.device.type!r}" + ) p_in_weight, g_in_weight = self.split_kernel_weights() try: @@ -2726,7 +2741,11 @@ def forward( len(self.blocks) > 0 and getattr(self.blocks[0], "_kernel_backend", None) == BACKEND_FUSED ) - if pair.device.type in _TRITON_DEVICE_TYPES and fused_on and orig_dtype != torch.bfloat16: + if ( + pair.device.type in _TRITON_DEVICE_TYPES + and fused_on + and orig_dtype != torch.bfloat16 + ): pair = pair.to(torch.bfloat16) for block in self.blocks: fn = partial(block, pair_attention_mask=pair_attention_mask) diff --git a/esm/models/esmfold2/model.py b/esm/models/esmfold2/model.py index c20bceca..f6d1daa4 100644 --- a/esm/models/esmfold2/model.py +++ b/esm/models/esmfold2/model.py @@ -226,7 +226,9 @@ def forward( # each block's fused trimul engages. In-place residual avoids an # extra fp32 pair allocation. with torch.amp.autocast( - pair.device.type, enabled=supports_amp_autocast(pair.device.type), dtype=torch.bfloat16 + pair.device.type, + enabled=supports_amp_autocast(pair.device.type), + dtype=torch.bfloat16, ): pair_delta = self.folding_trunk(pair, pair_attention_mask=pair_mask) pair.add_(pair_delta.float()) diff --git a/esm/utils/device.py b/esm/utils/device.py index 8e13ed2a..0adc0a5a 100644 --- a/esm/utils/device.py +++ b/esm/utils/device.py @@ -16,7 +16,16 @@ def resolve_default_device() -> torch.device: """Best available accelerator, else CPU.""" if torch.accelerator.is_available(): - return torch.accelerator.current_accelerator() + device = torch.accelerator.current_accelerator() + if device is None: + # is_available() said yes, current_accelerator() said no -- that's + # a torch bug or a broken install, not a case to silently fall + # back to CPU on. + raise RuntimeError( + "torch.accelerator.is_available() is True but " + "current_accelerator() returned None" + ) + return device return torch.device("cpu") diff --git a/pyproject.toml b/pyproject.toml index b8a42ff6..b740d934 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -71,7 +71,7 @@ addopts = """ --cov=esm --cov-report term-missing:skip-covered -n auto - -m 'not gpu and not manual and not merge_only' + -m 'not gpu and not xpu and not manual and not merge_only' --ignore=tests/oss_pytests/test_oss_client.py """ markers = [ diff --git a/tests/models/esm3_test.py b/tests/models/esm3_test.py new file mode 100644 index 00000000..6b3d9219 --- /dev/null +++ b/tests/models/esm3_test.py @@ -0,0 +1,55 @@ +"""Synthetic ESM3 XPU tests: small random-init model, no real checkpoint. + +Mirrors tests/oss_pytests/test_output_attentions.py's make_esm3() pattern, +checking that ESM3's forward pass dispatches correctly on XPU and agrees +with the CPU reference. +""" + +from unittest.mock import MagicMock + +import pytest +import torch + +from esm.models.esm3 import ESM3, ESMOutput +from esm.utils.constants import esm3 as C + +B, L = 2, 10 +D_MODEL = 32 +N_HEADS = 4 +N_LAYERS = 2 + + +def make_esm3() -> ESM3: + tokenizers = MagicMock() + tokenizers.sequence.mask_token_id = 32 + + return ESM3( + d_model=D_MODEL, + n_heads=N_HEADS, + v_heads=4, + n_layers=N_LAYERS, + structure_encoder_fn=MagicMock(), + structure_decoder_fn=MagicMock(), + function_decoder_fn=MagicMock(), + tokenizers=tokenizers, + ) + + +@pytest.mark.xpu +def test_cpu_and_xpu_agree(): + """Same weights, same input, both devices, fp32 on each side.""" + torch.manual_seed(0) + model = make_esm3().eval() + sequence_tokens = torch.full((B, L), C.SEQUENCE_MASK_TOKEN, dtype=torch.long) + sequence_tokens[:, 0] = C.SEQUENCE_BOS_TOKEN + sequence_tokens[:, -1] = C.SEQUENCE_EOS_TOKEN + + with torch.no_grad(): + expected: ESMOutput = model(sequence_tokens=sequence_tokens) + + model_xpu = model.to("xpu") + actual: ESMOutput = model_xpu(sequence_tokens=sequence_tokens.to("xpu")) + + torch.testing.assert_close( + actual.sequence_logits.cpu(), expected.sequence_logits, atol=1e-5, rtol=1e-5 + ) diff --git a/tests/models/esmc_test.py b/tests/models/esmc_test.py index 629bae16..6ccac1e9 100644 --- a/tests/models/esmc_test.py +++ b/tests/models/esmc_test.py @@ -1413,6 +1413,24 @@ def unexpected_kernel(): assert torch.equal(actual_k, expected_k) +@pytest.mark.xpu +def test_xpu_rotary_falls_back_when_triton_is_missing(monkeypatch): + """Triton is an optional dependency (the ``fused`` extra). Without it, + fp32 XPU inference should use the reference path, not crash.""" + monkeypatch.setattr(layers_module, "_get_xpu_rotary_kernel", lambda: None) + rotary = EsmcRotaryEmbedding(dim=16).to("xpu").eval() + q = torch.randn((2, 13, 3, 16), device="xpu", dtype=torch.float32) + k = torch.randn_like(q) + + with torch.inference_mode(): + actual_q, actual_k = rotary(q, k) + assert rotary._cos_cached is not None and rotary._sin_cached is not None + expected_q = apply_rotary_emb_torch(q, rotary._cos_cached, rotary._sin_cached) + expected_k = apply_rotary_emb_torch(k, rotary._cos_cached, rotary._sin_cached) + torch.testing.assert_close(actual_q, expected_q, atol=1e-6, rtol=1e-6) + torch.testing.assert_close(actual_k, expected_k, atol=1e-6, rtol=1e-6) + + # Every build reachable on a GPU: dtype x attention backend x fused/reference # layers. flash_attention_2 is only paired with fp16 / bf16 because the kernel # rejects fp32, and only with the fused layers because a CPU-built model never diff --git a/tests/models/esmfold2_builds_test.py b/tests/models/esmfold2_builds_test.py index 4c50b314..76d22ac6 100644 --- a/tests/models/esmfold2_builds_test.py +++ b/tests/models/esmfold2_builds_test.py @@ -302,6 +302,33 @@ def test_set_kernel_backend_reaches_every_module( assert after == expected, f"appeared unconfigured: {sorted(after - expected)}" +def test_cuequivariance_pair_bias_rejects_non_cuda_device(monkeypatch): + """cuequivariance is CUDA-only; a host that merely *has* CUDA elsewhere + (e.g. a CPU/XPU tensor on a CUDA+XPU machine) must not silently run the + reference path or crash inside the cueq library - it should refuse + clearly, because the user explicitly asked for this backend. + """ + monkeypatch.setattr(_layers, "CUE_AVAILABLE", True) + attn = _layers.AttentionPairBias( + d_model=8, d_pair=4, num_heads=2, use_conditioning=False + ) + attn.set_kernel_backend("cuequivariance") + a = torch.randn(1, 751, 8) + z = torch.randn(1, 751, 751, 4) + with pytest.raises(RuntimeError, match="cuequivariance.*CUDA-only"): + attn(a, None, z) + + +def test_cuequivariance_tri_mul_rejects_non_cuda_device(monkeypatch): + """Same refusal for the triangle-multiplicative cueq path.""" + monkeypatch.setattr(_layers, "CUE_AVAILABLE", True) + tri_mul = _layers.TriangleMultiplicativeUpdate(dim=4) + tri_mul.set_kernel_backend("cuequivariance") + pair = torch.randn(1, 3, 3, 4) + with pytest.raises(RuntimeError, match="cuequivariance.*CUDA-only"): + tri_mul(pair) + + #: Also found by this test: ``EsmFold2ExperimentalModel.set_chunk_size`` fans #: out to ``folding_trunk`` and ``confidence_head`` only, so an enabled #: ``msa_encoder`` keeps its construction-time chunk size. The release model @@ -704,12 +731,7 @@ def test_every_gpu_build_reaches_the_cpu_reference( # XPU has no flash-attn and no cuequivariance build, so the matrix is just # backend x chunk size. Measured deltas were the same order as GPU_BUILDS # (9.4e-3 to 9.6e-3 vs 9.96e-3 to 1.01e-2), so it reuses GPU_TOLERANCE. -XPU_BUILDS = [ - (None, None), - (None, 64), - ("fused", None), - ("fused", 64), -] +XPU_BUILDS = [(None, None), (None, 64), ("fused", None), ("fused", 64)] @pytest.mark.xpu @@ -755,4 +777,3 @@ def test_torch_compile_refuses_to_stack_with_the_fused_backend(tiny_esmfold2_con # to be enough to get past the guard. model.set_kernel_backend(None) model.apply_torch_compile(mode="fixed_seqlen") - From f9669b491496d48ebfcee57f1704e46d3c67ff85 Mon Sep 17 00:00:00 2001 From: rajeshgangireddy Date: Wed, 7 Oct 2026 16:27:04 +0200 Subject: [PATCH 12/15] fixes for a few improvements --- esm/models/esm3.py | 4 +- esm/models/esmc/layers.py | 4 +- esm/models/esmfold2/experimental.py | 2 +- esm/models/esmfold2/layers.py | 17 +++---- esm/models/esmfold2/model.py | 6 ++- esm/models/esmfold2/processor.py | 27 ++++++---- tests/models/esm3_test.py | 14 +++++ tests/models/esmc_test.py | 24 +++++++++ tests/models/esmfold2_builds_test.py | 76 ++++++++++++++++++++++++++-- 9 files changed, 145 insertions(+), 29 deletions(-) diff --git a/esm/models/esm3.py b/esm/models/esm3.py index 079e5a1b..fa949180 100644 --- a/esm/models/esm3.py +++ b/esm/models/esm3.py @@ -227,7 +227,7 @@ def __init__( @classmethod def from_pretrained( - cls, model_name: str = ESM3_OPEN_SMALL, device: torch.device | None = None + cls, model_name: str = ESM3_OPEN_SMALL, device: torch.device | str | None = None ) -> ESM3: from esm.pretrained import load_local_model @@ -236,6 +236,8 @@ def from_pretrained( raise ValueError(f"Model name {model_name} is not a valid ESM3 model name.") if device is None: device = resolve_default_device() + else: + device = torch.device(device) model = load_local_model(model_name, device=device) if device.type != "cpu": model = model.to(torch.bfloat16) diff --git a/esm/models/esmc/layers.py b/esm/models/esmc/layers.py index 9a2d7f39..08edd114 100644 --- a/esm/models/esmc/layers.py +++ b/esm/models/esmc/layers.py @@ -37,7 +37,9 @@ def _get_xpu_rotary_kernel(): """ try: from esm.models.esmc.xpu_rotary import apply_rotary_emb_xpu - except ImportError: + except ModuleNotFoundError as exc: + if exc.name != "triton": + raise return None return apply_rotary_emb_xpu diff --git a/esm/models/esmfold2/experimental.py b/esm/models/esmfold2/experimental.py index 91ee0980..31b176f3 100644 --- a/esm/models/esmfold2/experimental.py +++ b/esm/models/esmfold2/experimental.py @@ -1138,7 +1138,7 @@ def forward( ) # 7. Diffusion sampling (always no_grad; optional seed for parity) - with torch.no_grad(), _seed_context(seed): + with torch.no_grad(), _seed_context(seed, device_type=ref_pos.device.type): structure_output = self.structure_head.sample( z_trunk=z.float(), s_inputs=x_inputs, diff --git a/esm/models/esmfold2/layers.py b/esm/models/esmfold2/layers.py index 65868fbc..d787d14c 100644 --- a/esm/models/esmfold2/layers.py +++ b/esm/models/esmfold2/layers.py @@ -78,7 +78,6 @@ from esm.utils.device import ( get_rng_state_all, manual_seed_all, - resolve_default_device, set_rng_state_all, supports_amp_autocast, ) @@ -1094,6 +1093,10 @@ def _can_use_fused_pair_bias( def _can_use_cueq_pair_bias( self, z: Tensor, n_queries: int, beta: Tensor | float ) -> bool: + if self._kernel_backend == BACKEND_CUEQ and z.device.type != "cuda": + raise RuntimeError( + f"backend={BACKEND_CUEQ!r} is CUDA-only, got device {z.device.type!r}" + ) if not ( _cueq_active(self) and n_queries > 750 @@ -1102,13 +1105,6 @@ def _can_use_cueq_pair_bias( and hasattr(self, "pair_bias_proj") ): return False - if z.device.type != "cuda": - # cuequivariance is CUDA-only. Raise instead of silently falling - # back to the reference path -- the user explicitly asked for - # this backend. - raise RuntimeError( - f"backend={BACKEND_CUEQ!r} is CUDA-only, got device {z.device.type!r}" - ) return True def forward( @@ -2212,12 +2208,11 @@ def forward(self, hidden_states: Tensor, *, lm_dropout: float = 0.0) -> Tensor: @contextmanager -def _seed_context(seed: int | None, *, seed_accelerator: bool = True): +def _seed_context(seed: int | None, *, device_type: str, seed_accelerator: bool = True): """Temporarily seed Python, NumPy, and PyTorch RNGs.""" if seed is None: yield return - device_type = resolve_default_device().type py_state = random.getstate() np_state = np.random.get_state() torch_state = torch.get_rng_state() @@ -2225,7 +2220,7 @@ def _seed_context(seed: int | None, *, seed_accelerator: bool = True): seed = int(seed) % (2**32) random.seed(seed) np.random.seed(seed) - torch.manual_seed(seed) + torch.random.default_generator.manual_seed(seed) if seed_accelerator: manual_seed_all(device_type, seed) try: diff --git a/esm/models/esmfold2/model.py b/esm/models/esmfold2/model.py index f6d1daa4..c2bb10fb 100644 --- a/esm/models/esmfold2/model.py +++ b/esm/models/esmfold2/model.py @@ -529,7 +529,11 @@ def _lm_precision_context(fp8: bool, device_type: str): te.autocast keeps te.Linear outputs bf16 instead of the fp32 default (~425 MB at L=1024 in the hidden-state cache). """ - with torch.autocast(device_type=device_type, dtype=torch.bfloat16): + with torch.autocast( + device_type=device_type, + dtype=torch.bfloat16, + enabled=supports_amp_autocast(device_type), + ): if fp8 and TE_AVAILABLE: fp8_recipe = DelayedScaling( fp8_format=Format.HYBRID, diff --git a/esm/models/esmfold2/processor.py b/esm/models/esmfold2/processor.py index a5a446e9..c5e18dc1 100644 --- a/esm/models/esmfold2/processor.py +++ b/esm/models/esmfold2/processor.py @@ -16,28 +16,22 @@ ProteinInput, StructurePredictionInput, ) -from esm.utils.device import ( - get_rng_state_all, - manual_seed_all, - resolve_default_device, - set_rng_state_all, -) +from esm.utils.device import get_rng_state_all, manual_seed_all, set_rng_state_all from esm.utils.structure.molecular_complex import MolecularComplexResult @contextmanager -def _seed_context(seed: int | None): +def _seed_context(seed: int | None, *, device_type: str): if seed is None: yield return - device_type = resolve_default_device().type py_state = random.getstate() np_state = np.random.get_state() torch_state = torch.random.get_rng_state() accel_state = get_rng_state_all(device_type) random.seed(seed) np.random.seed(seed) - torch.manual_seed(seed) + torch.random.default_generator.manual_seed(seed) manual_seed_all(device_type, seed) try: yield @@ -220,7 +214,14 @@ def prepare_input( Batched input tensors and chain metadata for output processing. """ structure_prediction_input = clean_esmfold2_input(input) - with _seed_context(seed) if seed is not None else nullcontext(): + with ( + _seed_context( + seed, + device_type=torch.device(device).type if device is not None else "cpu", + ) + if seed is not None + else nullcontext() + ): features, chain_infos = prepare_esmfold2_input( structure_prediction_input, seed=seed ) @@ -430,7 +431,11 @@ def fold( sampler_kwargs["lm_mask_pct"] = lm_mask_pct with torch.no_grad(): - with _seed_context(seed) if seed is not None else nullcontext(): + with ( + _seed_context(seed, device_type=model.device.type) + if seed is not None + else nullcontext() + ): with _lm_dropout_context(model, lm_dropout): output = model( **features, diff --git a/tests/models/esm3_test.py b/tests/models/esm3_test.py index 6b3d9219..86dae7c6 100644 --- a/tests/models/esm3_test.py +++ b/tests/models/esm3_test.py @@ -10,6 +10,7 @@ import pytest import torch +from esm import pretrained from esm.models.esm3 import ESM3, ESMOutput from esm.utils.constants import esm3 as C @@ -35,6 +36,19 @@ def make_esm3() -> ESM3: ) +def test_from_pretrained_accepts_xpu_device_string(monkeypatch): + model = make_esm3() + loaded_devices: list[torch.device] = [] + + def load_local_model(model_name: str, device: torch.device) -> ESM3: + loaded_devices.append(device) + return model + + monkeypatch.setattr(pretrained, "load_local_model", load_local_model) + assert ESM3.from_pretrained(device="xpu") is model + assert loaded_devices == [torch.device("xpu")] + + @pytest.mark.xpu def test_cpu_and_xpu_agree(): """Same weights, same input, both devices, fp32 on each side.""" diff --git a/tests/models/esmc_test.py b/tests/models/esmc_test.py index 6ccac1e9..415b32c8 100644 --- a/tests/models/esmc_test.py +++ b/tests/models/esmc_test.py @@ -5,6 +5,7 @@ tests are marked ``gpu``, XPU tests ``xpu``. """ +import builtins import functools import gzip import json @@ -1431,6 +1432,29 @@ def test_xpu_rotary_falls_back_when_triton_is_missing(monkeypatch): torch.testing.assert_close(actual_k, expected_k, atol=1e-6, rtol=1e-6) +@pytest.mark.parametrize("missing_module", ["triton", "triton.language"]) +def test_xpu_rotary_import_only_ignores_missing_triton(monkeypatch, missing_module): + original_import = builtins.__import__ + + def failing_import(name, *args, **kwargs): + if name == "esm.models.esmc.xpu_rotary": + raise ModuleNotFoundError( + f"No module named {missing_module!r}", name=missing_module + ) + return original_import(name, *args, **kwargs) + + monkeypatch.setattr(builtins, "__import__", failing_import) + layers_module._get_xpu_rotary_kernel.cache_clear() + try: + if missing_module == "triton": + assert layers_module._get_xpu_rotary_kernel() is None + else: + with pytest.raises(ModuleNotFoundError, match="triton.language"): + layers_module._get_xpu_rotary_kernel() + finally: + layers_module._get_xpu_rotary_kernel.cache_clear() + + # Every build reachable on a GPU: dtype x attention backend x fused/reference # layers. flash_attention_2 is only paired with fp16 / bf16 because the kernel # rejects fp32, and only with the fused layers because a CPU-built model never diff --git a/tests/models/esmfold2_builds_test.py b/tests/models/esmfold2_builds_test.py index 76d22ac6..f7d50cec 100644 --- a/tests/models/esmfold2_builds_test.py +++ b/tests/models/esmfold2_builds_test.py @@ -41,6 +41,8 @@ from esm.models.esmfold2 import EsmFold2Config, EsmFold2ExperimentalModel, EsmFold2Model from esm.models.esmfold2 import layers as _layers +from esm.models.esmfold2 import model as _model +from esm.models.esmfold2 import processor as _processor from tests.conftest import ESMFOLD2_LENGTHS, ESMFOLD2_SEQUENCES, esmfold2_inputs #: Chunk sizes the matrix sweeps. ``None`` disables chunking entirely. @@ -302,7 +304,8 @@ def test_set_kernel_backend_reaches_every_module( assert after == expected, f"appeared unconfigured: {sorted(after - expected)}" -def test_cuequivariance_pair_bias_rejects_non_cuda_device(monkeypatch): +@pytest.mark.parametrize("n_queries", [3, 751]) +def test_cuequivariance_pair_bias_rejects_non_cuda_device(monkeypatch, n_queries): """cuequivariance is CUDA-only; a host that merely *has* CUDA elsewhere (e.g. a CPU/XPU tensor on a CUDA+XPU machine) must not silently run the reference path or crash inside the cueq library - it should refuse @@ -313,8 +316,8 @@ def test_cuequivariance_pair_bias_rejects_non_cuda_device(monkeypatch): d_model=8, d_pair=4, num_heads=2, use_conditioning=False ) attn.set_kernel_backend("cuequivariance") - a = torch.randn(1, 751, 8) - z = torch.randn(1, 751, 751, 4) + a = torch.randn(1, n_queries, 8) + z = torch.randn(1, n_queries, n_queries, 4) with pytest.raises(RuntimeError, match="cuequivariance.*CUDA-only"): attn(a, None, z) @@ -329,6 +332,73 @@ def test_cuequivariance_tri_mul_rejects_non_cuda_device(monkeypatch): tri_mul(pair) +def test_cpu_lm_precision_context_does_not_autocast(): + with _model._lm_precision_context(fp8=False, device_type="cpu"): + assert not torch.is_autocast_enabled("cpu") + + +@pytest.mark.parametrize("module", [_layers, _processor]) +def test_seed_context_restores_only_requested_accelerator(monkeypatch, module): + calls: list[tuple[str, str]] = [] + state = [torch.tensor([42], dtype=torch.uint8)] + monkeypatch.setattr( + module, "get_rng_state_all", lambda kind: calls.append(("get", kind)) or state + ) + monkeypatch.setattr( + module, "manual_seed_all", lambda kind, seed: calls.append(("seed", kind)) + ) + monkeypatch.setattr( + module, "set_rng_state_all", lambda kind, states: calls.append(("set", kind)) + ) + monkeypatch.setattr( + torch, + "manual_seed", + lambda seed: pytest.fail("torch.manual_seed seeds every accelerator"), + ) + cpu_state = torch.get_rng_state() + with module._seed_context(123, device_type="xpu"): + torch.rand(1) + assert torch.equal(torch.get_rng_state(), cpu_state) + assert calls == [("get", "xpu"), ("seed", "xpu"), ("set", "xpu")] + + +def test_input_builder_seeds_requested_device(monkeypatch): + builder = object.__new__(_processor.ESMFold2InputBuilder) + monkeypatch.setattr(_processor, "clean_esmfold2_input", lambda input: input) + monkeypatch.setattr( + _processor, "prepare_esmfold2_input", lambda input, seed: ({}, []) + ) + requested: list[tuple[int, str]] = [] + + @contextlib.contextmanager + def record_seed_context(seed, *, device_type): + requested.append((seed, device_type)) + yield + + monkeypatch.setattr(_processor, "_seed_context", record_seed_context) + assert builder.prepare_input(input=None, seed=123, device="xpu") == ({}, []) + assert requested == [(123, "xpu")] + + +@pytest.mark.xpu +@pytest.mark.parametrize("module", [_layers, _processor]) +def test_seed_context_restores_xpu_rng(module): + before = torch.xpu.get_rng_state_all() + try: + with module._seed_context(123, device_type="xpu"): + first = torch.rand(3, device="xpu") + with module._seed_context(123, device_type="xpu"): + assert torch.equal(torch.rand(3, device="xpu"), first) + assert all( + torch.equal(saved, current) + for saved, current in zip( + before, torch.xpu.get_rng_state_all(), strict=True + ) + ) + finally: + torch.xpu.set_rng_state_all(before) + + #: Also found by this test: ``EsmFold2ExperimentalModel.set_chunk_size`` fans #: out to ``folding_trunk`` and ``confidence_head`` only, so an enabled #: ``msa_encoder`` keeps its construction-time chunk size. The release model From cda13ce3ee8c217fc609ce2082d7ca356304eaaf Mon Sep 17 00:00:00 2001 From: rajeshgangireddy Date: Wed, 7 Oct 2026 17:11:17 +0200 Subject: [PATCH 13/15] feat: add XPU compatibility checks for cuequivariance backend --- esm/models/esmfold2/layers.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/esm/models/esmfold2/layers.py b/esm/models/esmfold2/layers.py index d787d14c..5d42e40c 100644 --- a/esm/models/esmfold2/layers.py +++ b/esm/models/esmfold2/layers.py @@ -2508,11 +2508,17 @@ def __init__(self, dim: int = 128, _outgoing: bool = True) -> None: def set_kernel_backend(self, backend: str | None) -> None: # Engine uses cueq when backend=="cuequivariance"; the "fused" backend # routes through the parent PairUpdateBlock's fused path (bypassing this). + if backend == BACKEND_CUEQ: + device_type = self._engine.proj_bundle.weight.device.type + if device_type == "xpu": + raise RuntimeError( + f"backend={BACKEND_CUEQ!r} is CUDA-only, got device {device_type!r}" + ) + if not CUE_AVAILABLE: + raise RuntimeError( + "backend='cuequivariance' but cuequivariance_torch is not installed." + ) self._engine._use_kernels = backend == BACKEND_CUEQ - if backend == BACKEND_CUEQ and not CUE_AVAILABLE: - raise RuntimeError( - "backend='cuequivariance' but cuequivariance_torch is not installed." - ) def set_chunk_size(self, chunk_size: int | None) -> None: self._engine.set_chunk_size(chunk_size) From 385b648c3c8f257f18672e273e911a6a28efc9d0 Mon Sep 17 00:00:00 2001 From: rajeshgangireddy Date: Wed, 7 Oct 2026 22:58:04 +0200 Subject: [PATCH 14/15] feat: add XPU support for cuequivariance selection with error handling --- tests/models/esmfold2_builds_test.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/models/esmfold2_builds_test.py b/tests/models/esmfold2_builds_test.py index f7d50cec..91967083 100644 --- a/tests/models/esmfold2_builds_test.py +++ b/tests/models/esmfold2_builds_test.py @@ -332,6 +332,23 @@ def test_cuequivariance_tri_mul_rejects_non_cuda_device(monkeypatch): tri_mul(pair) +@pytest.mark.xpu +@pytest.mark.parametrize("cue_available", [False, True]) +def test_rejected_cuequivariance_selection_keeps_xpu_reference_usable( + monkeypatch, cue_available +): + monkeypatch.setattr(_layers, "CUE_AVAILABLE", cue_available) + tri_mul = _layers.TriangleMultiplicativeUpdate(dim=4).to("xpu") + pair = torch.randn(1, 3, 3, 4, device="xpu") + previous_backend = tri_mul._engine._use_kernels + + with pytest.raises(RuntimeError, match="cuequivariance.*CUDA-only"): + tri_mul.set_kernel_backend("cuequivariance") + + assert tri_mul._engine._use_kernels is previous_backend + assert torch.isfinite(tri_mul(pair)).all() + + def test_cpu_lm_precision_context_does_not_autocast(): with _model._lm_precision_context(fp8=False, device_type="cpu"): assert not torch.is_autocast_enabled("cpu") From dbd779727c5403b9c1cf7126af632785b336ab1b Mon Sep 17 00:00:00 2001 From: rajeshgangireddy Date: Thu, 8 Oct 2026 17:19:47 +0200 Subject: [PATCH 15/15] fix: update README and code comments for clarity on Intel GPU (XPU) usage --- README.md | 2 +- esm/models/esmfold2/layers.py | 8 +++++--- esm/models/esmfold2/processor.py | 6 +++--- esm/utils/device.py | 19 ++----------------- esm/utils/misc.py | 2 +- pyproject.toml | 2 +- 6 files changed, 13 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index de5d2c4d..74797acc 100644 --- a/README.md +++ b/README.md @@ -268,7 +268,7 @@ with open("1mht_pred.cif", "w") as f: > **AMD ROCm users:** use ROCm 6.4 with PyTorch 2.9 or newer. -> **Intel XPU users:** pass `device="xpu"` instead of `"cuda"`. `pixi run -e xpu ...` +> **Intel GPU (XPU) users:** pass `device="xpu"` instead of `"cuda"`. `pixi run -e xpu ...` > gives a working environment. The vendored Triton kernels run on XPU; libraries > with no XPU build (Transformer Engine, cuequivariance, flash-attn) fall back to > the reference PyTorch path automatically. diff --git a/esm/models/esmfold2/layers.py b/esm/models/esmfold2/layers.py index 5d42e40c..4d7038f6 100644 --- a/esm/models/esmfold2/layers.py +++ b/esm/models/esmfold2/layers.py @@ -2216,7 +2216,9 @@ def _seed_context(seed: int | None, *, device_type: str, seed_accelerator: bool py_state = random.getstate() np_state = np.random.get_state() torch_state = torch.get_rng_state() - accel_states = get_rng_state_all(device_type) if seed_accelerator else None + accelerator_states = ( + get_rng_state_all(device_type) if seed_accelerator else None + ) seed = int(seed) % (2**32) random.seed(seed) np.random.seed(seed) @@ -2229,8 +2231,8 @@ def _seed_context(seed: int | None, *, device_type: str, seed_accelerator: bool random.setstate(py_state) np.random.set_state(np_state) torch.set_rng_state(torch_state) - if accel_states is not None: - set_rng_state_all(device_type, accel_states) + if accelerator_states is not None: + set_rng_state_all(device_type, accelerator_states) # =========================================================================== diff --git a/esm/models/esmfold2/processor.py b/esm/models/esmfold2/processor.py index c5e18dc1..965e7b43 100644 --- a/esm/models/esmfold2/processor.py +++ b/esm/models/esmfold2/processor.py @@ -28,7 +28,7 @@ def _seed_context(seed: int | None, *, device_type: str): py_state = random.getstate() np_state = np.random.get_state() torch_state = torch.random.get_rng_state() - accel_state = get_rng_state_all(device_type) + accelerator_states = get_rng_state_all(device_type) random.seed(seed) np.random.seed(seed) torch.random.default_generator.manual_seed(seed) @@ -39,8 +39,8 @@ def _seed_context(seed: int | None, *, device_type: str): random.setstate(py_state) np.random.set_state(np_state) torch.random.set_rng_state(torch_state) - if accel_state is not None: - set_rng_state_all(device_type, accel_state) + if accelerator_states is not None: + set_rng_state_all(device_type, accelerator_states) @contextmanager diff --git a/esm/utils/device.py b/esm/utils/device.py index 0adc0a5a..e5da3490 100644 --- a/esm/utils/device.py +++ b/esm/utils/device.py @@ -1,10 +1,4 @@ -"""Device dispatch helpers, so cuda/xpu/cpu are handled the same way. - -Keep this separate from "is a CUDA-only library available" (flash-attn, -xformers, transformer_engine, cuequivariance) -- that's a different question -and stays gated on `torch.cuda.is_available()` directly, wherever it's -checked. -""" +"""Device dispatch helpers for CUDA, XPU, and CPU.""" from __future__ import annotations @@ -23,21 +17,12 @@ def resolve_default_device() -> torch.device: # back to CPU on. raise RuntimeError( "torch.accelerator.is_available() is True but " - "current_accelerator() returned None" + "current_accelerator() returned None." ) return device return torch.device("cpu") -def autocast_device_type(x: torch.Tensor | torch.device | torch.nn.Module) -> str: - """device_type string for torch.autocast, from a tensor/device/module.""" - if isinstance(x, torch.device): - return x.type - if isinstance(x, torch.nn.Module): - return next(x.parameters()).device.type - return x.device.type - - def supports_amp_autocast(device_type: str) -> bool: """Whether device_type supports bf16/fp16 autocast (cuda, xpu do; mps/cpu don't the same way).""" return device_type in _ACCELERATED_AUTOCAST_TYPES diff --git a/esm/utils/misc.py b/esm/utils/misc.py index 008fea8b..e0c3cafe 100644 --- a/esm/utils/misc.py +++ b/esm/utils/misc.py @@ -278,7 +278,7 @@ def fp32_autocast_context(device_type: str) -> ContextManager[Any]: if device_type == "cpu": return torch.amp.autocast(device_type, enabled=False) elif device_type == "mps": - # MPS doesn't support autocast, so just no-op. + # For MPS, just return a no-op context manager (nullcontext) since MPS does not support autocast. return nullcontext() elif device_type in ("cuda", "xpu"): return torch.amp.autocast(device_type, dtype=torch.float32) diff --git a/pyproject.toml b/pyproject.toml index b740d934..ccc1a001 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -76,7 +76,7 @@ addopts = """ """ markers = [ "gpu: requires a CUDA device; run in the monorepo's gpu-ci", - "xpu: requires an Intel XPU device; run manually on xpu hardware", + "xpu: requires an Intel GPU (XPU) device; run manually on XPU hardware", "manual: too heavy for a hosted runner; run in the monorepo's research-ci", "merge_only: needs a real published checkpoint; run in the monorepo's research-ci", ]