diff --git a/build_artifacts/v2/v2.7/v2.7.0/CHANGELOG-cpu.md b/build_artifacts/v2/v2.7/v2.7.0/CHANGELOG-cpu.md new file mode 100644 index 00000000..ec5969a0 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/CHANGELOG-cpu.md @@ -0,0 +1,18 @@ +# Change log: 2.7.0(cpu) + +## Upgrades: + +Package | Previous Version | Current Version +---|---|--- +boto3|1.37.1|1.37.3 +ipython|8.35.0|8.36.0 +jupyterlab|4.4.1|4.4.2 +langchain|0.3.24|0.3.25 +scikit-learn|1.5.2|1.6.1 +autogluon|1.2.0|1.3.0 +ipywidgets|8.1.6|8.1.7 +notebook|7.4.1|7.4.2 +keras|3.9.0|3.9.2 +mlflow|2.21.3|2.22.0 +sagemaker-python-sdk|2.243.2|2.244.0 +sagemaker-studio-analytics-extension|0.1.6|0.1.7 diff --git a/build_artifacts/v2/v2.7/v2.7.0/CHANGELOG-gpu.md b/build_artifacts/v2/v2.7/v2.7.0/CHANGELOG-gpu.md new file mode 100644 index 00000000..4cbe7b6a --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/CHANGELOG-gpu.md @@ -0,0 +1,22 @@ +# Change log: 2.7.0(gpu) + +## Upgrades: + +Package | Previous Version | Current Version +---|---|--- +pytorch|2.4.1|2.6.0 +boto3|1.37.1|1.37.3 +ipython|8.35.0|8.36.0 +jupyterlab|4.4.1|4.4.2 +langchain|0.3.24|0.3.25 +scikit-learn|1.5.2|1.6.1 +torchvision|0.19.1|0.21.0 +autogluon|1.2.0|1.3.0 +ipywidgets|8.1.6|8.1.7 +notebook|7.4.1|7.4.2 +keras|3.9.0|3.9.2 +mlflow|2.21.3|2.22.0 +sagemaker-python-sdk|2.243.2|2.244.0 +sagemaker-studio-analytics-extension|0.1.6|0.1.7 +tensorflow|2.17.0|2.18.0 +tf-keras|2.17.0|2.18.0 diff --git a/build_artifacts/v2/v2.7/v2.7.0/Dockerfile b/build_artifacts/v2/v2.7/v2.7.0/Dockerfile new file mode 100644 index 00000000..c04dde06 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/Dockerfile @@ -0,0 +1,216 @@ +ARG TAG_FOR_BASE_MICROMAMBA_IMAGE +FROM mambaorg/micromamba:$TAG_FOR_BASE_MICROMAMBA_IMAGE + +ARG CUDA_MAJOR_MINOR_VERSION='' +ARG ENV_IN_FILENAME +ARG PINNED_ENV_IN_FILENAME +ARG ARG_BASED_ENV_IN_FILENAME +ARG IMAGE_VERSION +LABEL "org.amazon.sagemaker-distribution.image.version"=$IMAGE_VERSION + +ARG AMZN_BASE="/opt/amazon/sagemaker" +ARG DB_ROOT_DIR="/opt/db" +ARG DIRECTORY_TREE_STAGE_DIR="${AMZN_BASE}/dir-staging" + +ARG NB_USER="sagemaker-user" +ARG NB_UID=1000 +ARG NB_GID=100 + +# https://www.openssl.org/source/ +ARG FIPS_VALIDATED_SSL=3.0.8 +ARG MIN_REQUIRED_MICROMAMBA_VERSION=1.5.11 + +ENV SAGEMAKER_LOGGING_DIR="/var/log/sagemaker/" +ENV STUDIO_LOGGING_DIR="/var/log/studio/" +ENV EDITOR="nano" +ENV IMAGE_VERSION=$IMAGE_VERSION +ENV PINNED_MICROMAMBA_MINOR_VERSION="1.5.*" +ENV SAGEMAKER_RECOVERY_MODE_HOME=/tmp/sagemaker-recovery-mode-home + +USER root +# Upgrade micromamba to the latest patch version in the pinned minor version range, if applicable +RUN CURRENT_MICROMAMBA_VERSION=$(micromamba --version) && \ + echo "Current micromamba version: $CURRENT_MICROMAMBA_VERSION" && \ + if [[ "$CURRENT_MICROMAMBA_VERSION" == $PINNED_MICROMAMBA_MINOR_VERSION ]]; then \ + echo "Upgrading micromamba to the latest $PINNED_MICROMAMBA_MINOR_VERSION version..." && \ + micromamba self-update -c conda-forge --version "$MIN_REQUIRED_MICROMAMBA_VERSION" && \ + micromamba clean --all --yes --force-pkgs-dirs; \ + else \ + echo "Micromamba is already at version $CURRENT_MICROMAMBA_VERSION (outside $PINNED_MICROMAMBA_MINOR_VERSION). No upgrade performed."; \ + fi + +RUN usermod "--login=${NB_USER}" "--home=/home/${NB_USER}" --move-home "-u ${NB_UID}" "${MAMBA_USER}" && \ + groupmod "--new-name=${NB_USER}" --non-unique "-g ${NB_GID}" "${MAMBA_USER}" && \ + # Update the expected value of MAMBA_USER for the + # _entrypoint.sh consistency check. + echo "${NB_USER}" > "/etc/arg_mamba_user" && \ + : +ENV MAMBA_USER=$NB_USER +ENV USER=$NB_USER + +RUN apt-get update && apt-get upgrade -y && \ + apt-get install -y --no-install-recommends sudo gettext-base wget curl unzip git rsync build-essential openssh-client nano cron less mandoc jq ca-certificates gnupg && \ + # We just install tzdata below but leave default time zone as UTC. This helps packages like Pandas to function correctly. + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata krb5-user libkrb5-dev libsasl2-dev libsasl2-modules && \ + chmod g+w /etc/passwd && \ + echo "ALL ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \ + touch /etc/krb5.conf.lock && chown ${NB_USER}:${MAMBA_USER} /etc/krb5.conf* && \ + # Note that we do NOT run `rm -rf /var/lib/apt/lists/*` here. If we did, anyone building on top of our images will + # not be able to run any `apt-get install` commands and that would hamper customizability of the images. + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && \ + unzip awscliv2.zip && \ + sudo ./aws/install && \ + rm -rf aws awscliv2.zip && \ + : && \ + echo "source /usr/local/bin/_activate_current_env.sh" | tee --append /etc/profile && \ +# CodeEditor - create server, user data dirs + mkdir -p /opt/amazon/sagemaker/sagemaker-code-editor-server-data /opt/amazon/sagemaker/sagemaker-code-editor-user-data \ + && chown $MAMBA_USER:$MAMBA_USER /opt/amazon/sagemaker/sagemaker-code-editor-server-data /opt/amazon/sagemaker/sagemaker-code-editor-user-data && \ +# create dir to store user data files + mkdir -p /opt/amazon/sagemaker/user-data \ + && chown $MAMBA_USER:$MAMBA_USER /opt/amazon/sagemaker/user-data && \ +# Merge in OS directory tree contents. + mkdir -p ${DIRECTORY_TREE_STAGE_DIR} +COPY dirs/ ${DIRECTORY_TREE_STAGE_DIR}/ +RUN rsync -a ${DIRECTORY_TREE_STAGE_DIR}/ / && \ + rm -rf ${DIRECTORY_TREE_STAGE_DIR} && \ +# CodeEditor - download the extensions + mkdir -p /etc/code-editor/extensions && \ + while IFS= read -r url || [ -n "$url" ]; do \ + echo "Downloading extension from ${url}..." && \ + wget --no-check-certificate -P /etc/code-editor/extensions "${url}"; \ + done < /etc/code-editor/extensions.txt + +USER $MAMBA_USER +COPY --chown=$MAMBA_USER:$MAMBA_USER $ENV_IN_FILENAME *.in /tmp/ +COPY --chown=$MAMBA_USER:$MAMBA_USER $PINNED_ENV_IN_FILENAME *.in /tmp/ + +ARG MAMBA_DOCKERFILE_ACTIVATE=1 +ARG CONDA_OVERRIDE_CUDA=$CUDA_MAJOR_MINOR_VERSION + +# Make sure that $ENV_IN_FILENAME and $PINNED_ENV_IN_FILENAME has a newline at the end before the `tee` command runs. +# Otherwise, nasty things will happen. +RUN if [[ -z $ARG_BASED_ENV_IN_FILENAME ]] ; \ + then echo 'No ARG_BASED_ENV_IN_FILENAME passed' ; \ + else envsubst < /tmp/$ARG_BASED_ENV_IN_FILENAME | tee --append /tmp/$ENV_IN_FILENAME ; \ + fi && \ + # Enforce dependencies are all installed from conda-forge + micromamba install -y --name base --file /tmp/$ENV_IN_FILENAME --file /tmp/$PINNED_ENV_IN_FILENAME && \ + mkdir -p $SAGEMAKER_RECOVERY_MODE_HOME && \ + chown $MAMBA_USER:$MAMBA_USER $SAGEMAKER_RECOVERY_MODE_HOME && \ + SUPERVISOR_VERSION=$(grep "^conda-forge::supervisor\[" /tmp/$ENV_IN_FILENAME) && \ + JUPYTERLAB_VERSION=$(grep "^conda-forge::jupyterlab\[" /tmp/$ENV_IN_FILENAME) && \ + SAGEMAKER_JUPYTERLAB_VERSION=$(grep "^conda-forge::sagemaker-jupyterlab-extension" /tmp/$ENV_IN_FILENAME) && \ + echo "Installing in sagemaker-recovery-mode micromamba environment: $JUPYTERLAB_VERSION $SAGEMAKER_JUPYTERLAB_VERSION" && \ + micromamba create -n sagemaker-recovery-mode && \ + micromamba install -n sagemaker-recovery-mode -y $JUPYTERLAB_VERSION $SAGEMAKER_JUPYTERLAB_VERSION $SUPERVISOR_VERSION && \ + micromamba clean --all --yes --force-pkgs-dirs && \ + rm -rf /tmp/*.in && \ + sudo ln -s $(which python3) /usr/bin/python && \ + # Update npm version + npm i -g npm && \ + # Enforce to use `conda-forge` as only channel, by removing `defaults` + conda config --remove channels defaults && \ + micromamba config append channels conda-forge --env && \ + # Configure CodeEditor - Install extensions and set preferences + extensionloc=/opt/amazon/sagemaker/sagemaker-code-editor-server-data/extensions && mkdir -p "${extensionloc}" \ + # Loop through all vsix files in /etc/code-editor/extensions and install them + && for ext in /etc/code-editor/extensions/*.vsix; do \ + echo "Installing extension ${ext}..."; \ + sagemaker-code-editor --install-extension "${ext}" --extensions-dir "${extensionloc}" --server-data-dir /opt/amazon/sagemaker/sagemaker-code-editor-server-data --user-data-dir /opt/amazon/sagemaker/sagemaker-code-editor-user-data; \ + done \ + # Copy the settings + && cp /etc/code-editor/code_editor_machine_settings.json /opt/amazon/sagemaker/sagemaker-code-editor-server-data/data/Machine/settings.json && \ + cp /etc/code-editor/code_editor_user_settings.json /opt/amazon/sagemaker/sagemaker-code-editor-server-data/data/User/settings.json && \ + # Install glue kernels, and move to shared directory + # Also patching base kernel so Studio background code doesn't start session silently + install-glue-kernels && \ + SITE_PACKAGES=$(pip show aws-glue-sessions | grep Location | awk '{print $2}') && \ + jupyter-kernelspec install $SITE_PACKAGES/aws_glue_interactive_sessions_kernel/glue_pyspark --user && \ + jupyter-kernelspec install $SITE_PACKAGES/aws_glue_interactive_sessions_kernel/glue_spark --user && \ + mv /home/sagemaker-user/.local/share/jupyter/kernels/glue_pyspark /opt/conda/share/jupyter/kernels && \ + mv /home/sagemaker-user/.local/share/jupyter/kernels/glue_spark /opt/conda/share/jupyter/kernels && \ + sed -i '/if not store_history and (/i\ if "sm_analytics_runtime_check" in code:\n return await self._complete_cell()\n' \ + "$SITE_PACKAGES/aws_glue_interactive_sessions_kernel/glue_kernel_base/BaseKernel.py" && \ + # Install FIPS Provider for OpenSSL, on top of existing OpenSSL installation + # v3.0.8 is latest FIPS validated provider, so this is the one we install + # But we need to run tests against the installed version. + # see https://github.com/openssl/openssl/blob/master/README-FIPS.md https://www.openssl.org/source/ + INSTALLED_SSL=$(micromamba list | grep openssl | tr -s ' ' | cut -d ' ' -f 3 | head -n 1) && \ + # download source code for installed, and FIPS validated openssl versions + curl -L https://github.com/openssl/openssl/releases/download/openssl-$FIPS_VALIDATED_SSL/openssl-$FIPS_VALIDATED_SSL.tar.gz > openssl-$FIPS_VALIDATED_SSL.tar.gz && \ + curl -L https://github.com/openssl/openssl/releases/download/openssl-$INSTALLED_SSL/openssl-$INSTALLED_SSL.tar.gz > openssl-$INSTALLED_SSL.tar.gz && \ + tar -xf openssl-$FIPS_VALIDATED_SSL.tar.gz && tar -xf openssl-$INSTALLED_SSL.tar.gz && cd openssl-$FIPS_VALIDATED_SSL && \ + # Configure both versions to enable FIPS and build + ./Configure enable-fips --prefix=/opt/conda --openssldir=/opt/conda/ssl && make && \ + cd ../openssl-$INSTALLED_SSL && \ + ./Configure enable-fips --prefix=/opt/conda --openssldir=/opt/conda/ssl && make && \ + # Copy validated provider to installed version for testing + cp ../openssl-$FIPS_VALIDATED_SSL/providers/fips.so providers/. && \ + cp ../openssl-$FIPS_VALIDATED_SSL/providers/fipsmodule.cnf providers/. && \ + make tests && cd ../openssl-$FIPS_VALIDATED_SSL && \ + # After tests pass, install FIPS provider and remove source code + make install_fips && cd .. && rm -rf ./openssl-* && \ +# Create new config file with fips-enabled. Then user can override OPENSSL_CONF to enable FIPS +# e.g. export OPENSSL_CONF=/opt/conda/ssl/openssl-fips.cnf + cp /opt/conda/ssl/openssl.cnf /opt/conda/ssl/openssl-fips.cnf && \ + sed -i "s:# .include fipsmodule.cnf:.include /opt/conda/ssl/fipsmodule.cnf:" /opt/conda/ssl/openssl-fips.cnf && \ + sed -i 's:# fips = fips_sect:fips = fips_sect:' /opt/conda/ssl/openssl-fips.cnf && \ +# Install Kerberos. +# Make sure no dependency is added/updated + pip install "krb5>=0.5.1,<0.6" && \ + pip show krb5 | grep Require | xargs -i sh -c '[ $(echo {} | cut -d: -f2 | wc -w) -eq 0 ] ' && \ +# https://stackoverflow.com/questions/122327 + SYSTEM_PYTHON_PATH=$(python3 -c "from __future__ import print_function;import sysconfig; print(sysconfig.get_paths().get('purelib'))") && \ + # Remove SparkRKernel as it's not supported \ + jupyter-kernelspec remove -f -y sparkrkernel && \ + # Patch Sparkmagic lib to support Custom Certificates \ + # https://github.com/jupyter-incubator/sparkmagic/pull/435/files \ + cp -a ${SYSTEM_PYTHON_PATH}/sagemaker_studio_analytics_extension/patches/configuration.py ${SYSTEM_PYTHON_PATH}/sparkmagic/utils/ && \ + cp -a ${SYSTEM_PYTHON_PATH}/sagemaker_studio_analytics_extension/patches/reliablehttpclient.py ${SYSTEM_PYTHON_PATH}/sparkmagic/livyclientlib/reliablehttpclient.py && \ + sed -i 's= "python"= "/opt/conda/bin/python"=g' /opt/conda/share/jupyter/kernels/pysparkkernel/kernel.json /opt/conda/share/jupyter/kernels/sparkkernel/kernel.json && \ + sed -i 's="Spark"="SparkMagic Spark"=g' /opt/conda/share/jupyter/kernels/sparkkernel/kernel.json && \ + sed -i 's="PySpark"="SparkMagic PySpark"=g' /opt/conda/share/jupyter/kernels/pysparkkernel/kernel.json && \ + # Configure RTC - disable jupyter_collaboration by default + jupyter labextension disable @jupyter/collaboration-extension + +# Patch glue kernels to use kernel wrapper +COPY patch_glue_pyspark.json /opt/conda/share/jupyter/kernels/glue_pyspark/kernel.json +COPY patch_glue_spark.json /opt/conda/share/jupyter/kernels/glue_spark/kernel.json + +USER root + +# Create logging directories for supervisor +RUN mkdir -p $SAGEMAKER_LOGGING_DIR && \ + chmod a+rw $SAGEMAKER_LOGGING_DIR && \ + mkdir -p ${STUDIO_LOGGING_DIR} && \ + chown ${NB_USER}:${MAMBA_USER} ${STUDIO_LOGGING_DIR} && \ + # Create sagemaker pysdk admin default config directory + mkdir -p /etc/xdg/sagemaker && \ + chmod a+rw /etc/xdg/sagemaker && \ + # Clean up CodeEditor artifacts + rm -rf /etc/code-editor && \ + # Create supervisord runtime directory + mkdir -p /var/run/supervisord && \ + chmod a+rw /var/run/supervisord && \ + # Create root directory for DB + # Create logging directories for supervisor + mkdir -p $DB_ROOT_DIR && \ + chmod a+rw $DB_ROOT_DIR && \ + HOME_DIR="/home/${NB_USER}/licenses" \ + && mkdir -p ${HOME_DIR} \ + && curl -o ${HOME_DIR}/oss_compliance.zip https://aws-dlinfra-utilities.s3.amazonaws.com/oss_compliance.zip \ + && unzip ${HOME_DIR}/oss_compliance.zip -d ${HOME_DIR}/ \ + && cp ${HOME_DIR}/oss_compliance/test/testOSSCompliance /usr/local/bin/testOSSCompliance \ + && chmod +x /usr/local/bin/testOSSCompliance \ + && chmod +x ${HOME_DIR}/oss_compliance/generate_oss_compliance.sh \ + && ${HOME_DIR}/oss_compliance/generate_oss_compliance.sh ${HOME_DIR} python \ + && rm -rf ${HOME_DIR}/oss_compliance* + +# Explicitly disable BuildKit for SM Studio Docker functionality +ENV DOCKER_BUILDKIT=0 +ENV PATH="/opt/conda/bin:/opt/conda/condabin:$PATH" +WORKDIR "/home/${NB_USER}" +ENV SHELL=/bin/bash +ENV OPENSSL_MODULES=/opt/conda/lib64/ossl-modules/ +USER $MAMBA_USER diff --git a/build_artifacts/v2/v2.7/v2.7.0/RELEASE.md b/build_artifacts/v2/v2.7/v2.7.0/RELEASE.md new file mode 100644 index 00000000..c3b69332 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/RELEASE.md @@ -0,0 +1,67 @@ +# Release notes: 2.7.0 + +Package | gpu| cpu +---|---|--- +python|3.11.11|3.11.11 +numpy|1.26.4|1.26.4 +jinja2|3.1.6|3.1.6 +pytorch|2.6.0|2.6.0 +pandas|2.2.3|2.2.3 +altair|5.5.0|5.5.0 +boto3|1.37.3|1.37.3 +ipython|8.36.0|8.36.0 +jupyter-lsp|2.2.5|2.2.5 +jupyterlab|4.4.2|4.4.2 +amazon-q-developer-jupyterlab-ext|3.4.8|3.4.8 +langchain|0.3.25|0.3.25 +jupyter-ai|2.31.4|2.31.4 +amazon-sagemaker-jupyter-ai-q-developer|1.2.4|1.2.4 +jupyter-scheduler|2.10.0|2.10.0 +amazon-sagemaker-jupyter-scheduler|3.1.11|3.1.11 +amazon-sagemaker-sql-magic|0.1.4|0.1.4 +jupyterlab-lsp|5.0.3|5.0.3 +amazon_sagemaker_sql_editor|0.1.16|0.1.16 +scipy|1.15.2|1.15.2 +matplotlib-base|3.10.1|3.10.1 +scikit-learn|1.6.1|1.6.1 +pip|24.3.1|24.3.1 +torchvision|0.21.0|0.21.0 +autogluon|1.3.0|1.3.0 +ipywidgets|8.1.7|8.1.7 +notebook|7.4.2|7.4.2 +aws-glue-sessions|1.0.9|1.0.9 +conda|24.11.3|24.11.3 +docker-cli|27.5.1|27.5.1 +uvicorn|0.34.2|0.34.2 +fastapi|0.115.12|0.115.12 +git-remote-codecommit|1.16|1.16 +jupyter-activity-monitor-extension|0.3.1|0.3.1 +jupyter-collaboration|2.1.5|2.1.5 +jupyter-dash|0.4.2|0.4.2 +jupyter-server-proxy|4.4.0|4.4.0 +jupyterlab-git|0.51.1|0.51.1 +keras|3.9.2|3.9.2 +langchain-aws|0.2.19|0.2.19 +mlflow|2.22.0|2.22.0 +py-xgboost-gpu|2.1.4| +pyhive|0.7.0|0.7.0 +python-gssapi|1.9.0|1.9.0 +python-lsp-server|1.12.2|1.12.2 +s3fs|2024.10.0|2024.10.0 +sagemaker-code-editor|1.5.0|1.5.0 +sagemaker-headless-execution-driver|0.0.13|0.0.13 +sagemaker-jupyterlab-emr-extension|0.3.8|0.3.8 +sagemaker-jupyterlab-extension|0.4.2|0.4.2 +sagemaker-kernel-wrapper|0.0.5|0.0.5 +sagemaker-mlflow|0.1.0|0.1.0 +sagemaker-python-sdk|2.244.0|2.244.0 +sagemaker-studio|1.0.13|1.0.13 +sagemaker-studio-analytics-extension|0.1.7|0.1.7 +sagemaker-studio-cli|1.0.6|1.0.6 +sagemaker-studio-dataengineering-extensions|1.0.9|1.0.9 +sagemaker-studio-dataengineering-sessions|1.0.10|1.0.10 +seaborn|0.13.2|0.13.2 +supervisor|4.2.5|4.2.5 +tensorflow|2.18.0|2.18.0 +tf-keras|2.18.0|2.18.0 +py-xgboost-cpu| |2.1.4 diff --git a/build_artifacts/v2/v2.7/v2.7.0/cpu.env.in b/build_artifacts/v2/v2.7/v2.7.0/cpu.env.in new file mode 100644 index 00000000..1ba697a7 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/cpu.env.in @@ -0,0 +1,63 @@ +# This file is auto-generated. +conda-forge::s3fs[version='>=2024.10.0,<2025.0.0'] +conda-forge::seaborn[version='>=0.13.2,<1.0.0'] +conda-forge::jupyter-activity-monitor-extension[version='>=0.3.1,<1.0.0'] +conda-forge::mlflow[version='>=2.21.3,<3.0.0'] +conda-forge::sagemaker-mlflow[version='>=0.1.0,<1.0.0'] +conda-forge::langchain-aws[version='>=0.2.19,<1.0.0'] +conda-forge::jupyter-collaboration[version='>=2.1.5,<3.0.0'] +conda-forge::sagemaker-code-editor[version='>=1.5.0,<2.0.0'] +conda-forge::amazon_sagemaker_sql_editor[version='>=0.1.16,<1.0.0'] +conda-forge::amazon-sagemaker-sql-magic[version='>=0.1.4,<1.0.0'] +conda-forge::amazon-sagemaker-jupyter-ai-q-developer[version='>=1.2.4,<2.0.0'] +conda-forge::amazon-q-developer-jupyterlab-ext[version='>=3.4.8,<4.0.0'] +conda-forge::langchain[version='>=0.3.24,<1.0.0'] +conda-forge::fastapi[version='>=0.115.12,<1.0.0'] +conda-forge::uvicorn[version='>=0.34.2,<1.0.0'] +conda-forge::pytorch[version='>=2.6.0,<3.0.0'] +conda-forge::tensorflow[version='>=2.18.0,<3.0.0'] +conda-forge::python[version='>=3.11.11,<3.12.0'] +conda-forge::pip[version='>=24.3.1,<25.0.0'] +conda-forge::torchvision[version='>=0.21.0,<1.0.0'] +conda-forge::numpy[version='>=1.26.4,<2.0.0'] +conda-forge::pandas[version='>=2.2.3,<3.0.0'] +conda-forge::scikit-learn[version='>=1.5.2,<2.0.0'] +conda-forge::jinja2[version='>=3.1.6,<4.0.0'] +conda-forge::matplotlib-base[version='>=3.10.1,<4.0.0'] +conda-forge::sagemaker-headless-execution-driver[version='>=0.0.13,<1.0.0'] +conda-forge::ipython[version='>=8.35.0,<9.0.0'] +conda-forge::scipy[version='>=1.15.2,<2.0.0'] +conda-forge::keras[version='>=3.9.0,<4.0.0'] +conda-forge::py-xgboost-cpu[version='>=2.1.4,<3.0.0'] +conda-forge::jupyterlab[version='>=4.4.1,<5.0.0'] +conda-forge::ipywidgets[version='>=8.1.6,<9.0.0'] +conda-forge::conda[version='>=24.11.3,<25.0.0'] +conda-forge::boto3[version='>=1.37.1,<2.0.0'] +conda-forge::sagemaker-python-sdk[version='>=2.243.2,<3.0.0'] +conda-forge::supervisor[version='>=4.2.5,<5.0.0'] +conda-forge::autogluon[version='>=1.2.0,<2.0.0'] +conda-forge::aws-glue-sessions[version='>=1.0.9,<2.0.0'] +conda-forge::sagemaker-kernel-wrapper[version='>=0.0.5,<1.0.0'] +conda-forge::jupyter-ai[version='>=2.31.4,<3.0.0'] +conda-forge::jupyter-scheduler[version='>=2.10.0,<3.0.0'] +conda-forge::jupyter-lsp[version='>=2.2.5,<3.0.0'] +conda-forge::jupyterlab-lsp[version='>=5.0.3,<6.0.0'] +conda-forge::python-lsp-server[version='>=1.12.2,<2.0.0'] +conda-forge::notebook[version='>=7.4.1,<8.0.0'] +conda-forge::altair[version='>=5.5.0,<6.0.0'] +conda-forge::sagemaker-studio-analytics-extension[version='>=0.1.6,<1.0.0'] +conda-forge::jupyter-dash[version='>=0.4.2,<1.0.0'] +conda-forge::sagemaker-jupyterlab-extension[version='>=0.4.2,<1.0.0'] +conda-forge::sagemaker-jupyterlab-emr-extension[version='>=0.3.8,<1.0.0'] +conda-forge::amazon-sagemaker-jupyter-scheduler[version='>=3.1.11,<4.0.0'] +conda-forge::jupyter-server-proxy[version='>=4.4.0,<5.0.0'] +conda-forge::jupyterlab-git[version='>=0.51.1,<1.0.0'] +conda-forge::pyhive[version='>=0.7.0,<1.0.0'] +conda-forge::python-gssapi[version='>=1.9.0,<2.0.0'] +conda-forge::tf-keras[version='>=2.18.0,<3.0.0'] +conda-forge::git-remote-codecommit[version='>=1.16,<2.0.0'] +conda-forge::docker-cli[version='>=27.5.1,<28.0.0'] +conda-forge::sagemaker-studio-cli[version='>=1.0.6,<2.0.0'] +conda-forge::sagemaker-studio[version='>=1.0.13,<2.0.0'] +conda-forge::sagemaker-studio-dataengineering-sessions[version='>=1.0.10,<2.0.0'] +conda-forge::sagemaker-studio-dataengineering-extensions[version='>=1.0.9,<2.0.0'] diff --git a/build_artifacts/v2/v2.7/v2.7.0/cpu.env.out b/build_artifacts/v2/v2.7/v2.7.0/cpu.env.out new file mode 100644 index 00000000..fb04411d --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/cpu.env.out @@ -0,0 +1,768 @@ +# This file may be used to create an environment using: +# $ conda create --name --file +# platform: linux-64 +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-20.1.4-h024ca30_0.conda#4fc395cda27912a7d904b86b5dbf3a4d +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-3_kmp_llvm.conda#ee5c2118262e30b972bc0b4db8ef0ba5 +https://conda.anaconda.org/conda-forge/linux-64/_py-xgboost-mutex-2.0-cpu_0.tar.bz2#23b8f98a355030331f40d0245492f715 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda#ea8ac52380885ed41c1baa8f1d6d2b93 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda#ddca86c7040dd0e73b2b69bd7833d225 +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda#62ee74e96c5ebb0af99386de58cf9553 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda#01f8d123c96816249efd255a31ad7712 +https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda#db0bfbe7dd197b68ad5f30333bae6ce0 +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda#ede4673863426c0883c0063d853bbd85 +https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda#a76fd702c93cd2dfd89eff30a5fd45a8 +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda#30fd6e37fe21f86f4bd26d6ee73eeec7 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda#edb0dca6bc32e4f4789199455a1dbeb8 +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda#3fa05c528d8a1e2a67bbf1e36f22d3bc +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda#40b61aab5c7ba9ff276c41cfffe6b80b +https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda#5aa797f8787fe7a17d1b0821485b5adc +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda#47e340acb35de30501a76c7c799c41d7 +https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda#95db94f75ba080a22eb623590993167b +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda#de356753cfdbffcde5bb1e86e3aa6cd0 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda#283b96675859b20a825f8fa30f311446 +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda#d453b98d9c83e71da0741bb0ff4d76bc +https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda#4222072737ccff51314b5ece9c7d6f5a +https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda#8387070aa413ce9a8cc35a509fae938b +https://conda.anaconda.org/conda-forge/noarch/absl-py-2.2.0-pyhd8ed1ab_0.conda#107112a92cba7895f10a4c246c1770a1 +https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda#4547b39256e296bb758166893e909a7c +https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda#906fe13095e734cb413b57a49116cdc8 +https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda#3bfed7e6228ebf2f7b9eaa47f1b4e2aa +https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda#6320dac78b3b215ceac35858b2cfdb70 +https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae +https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda#014417753f948da1f70d132b2de573be +https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda#c33eeaaa33f45031be34cda513df39b6 +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda#40fe4284b8b5835a9073a645139f35af +https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda#39a4f67be3286c86d696df570b1201b7 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda#1cb1c67961f6dd257eae9e9691b341aa +https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda#d21daab070d76490cb39a8f1d1729d79 +https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda#461219d1a5bd61342293efa2c0c90eac +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.19-pyhd8ed1ab_0.conda#6bb37c314b3cc1515dcf086ffe01c46e +https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda#a9b9368f3701a417eac9edbcae7cb737 +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda#962b9857ee8e7018c22f2776ffa0b2d7 +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda#9efbfdc37242619130ea42b1cc4ed861 +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda#83fc6ae00127671e301c9f44254c31b8 +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda#568ed1300869dca0ba09fb750cda5dbb +https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.30.2-pyhd8ed1ab_0.conda#e263a7875762bd3a2a6a925ab3ef4f81 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda#9d2072af184b5caa29492bf2344597bb +https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda#8b189310083baabfb622af68fd9d3ae3 +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda#e796ff8ddc598affdf7c173d6145f087 +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda#14dbe05b929e329dbaa6f2d0aa19466d +https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda#804ca9e91bcaea0824a341d55b1684f2 +https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda#ba7726b8df7b9d34ea80e82b097a4893 +https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda#1459379c79dda834673426504d52b319 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_hfdb39a5_mkl.conda#bdf4a57254e8248222cb631db4393ff1 +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_h372d94f_mkl.conda#2a06a6c16b45bd3d10002927ca204b67 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_hc41d3b0_mkl.conda#10d012ddd7cc1c7ff9093d4974a34e53 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda#a502d7aad449a1206efb366d6a12c52d +https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.8-py311h459d7ec_0.conda#9bc62d25dcf64eec484974a3123c9d57 +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda#6565a715337ae279e351d0abd8ffe88a +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda#446bd6c8cb26050d528881df495ce646 +https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda#488f260ccda0afaf08acb286db439c2f +https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda#d8703f1ffe5a06356f06467f1d0b9464 +https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda#771ee65e13bc599b0b62af5359d80169 +https://conda.anaconda.org/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda#aec4dba5d4c2924730088753f6fa164b +https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.6.0-cpu_mkl_hc5f969b_101.conda#284859a044d1c9b9e1c0a29cee771305 +https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda#fd40bf7f7f4bc4b647dc8512053d9873 +https://conda.anaconda.org/conda-forge/linux-64/optree-0.15.0-py311hd18a35c_0.conda#d4f6d179cdc7ee53e84cfbb1b385019b +https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda#120541563e520d12d8e39abd7de9092c +https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda#8088a5e7b2888c780738c3130f2a969d +https://conda.anaconda.org/conda-forge/noarch/setuptools-80.1.0-pyhff2d567_0.conda#f6f72d0837c79eaec77661be43e8a691 +https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.12-py311hd8ed1ab_0.conda#451718359f1658c6819d8665f82585ab +https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda#c94a5994ef49749880a8139cf9afcbe1 +https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda#2eeb50cab6652538eee8fc0bc3340c81 +https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda#aa14b9a5196a6d8dd364164b7ce56acf +https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.2.1-py311h0f6cedb_0.conda#8243c1be284256690be3e29e2ea63413 +https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda#3585aa87c43ab15b167b574cd73b057b +https://conda.anaconda.org/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_105.conda#8c09fac3785696e1c477156192d64b91 +https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.6.0-cpu_mkl_py311_hcab61ac_101.conda#22ac1759e20948028dbc248c7ac3d289 +https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py311h9e33e62_0.conda#3ad539d7a9e392539fccfd3adf411d7c +https://conda.anaconda.org/conda-forge/noarch/accelerate-1.5.2-pyhd8ed1ab_0.conda#b22d3c50e59a528a19690b854aad66bf +https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda#f4e90937bbfc3a4a92539545a37bb448 +https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda#a451d576819089b0d672f18768be0f65 +https://conda.anaconda.org/conda-forge/noarch/fs-2.4.16-pyhd8ed1ab_0.conda#a231fa7cb5f101f1f3ae8480c0002f91 +https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda#0c3cc595284c5e8f0f9900a9b228a332 +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.10.0-pyha770c72_0.conda#ae2ad334f34040e147cc5824b450463b +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda#5ba79d7c71f03c678c8ead841f347d6e +https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda#88476ae6ebd24f39261e0854ac244f33 +https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda#f26ec986456c30f6dff154b670ae140f +https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_3.conda#c9f8fe78840d5c04e61666474bd739b2 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.0-hb9d3cd8_0.conda#f65c946f28f0518f41ced702f44c52b7 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.7-h043a21b_0.conda#4fdf835d66ea197e693125c64fbd4482 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.1-h3870646_2.conda#17ccde79d864e6183a83c5bbb8fff34d +https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.14-h6c98b2b_0.conda#efab4ad81ba5731b2fefa0ab4359e884 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.17.0-h3dad3f2_6.conda#3a127d28266cdc0da93384d1f59fe8df +https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.4-hb9b18c6_4.conda#773c99d0dbe2b3704af165f97ff399e5 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.3-h3870646_2.conda#06008b5ab42117c89c982aa2a32a5b25 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.6-hd08a7f5_4.conda#f5a770ac1fd2cb34b21327fc513013a7 +https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.3-h3870646_2.conda#303d9e83e0518f1dcb66e90054635ca6 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.4-h04a3f94_2.conda#81096a80f03fc2f0fb2a230f5d028643 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.12.2-h108da3e_2.conda#90e07c8bac8da6378ee1882ef0a9374a +https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.13-h822ba82_2.conda#9cf2c3c13468f2209ee814be2c88655f +https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.31.0-h55f77e1_4.conda#0627af705ed70681f5bede31e72348e5 +https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2#30186d27e2c9fa62b45fb1476b7200e3 +https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda#c277e0a4d549b03ac1e9d6cbbe3d017b +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda#3f43953b7d3fb3aaa1d0d0723d91e368 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda#f7f0d6cc2dc986d42ac2689ec88192be +https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda#172bf1cd1ff8629f2b1179945ed45055 +https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda#19e57602824042dfd0446292ef90488b +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda#eecce068c7e4eddeb169591baac20ac4 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda#6432cb5d4ac0046c3ac0a8a0f95842f9 +https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.13.0-h332b0f4_0.conda#cbdc92ac0d93fe3c796e36ad65c7905c +https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.510-h37a5c72_3.conda#beb8577571033140c6897d257acc7724 +https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda#0a8838771cc2e985cd295e01ae83baf1 +https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda#73f73f60854f325a55f1d31459f2ab73 +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda#13de36be8de3ae3f05ba127631599213 +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda#7eb66060455c7a47d9dcdbfa9f46579b +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda#7c1980f89dd41b097549782121a73490 +https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda#d411fc29e338efb48c5fd4576d71d881 +https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda#ff862eebdfeb2fd048ae9dc92510baca +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda#41b599ed2b02abcfdd84302bff174b23 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda#9566f0bd264fbd463002e759b8a82401 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda#06f70867945ea6a84d35836af780f1de +https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda#b2fede24428726dd867611664fb372e8 +https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda#e84ddf12bde691e8ec894b00ea829ddf +https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_2.conda#bfcedaf5f9b003029cc6abe9431f66bf +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.36.0-h2b5623c_0.conda#c96ca58ad3352a964bfcb85de6cd1496 +https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2#c965a5aa0d5c1c37ffc62dff36e28400 +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.36.0-h0121fbd_0.conda#fc5efe1833a4d709953964037985bb72 +https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda#4fb055f57404920a43b147031471e03b +https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h3f2d84a_0.conda#d76872d096d063e226482c99337209dc +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda#c9f075ab2f33b3bbee9e62d4ad0a6cd8 +https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda#a83f6a2fdc079e643237887a37460668 +https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda#1f5a5d66e77a39dc5bd639ec953705cf +https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda#aeccfff2806ae38430638ffbb4be9610 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda#9de5350a85c4a20c685259b889aa6393 +https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda#3b3e64af585eadfb52bb90b553db5edf +https://conda.anaconda.org/conda-forge/linux-64/orc-2.1.1-h2271f48_0.conda#67075ef2cb33079efee3abfe58127a3b +https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hc7b3859_3_cpu.conda#9ed3ded6da29dec8417f2e1db68798f2 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_3_cpu.conda#8f8dc214d89e06933f1bc1dcd2310b9c +https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda#a1cfcc585f0c42bf8d5546bb1dfb668d +https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda#dcb95c0a98ba9ff737f7ae482aef7833 +https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_3_cpu.conda#1d04307cdb1d8aeb5f55b047d5d403ea +https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_3_cpu.conda#a28f04b6e68a1c76de76783108ad729d +https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_3_cpu.conda#a58e4763af8293deaac77b63bc7804d8 +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py311h4854187_0_cpu.conda#f7912063df377c356b223f386e88cb2a +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py311h38be061_0.conda#fd25bdbbb08557c2fab04b26926a8c5c +https://conda.anaconda.org/conda-forge/noarch/triad-0.9.8-pyhd8ed1ab_1.conda#ce141bc07d3fe6f0a63effb6ff6bc1f4 +https://conda.anaconda.org/conda-forge/noarch/adagio-0.2.6-pyhd8ed1ab_1.conda#e501931a052662243622ca1a56147f5f +https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2#bbf6f174dcd3254e19a2f5d2295ce808 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda#55199e2ae2c3651f6f9b2a447b47bdc9 +https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda#3c255be50a506c50765a93a6644f32fe +https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda#51f5be229d83ecd401fb369ab96ae669 +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda#9ccd736d31e0c6e41f54e704e5312811 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda#8f5b0b297b59e1ac160ad4beec99dbee +https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb +https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda#49023d73832ef61042f6a237cb2687e7 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab +https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda#b90bece58b4c2bf25969b70f3be42d25 +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.1-h3618099_1.conda#714c97d4ff495ab69d1fdfcadbcae985 +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda#b3c17d95b5a10c6e64a21fa17573e70e +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda#f6ebe2cb3f82ba6c057dde5d9debe4f7 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda#8035c64cb77ed555e3f150b7b3972480 +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda#92ed62436b625154323d40d5f2f11dd7 +https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda#d2f1c87d4416d1e7344cf92b1aaee1c4 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda#fb901ff28063514abb6046c9ec2c4a45 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda#1c74ff8c35dcadf952a16f752ca5aa49 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda#db038ce880f100acc74dba10302b5630 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda#febbab7d15033c913d53c7a2c102309d +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda#96d57aba173e878a2089d5638016dc5e +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda#09262e66b19567aff4f592fb53b28760 +https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda#9fa334557db9f63da6c9285fd2a48638 +https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda#9344155d33912347b37f0ae6c410a835 +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h86f0d12_0.conda#27fe770decaf469a53f3e3a6d593067f +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda#63f790534398730f59e1b899c3644d4a +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_4.conda#6c1028898cf3a2032d9af46689e1b81a +https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda#201db6c2d9a3c5e46573ac4cb2e92f4f +https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda#f87c7b7c2cb45f323ffbce941c78ab7c +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.1.0-h3beb420_0.conda#95e3bb97f9cdc251c0c68640e9c10ed3 +https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2#ac7bc6a654f8f41b352b38f4051135f8 +https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda#21899b96828014270bd24fd266096612 +https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda#d27665b20bc4d074b86e628b3ba5ab8b +https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda#11539f9e49efaa281da735ded100b152 +https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.6.0-py311h62d540b_0.conda#ad01dcb674e8792b626276999ab1825e +https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda#1a3981115a398535dbe3f6d5faae3d36 +https://conda.anaconda.org/conda-forge/noarch/attrs-23.2.0-pyh71513ae_0.conda#5e4c0743c70186509d1412e03c2d8dfa +https://conda.anaconda.org/conda-forge/linux-64/multidict-6.4.3-py311h2dc5d0c_0.conda#75ce8e460c19ba5040f39d11284b70a6 +https://conda.anaconda.org/conda-forge/linux-64/propcache-0.3.1-py311h2dc5d0c_0.conda#c75eb8c91d69fe0385fce584f3ce193a +https://conda.anaconda.org/conda-forge/linux-64/yarl-1.20.0-py311h2dc5d0c_0.conda#f937346d50212388f8c954e52133356f +https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.9.5-py311h459d7ec_0.conda#0175d2636cc41dc019b51462c13ce225 +https://conda.anaconda.org/conda-forge/noarch/aioitertools-0.12.0-pyhd8ed1ab_1.conda#3eb47adbffac44483f59e580f8600a1e +https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda#972bdca8f30147135f951847b30399ea +https://conda.anaconda.org/conda-forge/noarch/botocore-1.37.3-pyge310_1234567_0.conda#7d4948ef8b96fa964c3f47fe261520db +https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py311h9ecbd09_0.conda#c4bb961f5a2020837fe3f7f30fadc2e1 +https://conda.anaconda.org/conda-forge/noarch/aiobotocore-2.22.0-pyhd8ed1ab_0.conda#bc75449e03b6f28df6625e3dd96d2084 +https://conda.anaconda.org/conda-forge/noarch/aiohttp-cors-0.7.0-pyhd8ed1ab_2.conda#d1af42a96bb90a0b3a9523a10c4aaf4b +https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8 +https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhd8ed1ab_0.conda#c5bb3eea5f1a00fcf3d7ea186209ce33 +https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.2.1-py311hfdbb021_0.conda#8aa3be2b6b9eff63f127a5dfcac60a43 +https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.40-py311h9ecbd09_0.conda#2e0d3c5a4afb139b23a68a23a2980851 +https://conda.anaconda.org/conda-forge/noarch/alembic-1.15.2-pyhd8ed1ab_0.conda#b412ae3c8625f1c05e9f7f3ce7f77554 +https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda#c85c76dc67d75619a92f51dfbce06992 +https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.24.0-py311h687327b_0.conda#e2fc6063859ff5fd62f983c31e4bf521 +https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda#9140f1c09dd5489549c6a33931b943c7 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda#41ff526b1083fde51fbdc93f29282e0e +https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda#5a5870a74432aa332f7d32180633ad05 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda#a3cead9264b331b32fe8f0aabc967522 +https://conda.anaconda.org/conda-forge/noarch/narwhals-1.38.1-pyhe01879c_0.conda#1da557080c9976b9898abbf0fc64086c +https://conda.anaconda.org/conda-forge/noarch/altair-5.5.0-pyhd8ed1ab_1.conda#e54e67e5aea7288ba110cf685252f599 +https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.11.3-pyhd8ed1ab_0.conda#2d1d519bcf3031d5d809411d1aa9f838 +https://conda.anaconda.org/conda-forge/noarch/boto3-1.37.3-pyhd8ed1ab_0.conda#9f35fb5975b0131816a72dfdd6dbbc91 +https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda#d9d0f99095a9bb7e3641bca8c6ad2ac7 +https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda#a16662747cdeb9abbac74d0057cc976e +https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda#bf7a226e58dfb8346c70df36065d86c9 +https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda#9749a2c77a7c40d432ea0927662d7e52 +https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda#4b69232755285701bc86a5afe4d9933a +https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda#0a802cb9888dd14eeefc611f05c40b6e +https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda#8e6923fc12f1fe8f8c4e5c9f343256ac +https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda#b4754fb1bdcb70c8fd54f918301582c6 +https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda#4f14640d58e2cc0aa0819d9d8ba125bb +https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda#d6989ead454181f4f9bc987d3dc4e285 +https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda#019a7385be9af33791c989871317e1ed +https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda#74673132601ec2b7fc592755605f4c1b +https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py311hfdbb021_0.conda#1c229452e28e2c4607457c7b6c839bc7 +https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda#9ce473d1d1be1cc3810856a48b3fab32 +https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda#5c092057b6badd30f75b06244ecd01c9 +https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda#a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 +https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda#af6ab708897df59bd6e7283ceab1b56b +https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda#7d9daffbb8d8e0af0f769dbbcd173a54 +https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda#d0d408b1f18883a944376da5cf8101ea +https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda#11a9d1d09a3615fc07c3faf79bc0b943 +https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda#b68980f2495d096e71c7fd9d7ccf63e6 +https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda#d17ae9db4dc594267181bd199bf9a551 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda#232fb4577b6687b2d503ef8e254270c9 +https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda#8f587de4bcf981e26228f268df374a9b +https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda#81d30c08f9a3e556e8ca9e124b044d14 +https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda#3bfdfb8dbcdc4af1ae3f9a8eb3948f04 +https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda#b1b505328da7a6b246787df4b5a49fbc +https://conda.anaconda.org/conda-forge/noarch/ipython-8.36.0-pyh907856f_0.conda#886e40ae1c3851b6d348d4cd41e5de39 +https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda#424844562f5d337077b445ec6b1398a7 +https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda#0a2980dada0dd7fd0998f0342308b1b1 +https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda#a587892d3c13b6621a6091be690dbca2 +https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda#3947a35e916fcc6b9825449affbf4214 +https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py311h7deb3e3_0.conda#eb719a63f26215bba3ee5b0227c6452b +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda#df3aee9c3e44489257a840b8354e77b9 +https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda#4ebae00eae9705b0c3d6d1018a81d047 +https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda#598fd7d4d0de2455fb74f56063969a97 +https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda#b40131ab6a36ac2c09b7c57d4d3fbf99 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda#12c566707c80111f9799308d9e265aef +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda#55553ecd5328336368db611f350b7039 +https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py311h9ecbd09_5.conda#18143eab7fcd6662c604b85850f0db1e +https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda#a7ee488b71c30ada51c48468337b85ba +https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a +https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551 +https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda#d3549fd50d450b6d9e7dddff25dd2110 +https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda#1dbc4a115e2ad9fb7f9d5b68397f66f9 +https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda#46b53236fdd990271b03c3978d4218a9 +https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda#0b0154421989637d424ccf0f104be51a +https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py311h38be061_1.conda#5ca76f61b00a15a9be0612d4d883badc +https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda#36de09a8d3e5d5e6f4ee63af49e59706 +https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f +https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda#e7cb0f5745e4c5035a460248334af7eb +https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda#b49f7b291e15494aafb0a7d74806f337 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda#a5b1a8065857cc4bd8b7a38d063bb728 +https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960 +https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda#f56000b36f09ab7533877e695e4e8cb0 +https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda#efba281bbdae5f6b0a1d53c6d4a97c93 +https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda#2d983ff1b82a1ccb6f2e9d8784bdd6bd +https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda#fb32097c717486aa34b38a9db57eb49e +https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda#9f07c4fc992adb2d6c30da7fab3959a7 +https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda#2841eb5bfc75ce15e9a0054b98dcd64d +https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda#f0b4c8e370446ef89797608d60a564b3 +https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda#f1acf5fdefa8300de697982bcb1761c9 +https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda#a30e9406c873940383555af4c873220d +https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda#fd312693df06da3578383232528c468d +https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda#7ec6576e328bc128f4982cd646eeba85 +https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda#38e34d2d1d9dca4fb2b9a0a04f604e2c +https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda#bbe1963f1e47f594070ffe87cdf612ea +https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda#6bb0d77277061742744176ab555b723c +https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda#d24beda1d30748afcc87c429454ece1b +https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda#f6d7aa696c67756a650e91e15e88223c +https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda#e51f1e4089cad105b6cac64bd8166587 +https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda#3e01e386307acc60b2f89af0b2e161aa +https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda#938c8de6b9de091997145b3bf25cdbf9 +https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda#84f8f77f0a9c6ef401ee96611745da8f +https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda#6ba8c206b5c6f52b82435056cf74ee46 +https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda#0b4c3908e5a38ea22ebb98ee5888c768 +https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda#0a01c169f0ab0f91b26e77a3301fbfe4 +https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda#56275442557b3b45752c10980abfe2db +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda#9dc4b2b0f41f0de41d27f3293e319357 +https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda#e7f89ea5f7ea9401642758ff50a2d9c1 +https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda#ac944244f1fed2eb49bae07193ae8215 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda#1f5f3b0fcff308d8fbaa73c43af08e2f +https://conda.anaconda.org/conda-forge/noarch/amazon-q-developer-jupyterlab-ext-3.4.8-pyhd8ed1ab_1.conda#3a0d9c73d9764a12e19e9f6cdefb77c6 +https://conda.anaconda.org/conda-forge/noarch/aws-embedded-metrics-3.2.0-pyhd8ed1ab_0.conda#e1c511655b6e9eb0265c9715c7fa410f +https://conda.anaconda.org/conda-forge/linux-64/libfaiss-1.9.0-h72e5a87_0_cpu.conda#95069767db711a0e1e3df3237998c04d +https://conda.anaconda.org/conda-forge/linux-64/faiss-1.9.0-py311hbed6fca_0_cpu.conda#81ce81de368ba0364008f482de1115a2 +https://conda.anaconda.org/conda-forge/linux-64/faiss-cpu-1.9.0-h718b53a_0.conda#1b6350943cb03666539e1995fd45894d +https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda#f22f4d4970e09d68a10b922cbb0408d3 +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda#364ba6c9fb03886ac979b482f39ebb92 +https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 +https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.1-pyhd8ed1ab_0.conda#2fcb582444635e2c402e8569bb94e039 +https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda#0badf9c54e24cecfb0ad2f99d680c163 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.4.1-pyhd8ed1ab_0.conda#0735ecef025a6c2d6eb61aae4785fc3f +https://conda.anaconda.org/conda-forge/noarch/deepmerge-2.0-pyhd8ed1ab_1.conda#75c5496323e2ef172bfeec4651eb3e66 +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.0.1-py311h9ecbd09_0.conda#69a0a85acdcc5e6d0f1cc915c067ad4c +https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.0-py311hd18a35c_0.conda#682f76920687f7d9283039eb542fdacf +https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda#0401a17ae845fa72c7210e206ec5647d +https://conda.anaconda.org/conda-forge/noarch/tblib-3.1.0-pyhd8ed1ab_0.conda#a15c62b8a306b8978f094f76da2f903f +https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda#e52c2ef711ccf31bb7f70ca87d144b9e +https://conda.anaconda.org/conda-forge/noarch/distributed-2025.4.1-pyhd8ed1ab_0.conda#cd6d1cab1174ca5e954b7dbae659b479 +https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda#fd5062942bfa1b0bd5e0d2a4397b099e +https://conda.anaconda.org/conda-forge/noarch/jsonpath-ng-1.6.1-pyhd8ed1ab_1.conda#5c21e268b3020ff115372b797336793e +https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda#3ce482ec3066e6d809dbbb1d1679f215 +https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_1.conda#cb60ae9cf02b9fcb8004dec4089e5691 +https://conda.anaconda.org/conda-forge/linux-64/orjson-3.10.18-py311h9e33e62_0.conda#368f6c74d0d754586a8cc6228e675dd7 +https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda#2934f256a8acfe48f6ebb4fce6cde29c +https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.33.2-py311hdae7d1d_0.conda#484d0d62d4b069d5372680309fc5f00c +https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.0-pyhd8ed1ab_0.conda#c5c76894b6b7bacc888ba25753bc8677 +https://conda.anaconda.org/conda-forge/noarch/pydantic-2.11.4-pyh3cfb1c2_0.conda#8ad3ad8db5ce2ba470c9facc37af00a9 +https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda#66de8645e324fda0ea6ef28c2f99a2ab +https://conda.anaconda.org/conda-forge/noarch/langsmith-0.2.11-pyhd8ed1ab_0.conda#9d949c17fcf0e72779d75ae1546d1242 +https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda#5d99943f2ae3cc69e1ada12ce9d4d701 +https://conda.anaconda.org/conda-forge/noarch/langchain-core-0.3.59-pyhd8ed1ab_0.conda#1a501bd88ed11f6c44b8fcb4830645ff +https://conda.anaconda.org/conda-forge/noarch/langchain-text-splitters-0.3.8-pyhd8ed1ab_0.conda#0fcaf9f098a80efcb3fc94450d47a14f +https://conda.anaconda.org/conda-forge/noarch/langchain-0.3.25-pymin39_hff2d567_0.conda#1a0f7121a664f91ab9b68c5a063bea18 +https://conda.anaconda.org/conda-forge/noarch/marshmallow-3.26.1-pyhd8ed1ab_0.conda#5122fd693171117f91516ce0f6c7a4de +https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda#e9c622e0d00fa24a6292279af3ab6d06 +https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_1.conda#fa31df4d4193aabccaf09ce78a187faf +https://conda.anaconda.org/conda-forge/noarch/dataclasses-json-0.6.7-pyhd8ed1ab_1.conda#963685798962b717d9940d3f3f6a1ec8 +https://conda.anaconda.org/conda-forge/noarch/httpx-sse-0.4.0-pyhd8ed1ab_1.conda#3f9aa7f084adbbbb1fb235e6a72da100 +https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.1.0-pyh29332c3_1.conda#27d816c6981a8d50090537b761de80f4 +https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.9.1-pyh3cfb1c2_0.conda#29dd5c4ece2497b75b4050ec3c8d4044 +https://conda.anaconda.org/conda-forge/noarch/langchain-community-0.3.23-pymin39_hff2d567_0.conda#70845f5fd633b8a47997db712de99617 +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-magics-2.31.4-pyhd8ed1ab_0.conda#4fb0b1fbd0303e869c503e2f5e4257ce +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-2.31.4-pyhd8ed1ab_0.conda#20fea75cbc9998ee8b1d03525093a46a +https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda#7fe569c10905402ed47024fc481bb371 +https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda#b866ff7007b934d564961066c8195983 +https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py311hfdbb021_0.conda#ddf920c3b5d1cbd5ffbea591d2ad09ea +https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.2.10-pyhbc23db3_0.conda#2c18ee679aa838a190eeaae5a14afc9e +https://conda.anaconda.org/conda-forge/linux-64/onnxruntime-1.21.1-py311h9b445dc_0_cpu.conda#ac5d81d7ebe3c45b18c361b27289cf83 +https://conda.anaconda.org/conda-forge/linux-64/y-py-0.6.2-py311h9e33e62_1.conda#72bb2cdc3505bb8f015d0244f2b61b76 +https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.12.4-pyhd8ed1ab_1.conda#ce587cae6e9163339bab26048f19842b +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-common-0.2.2-pyhd8ed1ab_0.conda#6a9628656356c639a5267aebc7441e62 +https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d +https://conda.anaconda.org/conda-forge/noarch/dill-0.4.0-pyhd8ed1ab_0.conda#885745570573eb6a08e021841928297a +https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.18-py311h9ecbd09_0.conda#5c48064e8c7f07b21cbec206f7a448c1 +https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb47aa4a_0.conda#607e13a8caac17f9a664bcab5302ce06 +https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py311h9ecbd09_2.conda#4b49b833ad54b3e26da1e743a4e4bc13 +https://conda.anaconda.org/conda-forge/noarch/responses-0.18.0-pyhd8ed1ab_0.tar.bz2#a10d30e613a2a1a78a89ceadf3832e7c +https://conda.anaconda.org/conda-forge/noarch/datasets-2.2.1-pyhd8ed1ab_0.tar.bz2#521decd6877eb8e8e720af29afd5d88a +https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py311h9ecbd09_0.conda#08f56182b69c47595c7fbbbc195f4867 +https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.1-py311h182c674_0.conda#a934f723dcd2813d96469a2723df6d62 +https://conda.anaconda.org/conda-forge/noarch/transformers-4.51.3-pyhd8ed1ab_0.conda#3337cde55c3a1e2defd3fcada980c571 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-jupyter-ai-q-developer-1.2.4-pyhd8ed1ab_2.conda#e80b2d95293c92dc867bd8d43b876405 +https://conda.anaconda.org/conda-forge/noarch/croniter-1.4.1-pyhd8ed1ab_0.conda#7a4568626f8d6e7c63dcb25d5501a967 +https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.6.4-ha770c72_0.conda#53f2cd4128fa7053bb029bbeafbe3f2e +https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.6-hed9df3c_0.conda#5b0afb6c52e74a7eca2cf809a874acf4 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.6-hb482800_0.conda#aa90ea40c80d4bd3da35cb17ed668f22 +https://conda.anaconda.org/conda-forge/noarch/jupyter_scheduler-2.10.0-pyhd8ed1ab_1.conda#27833825f2eaf4dfdc0bfd50f1ad3ab1 +https://conda.anaconda.org/conda-forge/noarch/jupyter-scheduler-2.10.0-pyhd8ed1ab_1.conda#10ae095b709223cdc85e5b9baca628c9 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-jupyter-scheduler-3.1.11-pyhd8ed1ab_0.conda#852540988d3f34f42a5fbf073b7a0f0b +https://conda.anaconda.org/conda-forge/linux-64/cryptography-44.0.3-py311hafd3f86_0.conda#f3263a106241f8fa41486cb7333c2384 +https://conda.anaconda.org/conda-forge/noarch/pyathena-3.13.0-pyhd8ed1ab_0.conda#a06e466e3e7e4f1d23382dc350fa13ed +https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda#e71f31f8cfb0a91439f2086fc8aa0461 +https://conda.anaconda.org/conda-forge/linux-64/lxml-5.4.0-py311hbd2c71b_0.conda#8f918de217abd92a1197cd0ef3b5ce16 +https://conda.anaconda.org/conda-forge/noarch/asn1crypto-1.5.1-pyhd8ed1ab_1.conda#09c02b0ea863321bbe216e7dd0df36db +https://conda.anaconda.org/conda-forge/noarch/scramp-1.4.4-pyhd8ed1ab_0.tar.bz2#2fac165a69d120a1689e1955ba1a4bfd +https://conda.anaconda.org/conda-forge/noarch/redshift_connector-2.1.5-pyhd8ed1ab_0.conda#47164f820ad3bb5f25679bfb4ae6e3bc +https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.1-pyhd8ed1ab_0.conda#84c5c40ea7c5bbc6243556e5daed20e7 +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-25.0.0-pyhd8ed1ab_0.conda#195fbabc5cc805f2cc10cb881a19cf8b +https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda#1d9ab4fc875c52db83f9c9b40af4e2c8 +https://conda.anaconda.org/conda-forge/linux-64/snowflake-connector-python-3.15.0-np20py311h31610b7_0.conda#216e9360c993a3edecd8959ef97c17c0 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-execution-0.1.7-pyhd8ed1ab_0.conda#488bb82aa4fdff437a5b871efa45ccb0 +https://conda.anaconda.org/conda-forge/noarch/sqlparse-0.5.0-pyhd8ed1ab_0.conda#4dd428bd295ba44babd13050f2bcc622 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-magic-0.1.4-pyhd8ed1ab_0.conda#358b1deaa41aa19ff089d8992966ae5e +https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_1.conda#1c33d47dcfb2f90c80c6d2213f9d65d7 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-lsp-5.0.3-pyhd8ed1ab_0.conda#63ec86c18fd4ab77ae3ada5d48bcf6fc +https://conda.anaconda.org/conda-forge/noarch/amazon_sagemaker_sql_editor-0.1.16-pyhd8ed1ab_0.conda#cfa6b8604cc52d907241918d51f818dd +https://conda.anaconda.org/conda-forge/linux-64/ansi2html-1.9.2-py311h38be061_2.conda#7e747e54809f61885f450f8ddbdcce02 +https://conda.anaconda.org/conda-forge/noarch/ansicolors-1.1.8-pyhd8ed1ab_0.tar.bz2#e4929dd673bcb012fab516878e72f6f6 +https://conda.anaconda.org/conda-forge/noarch/antlr-python-runtime-4.9.3-pyhd8ed1ab_1.tar.bz2#c88eaec8de9ae1fa161205aa18e7a5b1 +https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda#346722a0be40f6edc53f12640d301338 +https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.5-pyhd8ed1ab_0.conda#845b38297fca2f2d18a29748e2ece7fa +https://conda.anaconda.org/conda-forge/linux-64/astroid-3.3.9-py311h38be061_0.conda#cabdabc18d53f957c01685765f24381a +https://conda.anaconda.org/conda-forge/noarch/astunparse-1.6.3-pyhd8ed1ab_3.conda#d3f195dfdbbf736e4ec178bbec2a975c +https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.0-h5888daf_0.conda#d6845ae4dea52a2f90178bf1829a21f8 +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda#4bdb303603e9821baf5fe5fdff1dc8f8 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda#17dcc85db3c7886650b8908b183d6876 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda#7bbe9a0cc0df0ac5f5a8ad6d6a11af2f +https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2#8cb2fc4cd6cc63f1369cfa318f581cc3 +https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda#f730d54ba9cd543666d7220c9f7ed563 +https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2#6b889f174df1e0f816276ae69281af4d +https://conda.anaconda.org/conda-forge/noarch/autogluon.common-1.3.0-pyhd8ed1ab_0.conda#7ef98408f8ccdd6c75297f5d4c91d144 +https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_2.conda#1054c53c95d85e35b88143a3eda66373 +https://conda.anaconda.org/conda-forge/noarch/py4j-0.10.9.9-pyhd8ed1ab_0.conda#9c12bcccde15a83c99dd84b1ab445084 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda#01de444988ed960031dbe84cf4f9b1fc +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda#f92e6e0a3c0c0c85561ef61aa59d555d +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py311h8f841c2_0.conda#5ec0a1732a05376241e1e4c6d50e0e91 +https://conda.anaconda.org/conda-forge/noarch/hyperopt-0.2.7-pyhd8ed1ab_1.conda#6d445b7daedb9989985530de7d26eb4b +https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.2-py311hd18a35c_0.conda#f8e440efa026c394461a45a46cea49fc +https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda#44600c4667a319d67dbe0681fc0bc833 +https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hb9d3cd8_2.conda#c63b5e52939e795ba8d26e35d767a843 +https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hb9d3cd8_2.conda#98514fe74548d768907ce7a13f680e8f +https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 +https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-16.0.0-py311h9ecbd09_0.conda#51a12678b609f5794985fda8372b1a49 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.57.0-py311h2dc5d0c_0.conda#4175f366b41d3d0c80d02661a0a03473 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.7-py311hd18a35c_0.conda#be34c90cce87090d24da64a7c239ca96 +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda#000e85703f0fd9594c81710dd5066471 +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda#9e5816bc95d285c115a3ebc2f8563564 +https://conda.anaconda.org/conda-forge/linux-64/pillow-11.2.1-py311h1322bbf_0.conda#4c49bdabd1d4e09386dabc676fb6bd65 +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda#513d3c262ee49b54a8fec85c5bc99764 +https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda#353823361b1d27eb3960efb076dfcaf6 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.1-py311h2b939e6_0.conda#eed17bae389043337f33b95a0fd8c172 +https://conda.anaconda.org/conda-forge/noarch/colorful-0.5.6-pyhd8ed1ab_0.conda#a75276da977eecc9224dea358576e2ec +https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.67.1-py311h9789449_2.conda#2e14634b5655043dc5260b6501301f65 +https://conda.anaconda.org/conda-forge/noarch/cachetools-5.5.2-pyhd8ed1ab_0.conda#bf9c1698e819fab31f67dbab4256f7ba +https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.conda#09bb17ed307ad6ab2fd78d32372fdd4e +https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.4.2-pyhd8ed1ab_0.conda#c689b62552f6b63f32f3322e463f3805 +https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda#644bd4ca9f68ef536b902685d773d697 +https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda#58958bb50f986ac0c46f73b6e290d5fe +https://conda.anaconda.org/conda-forge/noarch/google-auth-2.40.1-pyhd8ed1ab_0.conda#235e18d45c226be98eb1d3c02ffcac89 +https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.70.0-pyhd8ed1ab_0.conda#7999fb45c48645272d7d88de0b7dc188 +https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.26.1-pyhd8ed1ab_0.conda#6fcfcf4432cd80d05ee9c6e20830bd36 +https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.24.2-pyhd8ed1ab_0.conda#05a11e28a8e55c7ef1f727c2a25e77c1 +https://conda.anaconda.org/conda-forge/linux-64/opencensus-context-0.1.3-py311h38be061_3.conda#3cb0a537f59025a06538ae86ed6bd7e5 +https://conda.anaconda.org/conda-forge/noarch/opencensus-0.11.3-pyhd8ed1ab_1.conda#57109b1dc09c4d2b775aa3b3a6367b7f +https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.6.2-h9c3ff4c_0.tar.bz2#a730b2badd586580c5752cc73842e068 +https://conda.anaconda.org/conda-forge/linux-64/py-spy-0.4.0-h4c5a871_1.conda#aee51398c14a56bb59ede1968418917f +https://conda.anaconda.org/conda-forge/linux-64/setproctitle-1.3.6-py311h9ecbd09_0.conda#99cfa8d13e51b9ae1a2670231101c0d5 +https://conda.anaconda.org/conda-forge/linux-64/ray-core-2.44.1-py311h4831e01_0.conda#aa57b15de6850395ae8da5f1332d88d6 +https://conda.anaconda.org/conda-forge/noarch/smart_open-7.1.0-pyhd8ed1ab_0.conda#a20e42d17e69d364cfb756ac780b0ff1 +https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda#8d88f4a2242e6b96f9ecff9a6a05b2f1 +https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.1-pyhd8ed1ab_0.conda#cd28135cfaf1f1a162d6c5af37f7fccb +https://conda.anaconda.org/conda-forge/linux-64/ray-default-2.44.1-py311h48098de_0.conda#0fdbc81541f01a12215906dde020fd7f +https://conda.anaconda.org/conda-forge/noarch/tensorboardx-2.6.2.2-pyhd8ed1ab_1.conda#12edb3e9c07f9fac457d9acb27eb19c8 +https://conda.anaconda.org/conda-forge/linux-64/ray-tune-2.44.1-py311h38be061_0.conda#d984d0fb86ae53dd611643df7614403e +https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.0-pyhd8ed1ab_0.conda#3d7257f0a61c9aa4ffa3e324a887416b +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda#9d64911b31d57ca443e9f1e36b04385f +https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.6.1-py311h57cc02b_0.conda#5a9d7250b6a2ffdd223c514bc70242ba +https://conda.anaconda.org/conda-forge/noarch/autogluon.core-1.3.0-pyha770c72_0.conda#c7ea5f83ca20b0ffdc0047d232ec667c +https://conda.anaconda.org/conda-forge/noarch/autogluon.features-1.3.0-pyhd8ed1ab_0.conda#2f482212ee9660022d6e422ddcdec479 +https://conda.anaconda.org/conda-forge/noarch/chardet-5.2.0-pyhd8ed1ab_3.conda#56bfd153e523d9b9d05e4cf3c1cfe01c +https://conda.anaconda.org/conda-forge/noarch/binaryornot-0.4.4-pyhd8ed1ab_2.conda#67692f4269b341f88f80896ec835d1a9 +https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda#23b4ba5619c4752976eb7ba1f5acb7e8 +https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda#a4059bc12930bddeb41aef71537ffaed +https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda#592132998493b3ff25fd7479396e8351 +https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda#fee3164ac23dfca50cfcc8b85ddefb81 +https://conda.anaconda.org/conda-forge/noarch/rich-14.0.0-pyh29332c3_0.conda#202f08242192ce3ed8bdb439ba40c0fe +https://conda.anaconda.org/conda-forge/noarch/cookiecutter-2.6.0-pyhd8ed1ab_1.conda#d18cb8ec1efa4cc38a0434bfa53e20d3 +https://conda.anaconda.org/conda-forge/noarch/evaluate-0.4.1-pyhd8ed1ab_0.conda#ea228540526db4dde8ad8f2309bc1d40 +https://conda.anaconda.org/conda-forge/noarch/lightning-utilities-0.14.3-pyhd8ed1ab_0.conda#fc7847be22ca2fc44fa94de0bd75e94a +https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.7.1-pyhd8ed1ab_0.conda#de4c98760a15583a95f9c3031745a31c +https://conda.anaconda.org/conda-forge/noarch/pytorch-lightning-2.5.1.post0-pyh2a12c56_0.conda#76c4f85236a4e84eac96446b6086b54f +https://conda.anaconda.org/conda-forge/noarch/lightning-2.5.1.post0-pyhd8ed1ab_0.conda#3fbe03652bd90a6af7f7460cfcda205d +https://conda.anaconda.org/conda-forge/noarch/gdown-5.2.0-pyhd8ed1ab_1.conda#0b2ab6adce98f0dcf1dfd3f11343e5cd +https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda#4f43dbcfacd3cc9a183dd3a48b94d3c0 +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py311hf886319_10.conda#90c0c6f0d4d58d2383373e3ab7bc4d19 +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda#e977b7be5ac26c55825e121e00b90493 +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-h074ec65_10.conda#4b2fa94e6d42231ffee6707dfe578915 +https://conda.anaconda.org/conda-forge/noarch/nlpaug-1.1.11-pyhd8ed1ab_2.conda#c96d8edc5c7f8d48af1f10b24b227027 +https://conda.anaconda.org/conda-forge/noarch/nltk-3.9.1-pyhd8ed1ab_1.conda#85fd21c82d46f871d3820c17270e575d +https://conda.anaconda.org/conda-forge/noarch/omegaconf-2.3.0-pyhd8ed1ab_0.conda#23cc056834cab53849b91f78d6ee3ea0 +https://conda.anaconda.org/conda-forge/noarch/markdown-3.8-pyhd8ed1ab_0.conda#016103aab3842859e6702d7f8bbb0a54 +https://conda.anaconda.org/conda-forge/noarch/ordered-set-4.1.0-pyhd8ed1ab_1.conda#a130daf1699f927040956d3378baf0f2 +https://conda.anaconda.org/conda-forge/noarch/model-index-0.1.11-pyhd8ed1ab_1.conda#0971a0282c986b0a23a6cf5ad28d3f3f +https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda#75cb7132eb58d97896e173ef12ac9986 +https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda#04e691b9fadd93a8a9fad87a81d4fd8f +https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda#959484a66b4b76befcddc4fa97c95567 +https://conda.anaconda.org/conda-forge/noarch/openmim-0.3.7-pyhd8ed1ab_1.conda#0a95bd2f70d80433e328d03583d022b2 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.36-h5888daf_0.conda#de9cd5bca9e4918527b9b72b6e2e1409 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.108-h159eef7_0.conda#3c872a5aa802ee5c645e09d4c5d38585 +https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda#d8d7293c5b37f39b2ac32940621c6592 +https://conda.anaconda.org/conda-forge/linux-64/poppler-25.02.0-hea79843_2.conda#3d8f79a46eeac3059ed989fb51627a99 +https://conda.anaconda.org/conda-forge/noarch/pdf2image-1.17.0-pyhd8ed1ab_1.conda#1a5dbc1be5b125b16a23d20a99526fb2 +https://conda.anaconda.org/conda-forge/noarch/pytesseract-0.3.13-pyhd8ed1ab_1.conda#513b2f288a034d56472298838ced7812 +https://conda.anaconda.org/conda-forge/noarch/pytorch-metric-learning-2.8.1-pyh101cb37_1.conda#99c2eca68c2c695cbba4f8248bd8bd58 +https://conda.anaconda.org/conda-forge/noarch/imageio-2.37.0-pyhfb79c49_0.conda#b5577bc2212219566578fd5af9993af6 +https://conda.anaconda.org/conda-forge/noarch/lazy-loader-0.4-pyhd8ed1ab_2.conda#d10d9393680734a8febc4b362a4c94f2 +https://conda.anaconda.org/conda-forge/noarch/lazy_loader-0.4-pyhd8ed1ab_2.conda#bb0230917e2473c77d615104dbe8a49d +https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.8.0-py311h9f3472d_0.conda#17334e5c12abdf2db6b25bd4187cd3e4 +https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda#2c2fae981fd2afd00812c92ac47d023d +https://conda.anaconda.org/conda-forge/linux-64/brunsli-0.1-h9c3ff4c_0.tar.bz2#c1ac6229d0bfd14f8354ff9ad2a26cad +https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.2.4-h7955e40_0.conda#c8a816dbf59eb8ba6346a8f10014b302 +https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.15.2-h3122c55_1.conda#2bc8d76acd818d7e79229f5157d5c156 +https://conda.anaconda.org/conda-forge/linux-64/charls-2.4.2-h59595ed_0.conda#4336bd67920dd504cd8c6761d6a99645 +https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda#3bf7b9fd5a7136126e0234db4b87c8b6 +https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda#5aeabe88534ea4169d4c49998f293d6c +https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.3-h59595ed_0.conda#5e97e271911b8b2001a8b71860c32faa +https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda#418c6ca5929a611cbd69204907a83995 +https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda#77d9955b4abddb811cb8ab1aa7d743e4 +https://conda.anaconda.org/conda-forge/linux-64/svt-av1-3.0.2-h5888daf_0.conda#0096882bd623e6cc09e8bf920fc8fb47 +https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.2.1-hbb36593_2.conda#971387a27e61235b97cacb440a37e991 +https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.2.0-hf40a0c7_0.conda#2f433d593a66044c3f163cb25f0a09de +https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.1-h7b0646d_1.conda#959fc2b6c0df7883e070b3fe525219a5 +https://conda.anaconda.org/conda-forge/linux-64/libzopfli-1.0.3-h9c3ff4c_0.tar.bz2#c66fe2d123249af7651ebde8984c51c2 +https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h5888daf_2.conda#e0409515c467b87176b070bff5d9442e +https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2024.12.30-py311h9971d45_0.conda#0295a373ce22edd96d833d59a45840c9 +https://conda.anaconda.org/conda-forge/noarch/tifffile-2025.3.30-pyhd8ed1ab_0.conda#14f46147fae19bb867f82a787c7059e9 +https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.25.2-py311h7db5c69_0.conda#abb598418b5e26a721751432bb3c6450 +https://conda.anaconda.org/conda-forge/noarch/seqeval-1.2.2-pyhd3deb0d_0.tar.bz2#d4436c8a8b9fb6d60fe4e7b9f097f9bb +https://conda.anaconda.org/conda-forge/linux-64/tensorboard-data-server-0.7.0-py311hafd3f86_2.conda#599c214c5dd150c9dd716db4cdbedf2e +https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.3-pyhd8ed1ab_1.conda#0a9b57c159d56b508613cc39022c1b9e +https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.18.0-pyhd8ed1ab_1.conda#90a735b377427589728e588b5241a253 +https://conda.anaconda.org/conda-forge/linux-64/libde265-1.0.15-h00ab1b0_0.conda#407fee7a5d7ab2dca12c9ca7f62310ad +https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2#e7f6ed84d4623d52ee581325c1587a6b +https://conda.anaconda.org/conda-forge/linux-64/libheif-1.19.7-gpl_hc18d805_100.conda#1db2693fa6a50bef58da2df97c5204cb +https://conda.anaconda.org/conda-forge/linux-64/torchvision-extra-decoders-0.0.2-py311h896098c_2.conda#aaebf7b5393e30ed452de175834ff032 +https://conda.anaconda.org/conda-forge/linux-64/torchvision-0.21.0-cpu_py311_hfa9c634_1.conda#af5a1b1a68a53f27bc3c87ab7c582e6d +https://conda.anaconda.org/conda-forge/noarch/timm-1.0.3-pyhd8ed1ab_0.conda#03f52b5f829d470a4ff20441e92e283e +https://conda.anaconda.org/conda-forge/noarch/autogluon.multimodal-1.3.0-pyha770c72_0.conda#dcc6cdb0e88fe1190a2a0513499d7c5c +https://conda.anaconda.org/conda-forge/noarch/plotly-6.0.1-pyhd8ed1ab_0.conda#37ce02c899ff42ac5c554257b1a5906e +https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2#a089d06164afd2d511347d3f87214e0b +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.1-h4833e2c_1.conda#418de18c9b79a3d8583d90d27e0937c2 +https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda#d4529f4dff3057982a7617c7ac58fde3 +https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda#7c91bfc90672888259675ad2ad28af9c +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.9.2-h65c71a3_0.conda#d045b1d878031eb497cab44e6392b1df +https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda#a37843723437ba75f42c9270ffe800b1 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda#d3c295b50f092ab525ffe3c2aa4b7413 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda#2ccd714aa2242315acaf0a67faea780b +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda#b5fcc7172d22516e1f965490e65e33a4 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda#5e2eb9bf77394fc2e5918beefec9f9ab +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda#2de7f99d6581a4a7adbff607b5c278ca +https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda#67d00e9cfe751cfe581726c5eff7c184 +https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda#4d8df0b0db060d33c9a702ada998a8fe +https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda#68fc66282364981589ef36868b1a7c78 +https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda#df7835d2c73cd1889d377cfd6694ada4 +https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.20.3-pyh91182bf_2.conda#f822f0e13849c2283f72ec4aa120eeaa +https://conda.anaconda.org/conda-forge/linux-64/catboost-1.2.7-cpu_py311haf5cfbf_1.conda#49c6d88360e08d6a55d9462c674d1b75 +https://conda.anaconda.org/conda-forge/noarch/fastcore-1.7.20-pyh29332c3_0.conda#1368b5a054df51c0b6e82eed53a63dd3 +https://conda.anaconda.org/conda-forge/noarch/fastprogress-1.0.3-pyhd8ed1ab_1.conda#a1f997959ce49fe4d554a8ae6d3ef494 +https://conda.anaconda.org/conda-forge/noarch/fastdownload-0.0.7-pyhd8ed1ab_1.conda#fe49ec81a00e5bd65a7ad9a0a795abc0 +https://conda.anaconda.org/conda-forge/linux-64/catalogue-2.0.10-py311h38be061_1.conda#01f0647169060bd35e1e47789ee678f4 +https://conda.anaconda.org/conda-forge/linux-64/cymem-2.0.11-py311hfdbb021_0.conda#5658cadb009abad2b8ce67e44dbafd4a +https://conda.anaconda.org/conda-forge/linux-64/marisa-trie-1.2.1-py311hfdbb021_0.conda#aafc68438565850cc796b0fc100f227c +https://conda.anaconda.org/conda-forge/noarch/language-data-1.3.0-pyhff2d567_0.conda#03791f1242445cf08900118f5bea86e6 +https://conda.anaconda.org/conda-forge/noarch/langcodes-3.4.1-pyhd8ed1ab_1.conda#50727f5554dc6436399c9c1760263acc +https://conda.anaconda.org/conda-forge/linux-64/murmurhash-1.0.10-py311hfdbb021_2.conda#605ecc70192cf281a6fd0024076828e9 +https://conda.anaconda.org/conda-forge/linux-64/preshed-3.0.9-py311hfdbb021_2.conda#12656f774fda7fd79a7c28c20e694a87 +https://conda.anaconda.org/conda-forge/noarch/spacy-legacy-3.0.12-pyhd8ed1ab_0.conda#bbe68ced56ea855f0223c329f1fd2fc0 +https://conda.anaconda.org/conda-forge/noarch/spacy-loggers-1.0.5-pyhd8ed1ab_0.conda#017fa97ac8c29416983dc9e67b27f6c8 +https://conda.anaconda.org/conda-forge/linux-64/ujson-5.10.0-py311hfdbb021_1.conda#273cf8bedf58f24aec8d960831f89c5a +https://conda.anaconda.org/conda-forge/linux-64/srsly-2.5.1-py311hfdbb021_1.conda#522ceb699dd626dd074493b9e489018e +https://conda.anaconda.org/conda-forge/noarch/confection-0.1.5-pyhecae5ae_0.conda#cb7c903ea9e763e1e026d8633ae81964 +https://conda.anaconda.org/conda-forge/linux-64/cython-blis-1.0.1-py311h9f3472d_0.conda#ad8c4f7c01b7db7e83b76c16c3790ed4 +https://conda.anaconda.org/conda-forge/noarch/wasabi-1.1.3-pyhd8ed1ab_1.conda#fa76741f59d973f2e07d810ee124cb25 +https://conda.anaconda.org/conda-forge/linux-64/thinc-8.3.2-py311h5b7b71f_1.conda#c81a765e7078b6e06d98da248f6dab2f +https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda#7c3c2a0f3ebdea2bbc35538d162b43bf +https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.3-pyh29332c3_0.conda#20c0f2ae932004d7118c172eeb035cea +https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.3-h1a15894_0.conda#120216d3a2e51dfbb87bbba173ebf210 +https://conda.anaconda.org/conda-forge/noarch/typer-0.15.3-pyhf21524f_0.conda#b4bed8eb8dd4fe076f436e5506d31673 +https://conda.anaconda.org/conda-forge/noarch/cloudpathlib-0.21.0-pyhd8ed1ab_1.conda#c68ff3411dea32b12bc21be19b54a92f +https://conda.anaconda.org/conda-forge/noarch/smart-open-7.1.0-hd8ed1ab_0.conda#021f83968041a87ad9f02413267fe97c +https://conda.anaconda.org/conda-forge/noarch/weasel-0.4.1-pyhd8ed1ab_2.conda#c909d5a153ce7e0af0ff051b851dd38a +https://conda.anaconda.org/conda-forge/linux-64/spacy-3.8.5-py311h5b7b71f_0.conda#39824c81d3a2b391377c39255266b3aa +https://conda.anaconda.org/conda-forge/noarch/fastai-2.7.19-pyhd8ed1ab_0.conda#a03c6c44b8e72967de1ed7ecec3c90b8 +https://conda.anaconda.org/conda-forge/linux-64/libboost-1.86.0-h6c02f8c_3.conda#eead4e74198698d1c74f06572af753bc +https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda#3ba02cce423fdac1a8582bd6bb189359 +https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.3-hb9d3cd8_0.conda#56f8947aa9d5cf37b0b3d43b83f34192 +https://conda.anaconda.org/conda-forge/linux-64/liblightgbm-4.6.0-cpu_h2211129_1.conda#d06d38fd07d8d8bc316af28719d7c1bf +https://conda.anaconda.org/conda-forge/noarch/lightgbm-4.6.0-cpu_py_1.conda#432d1708572d0cfa28d7b080c16e3708 +https://conda.anaconda.org/conda-forge/linux-64/libxgboost-2.1.4-cpu_h97e353d_2.conda#35c3f410cf4a9f010b47ed4382d7ee3c +https://conda.anaconda.org/conda-forge/noarch/py-xgboost-2.1.4-cpu_pyhf5c67e3_2.conda#d1ff3691bce31b0ae64840e22549b555 +https://conda.anaconda.org/conda-forge/noarch/xgboost-2.1.4-cpu_pyhc1a9e11_2.conda#7e87579f3c6d0ff91ab9709c5734f9b9 +https://conda.anaconda.org/conda-forge/noarch/autogluon.tabular-1.3.0-pyha770c72_0.conda#bba7df1798387fc33d61457aa56950ba +https://conda.anaconda.org/conda-forge/linux-64/coreforecast-0.0.16-py311hd18a35c_0.conda#507f74e2805e29ff6fa9fda60185e1e4 +https://conda.anaconda.org/conda-forge/noarch/fugue-0.9.1-pyhd8ed1ab_1.conda#e984965e8393d48885c7788d28b703ae +https://conda.anaconda.org/conda-forge/noarch/gluonts-0.16.1-pyhd8ed1ab_1.conda#d9ec21c66a1523862183f9e4b18d8c9a +https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.44.0-py311h9c9ff8c_1.conda#eb6be2d03a0f5b259ae00427a6cb1b73 +https://conda.anaconda.org/conda-forge/linux-64/numba-0.61.2-py311h4e1c48f_0.conda#70097c5dfd0217b0400277c04fe3613e +https://conda.anaconda.org/conda-forge/noarch/colorlog-6.9.0-pyh707e725_1.conda#f00fc375bd02bdbbf791f9fe26ae96ec +https://conda.anaconda.org/conda-forge/noarch/optuna-4.3.0-pyhd8ed1ab_0.conda#b1ca426b395871b2a35217f8b0d36bb2 +https://conda.anaconda.org/conda-forge/noarch/utilsforecast-0.2.10-pyhff2d567_0.conda#c7a2253c7469db251a63835b2e1e2bb1 +https://conda.anaconda.org/conda-forge/noarch/window-ops-0.0.15-pyhd8ed1ab_1.conda#bedf63535f6367742068563cb3e617cf +https://conda.anaconda.org/conda-forge/noarch/mlforecast-0.13.6-pyhff2d567_0.conda#26c53602ae6fb31a085a7a109757867e +https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda#ee23fabfd0a8c6b8d6f3729b47b2859d +https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.4-py311h9f3472d_0.conda#81e81b5b7a744fcb279e98aa6d2e6683 +https://conda.anaconda.org/conda-forge/linux-64/statsforecast-2.0.1-py311hd18a35c_0.conda#80aecc7631207271d730dc25d6c2ea81 +https://conda.anaconda.org/conda-forge/noarch/autogluon.timeseries-1.3.0-pyhd8ed1ab_0.conda#9054de91241897f88c7de46626f293e8 +https://conda.anaconda.org/conda-forge/noarch/autogluon-1.3.0-pyhd8ed1ab_0.conda#dcd2176887190325eb9208c43bafb39e +https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.12.1-pyhd8ed1ab_1.conda#e895db5e6cee923018cbb1656c8ca7fa +https://conda.anaconda.org/conda-forge/noarch/autopep8-2.0.4-pyhd8ed1ab_0.conda#1053857605b5139c8f9818a029a71913 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda#ad100d215fad890ab0ee10418f36876f +https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda#2f1f99b13b9d2a03570705030a0b3e7c +https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda#7c9449eac5975ef2d7753da262a72707 +https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.51-hd8ed1ab_0.conda#1e61ab85dd7c60e5e73d853ea035dc29 +https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda#801dbf535ec26508fac6d4b24adfb76e +https://conda.anaconda.org/conda-forge/noarch/notebook-7.4.2-pyhd8ed1ab_0.conda#59a96e10c24dd3407ff3366e46a2f5b3 +https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda#9453512288d20847de4356327d0e1282 +https://conda.anaconda.org/conda-forge/noarch/hdijupyterutils-0.22.0-pyhd8ed1ab_2.conda#9e53a605d951dce06c797572d7d65f20 +https://conda.anaconda.org/conda-forge/noarch/autovizwidget-0.22.0-pyhd8ed1ab_2.conda#a2216a11b7af64477999153fbc42dbbd +https://conda.anaconda.org/conda-forge/noarch/nose-1.3.7-py_1006.tar.bz2#382019d5f8e9362ef6f60a8d4e7bce8f +https://conda.anaconda.org/conda-forge/noarch/aws-glue-sessions-1.0.9-pyhd8ed1ab_0.conda#1648d658fe9e03258afd221ec6186de3 +https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.3.0-py311h9e33e62_0.conda#f4bf34159bdc05e00ec3ff1335539671 +https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda#42834439227a4551b939beeeb8a4b085 +https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.4.0-pyhd8ed1ab_0.conda#5663fa346821cd06dc1ece2c2600be2c +https://conda.anaconda.org/conda-forge/noarch/bokeh-3.7.2-pyhd8ed1ab_1.conda#2f31c581e29bdb830ec77e112f3776ae +https://conda.anaconda.org/conda-forge/noarch/boltons-24.0.0-pyhd8ed1ab_1.conda#d88c38e66d85ecc9c7e2c4110676bbf4 +https://conda.anaconda.org/conda-forge/linux-64/fmt-11.1.4-h07f6e7f_1.conda#288a90e722fd7377448b00b2cddcb90d +https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-hd590300_1001.conda#ec7398d21e2651e0dcb0044d03b9a339 +https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.7.7-h75ea233_4.conda#b80309616f188ac77c4740acba40f796 +https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.32-h7955e40_2.conda#5339dae097a6e1ab631adb3cb04b8f7e +https://conda.anaconda.org/conda-forge/linux-64/reproc-14.2.5.post0-hb9d3cd8_0.conda#69fbc0a9e42eb5fe6733d2d60d818822 +https://conda.anaconda.org/conda-forge/linux-64/reproc-cpp-14.2.5.post0-h5888daf_0.conda#828302fca535f9cfeb598d5f7c204323 +https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h3f2d84a_0.conda#92b90f5f7a322e74468bb4909c7354b5 +https://conda.anaconda.org/conda-forge/linux-64/libmamba-1.5.12-he771761_1.conda#b7a1526e72ca6f62995b235cb0bfb04f +https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-4-hd8ed1ab_3.tar.bz2#878f923dd6acc8aeb47a75da6c4098be +https://conda.anaconda.org/conda-forge/linux-64/libmambapy-1.5.12-py311h5f9230d_1.conda#4df585e4b071c5920a84c131817ded7f +https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-24.9.0-pyhd8ed1ab_0.conda#45378d089c5f72c9c0d63d58414c645d +https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_2.conda#ca02de88df1cc3cfc8f24766ff50cb3c +https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_1.conda#027138b89fbe94c3870eee49bb2e1da6 +https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.4.0-pyh7900ff3_2.conda#32c158f481b4fd7630c565030f7bc482 +https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda#0a2014fd9860f8b1eaa0b1f3d3771a08 +https://conda.anaconda.org/conda-forge/linux-64/frozendict-2.4.6-py311h9ecbd09_0.conda#5ed089614b88920f8cc673fe3bc34558 +https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.2.0-py311h38be061_0.conda#56b688f5333037364ddf9c5cbdd4d672 +https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda#e9dcbce5f45f9ee500e728ae58b605b6 +https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py311h9ecbd09_2.conda#65a6d37c5a2868d5605cf2df3ea0236e +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py311h9ecbd09_1.conda#e56869fca385961323e43783b89bef66 +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.10-py311h9ecbd09_0.conda#a3188715e28c25f1404b84c702e6fdf4 +https://conda.anaconda.org/conda-forge/noarch/truststore-0.10.1-pyh29332c3_0.conda#373a72aeffd8a5d93652ef1235062252 +https://conda.anaconda.org/conda-forge/linux-64/conda-24.11.3-py311h38be061_0.conda#1bd98538e60d0381d776996e771abf84 +https://conda.anaconda.org/conda-forge/noarch/contextlib2-21.6.0-pyhd8ed1ab_1.conda#4de17d73a4afd4ce03b370fe4480100f +https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.0-py311h2dc5d0c_0.conda#37bc439a94beeb29914baa5b4987ebd5 +https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda#7ac5f795c15f288984e32add616cdc59 +https://conda.anaconda.org/conda-forge/noarch/flask-3.1.0-pyhd8ed1ab_1.conda#2da939620e3a741f61fc1cb136df66fb +https://conda.anaconda.org/conda-forge/noarch/retrying-1.3.4-pyhd8ed1ab_0.conda#d9c8cef727d60fa29fd485ce79dd745a +https://conda.anaconda.org/conda-forge/noarch/dash-2.18.1-pyhd8ed1ab_0.conda#07f061eda0489f827c821e995cd1a7a4 +https://conda.anaconda.org/conda-forge/noarch/databricks-sdk-0.52.0-pyhd8ed1ab_0.conda#efac78ef7f25825db2e90bd575cc93c7 +https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda#0cef44b1754ae4d6924ac0eef6b9fdbe +https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda#5fbd60d61d21b4bd2f9d7a48fe100418 +https://conda.anaconda.org/conda-forge/linux-64/docker-cli-27.5.1-hd0c01bc_0.conda#82fab5aba1605dd091a0a503900dd3c8 +https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.5.0-py311h9ecbd09_4.conda#522059f3c55e201aa5f189fe5276f83f +https://conda.anaconda.org/conda-forge/noarch/paramiko-3.5.1-pyhd8ed1ab_0.conda#4e6bea7eee94bb9d8a599385215719f9 +https://conda.anaconda.org/conda-forge/noarch/pywin32-on-windows-0.1.0-pyh1179c8e_3.tar.bz2#2807a0becd1d986fe1ef9b7f8135f215 +https://conda.anaconda.org/conda-forge/noarch/docker-py-7.1.0-pyhd8ed1ab_1.conda#07ce73ca6f6c1a1df5d498679fc52d9e +https://conda.anaconda.org/conda-forge/noarch/docstring-to-markdown-0.17-pyhe01879c_0.conda#66cb4c80ff13d7971adba487a5d12e74 +https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda#da16dd3b0b71339060cd44cb7110ddf9 +https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda#0794f8807ff2c6f020422cacb1bd7bfa +https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda#3366592d3c219f2731721f11bc93755c +https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda#4ba15ae9388b67d09782798347481f69 +https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda#c16a94f3d0c6a2a495b3071cff3f598d +https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.2-pyh31011fe_0.conda#7e9f164470d693a5d2537c6b2ce1d9ea +https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py311h9ecbd09_1.conda#66890e34ed6a9bd84f1c189043a928f8 +https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.5-py311h9e33e62_0.conda#896e5c200fddca2b878a0113a58345f9 +https://conda.anaconda.org/conda-forge/linux-64/websockets-15.0.1-py311h9ecbd09_0.conda#208bf8e44ef767b25a51ba1beef0613c +https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.2-h31011fe_0.conda#62676324fa57eb76b542a6a2e85d35e2 +https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda#d960e0ea9e1c561aa928f6c4439f04c7 +https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda#a28c984e0429aff3ab7386f7de56de6f +https://conda.anaconda.org/conda-forge/noarch/starlette-0.46.2-pyh81abbef_0.conda#36ec80c2b37e52760ab41be7c2bd1fd3 +https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.12-pyh29332c3_0.conda#4bc12ece07c8c717e19fd790bfec100d +https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda#827064ddfe0de2917fb29f1da4f8f533 +https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.2.0-pyhd8ed1ab_1.conda#4731450b2c059fc567696242bcb7fc05 +https://conda.anaconda.org/conda-forge/noarch/flake8-7.1.2-pyhd8ed1ab_0.conda#5811f74de55030cb5f4054ab9a846139 +https://conda.anaconda.org/conda-forge/linux-64/flatbuffers-24.12.23-h8f4948b_0.conda#db383f9fb349481841ed26f18d790058 +https://conda.anaconda.org/conda-forge/noarch/gast-0.6.0-pyhd8ed1ab_0.conda#3fb76e88cbe6f96dfdaff277268bded9 +https://conda.anaconda.org/conda-forge/noarch/git-remote-codecommit-1.16-pyhd8ed1ab_0.conda#c04f2d06a3f0e3a74c8c85b7b84b4e8f +https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda#87f47a78808baf2fa1ea9c315a1e48f1 +https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda#7c14f3706e099f8fcd47af2d494616cc +https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.44-pyhff2d567_0.conda#140a4e944f7488467872e562a2a52789 +https://conda.anaconda.org/conda-forge/noarch/google-pasta-0.2.0-pyhd8ed1ab_2.conda#005b9749218cb8c9e94ac2a77ca3c8c0 +https://conda.anaconda.org/conda-forge/noarch/graphql-core-3.2.6-pyh29332c3_0.conda#dc604341f71b370f8a4a0a3b2996cd99 +https://conda.anaconda.org/conda-forge/noarch/graphql-relay-3.2.0-pyhd8ed1ab_1.conda#154dbffd0db14585c9314bc771a87a6e +https://conda.anaconda.org/conda-forge/noarch/graphene-3.4.3-pyhd8ed1ab_1.conda#64be7816cf6074a3533c3f23ce2c316e +https://conda.anaconda.org/conda-forge/linux-64/gunicorn-23.0.0-py311h38be061_1.conda#e5ddac80dea64e38ed9559cde97d5222 +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h2d575fe_101.conda#d1f61f912e1968a8ac9834b62fde008d +https://conda.anaconda.org/conda-forge/linux-64/h5py-3.13.0-nompi_py311h38436b4_101.conda#0a24ff81763ff208d8485354cb9d347e +https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.10.0-hd8ed1ab_0.conda#c063ddbb9908499fd4f20b31dc67065a +https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda#6837f3eff7dcea42ecd714ce1ac2b108 +https://conda.anaconda.org/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_1.conda#c25d1a27b791dab1797832aafd6a3e9a +https://conda.anaconda.org/conda-forge/noarch/jupyter-activity-monitor-extension-0.3.1-pyhd8ed1ab_1.conda#859116fcc3082864e6271322a7a776b3 +https://conda.anaconda.org/conda-forge/noarch/jupyter_server_fileid-0.9.2-pyhd8ed1ab_1.conda#fbf0a308ddc042202a005a1760524823 +https://conda.anaconda.org/conda-forge/linux-64/pycrdt-0.12.15-py311h9e33e62_0.conda#d4f9bcb8be14a6c56a14ef01465a7920 +https://conda.anaconda.org/conda-forge/noarch/jupyter_ydoc-2.1.5-pyhd8ed1ab_0.conda#19b71bcc5f1d0fb7b11262a308af7e04 +https://conda.anaconda.org/conda-forge/noarch/sqlite-anyio-0.2.3-pyhaa4b35c_1.conda#de0f0dddcf1b9c3535de60eb35a5b280 +https://conda.anaconda.org/conda-forge/noarch/pycrdt-websocket-0.15.5-pyhd8ed1ab_0.conda#885aecec5f2a3f7f67e99014c09f9aa0 +https://conda.anaconda.org/conda-forge/noarch/jupyter-collaboration-2.1.5-pyhd8ed1ab_0.conda#5703aca213285d93bf9e12a73d1b010d +https://conda.anaconda.org/conda-forge/noarch/jupyter-dash-0.4.2-pyhd8ed1ab_1.tar.bz2#9c77330b235666f244a7b8dcc7c0955a +https://conda.anaconda.org/conda-forge/noarch/jupyter-server-mathjax-0.2.6-pyhbbac1ac_2.conda#a575ab1d71583644de23e7a9bef9bd27 +https://conda.anaconda.org/conda-forge/noarch/simpervisor-1.0.0-pyhd8ed1ab_1.conda#b12cd36c9eea3f4d2f77daef432bdc00 +https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.4.0-pyhd8ed1ab_1.conda#4696e23d86b32957ff469870e74c8c97 +https://conda.anaconda.org/conda-forge/noarch/nbdime-4.0.2-pyhd8ed1ab_1.conda#5217ed230c497fb71f7bb2de6d7eb27b +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-git-0.51.1-pyhd8ed1ab_0.conda#a35e3bc8b7851a27bacc5d944337bbad +https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.4.0-py311h7db5c69_2.conda#7df028e3691fb3940a03e5ad7938414e +https://conda.anaconda.org/conda-forge/noarch/namex-0.0.9-pyhd8ed1ab_0.conda#15af2284ffe3f4e522244cfe65970084 +https://conda.anaconda.org/conda-forge/noarch/keras-3.9.2-pyh753f3f9_0.conda#202c3f3027796408a509184ca6ce368b +https://conda.anaconda.org/conda-forge/noarch/langchain-aws-0.2.19-pyhd8ed1ab_0.conda#b5b5b1b7e19600aebc5ba02a44236888 +https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.55-h3f2d84a_0.conda#2bd47db5807daade8500ed7ca4c512a4 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda#e55712ff40a054134d51b89afca57dbc +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-devel-1.11.0-hb9d3cd8_2.conda#bf888b6a37286e9ae3749a114f878a6e +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-tools-1.11.0-hb9d3cd8_2.conda#342389a8c9eef45fd8bb144b7522e28d +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.0-ha770c72_2.conda#92aaf7c067a5e63ac7f035bbd8864415 +https://conda.anaconda.org/conda-forge/linux-64/libsecret-0.18.8-h329b89f_2.tar.bz2#9d6698e3c9585a75156d86f7ef229093 +https://conda.anaconda.org/conda-forge/noarch/uc-micro-py-1.0.3-pyhd8ed1ab_1.conda#9c96c9876ba45368a03056ddd0f20431 +https://conda.anaconda.org/conda-forge/noarch/linkify-it-py-2.0.3-pyhd8ed1ab_1.conda#b02fe519b5dc0dc55e7299810fcdfb8e +https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda#af2060041d4f3250a7eb6ab3ec0e549b +https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.32.1-pyhd8ed1ab_0.conda#6682bf849a7d9b2403b84d6e6687c69f +https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.53b1-pyh3cfb1c2_0.conda#79adc3610af5e42a1b2bc5bfd2a9e68a +https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.32.1-pyhd8ed1ab_0.conda#e276c63fbcaac75690b23f0667938c66 +https://conda.anaconda.org/conda-forge/linux-64/mlflow-skinny-2.22.0-h38be061_0.conda#c6cbfbd1779b314de8b59de22dda2eaa +https://conda.anaconda.org/conda-forge/noarch/querystring_parser-1.2.4-pyhd8ed1ab_2.conda#57962900dda3df6b61e545023469c930 +https://conda.anaconda.org/conda-forge/linux-64/mlflow-ui-2.22.0-py311h38be061_0.conda#c5087c0af7750ce37eb5d42125f61c7b +https://conda.anaconda.org/conda-forge/noarch/prometheus_flask_exporter-0.23.2-pyhd8ed1ab_0.conda#9a3090bbdda5cb17e0181bee26672b08 +https://conda.anaconda.org/conda-forge/linux-64/mlflow-2.22.0-h38be061_0.conda#80627888cb9a734fbec74a00f394c8dd +https://conda.anaconda.org/conda-forge/noarch/mock-4.0.3-pyhd8ed1ab_4.tar.bz2#a49a3174d0d7392c115a6608548a907c +https://conda.anaconda.org/conda-forge/linux-64/nodejs-20.18.1-hc55a1b2_0.conda#65d4cfcb1793a3e4f102da0d0ce9ebd8 +https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda#52919815cd35c4e1a0298af658ccda04 +https://conda.anaconda.org/conda-forge/noarch/param-2.2.0-pyhd8ed1ab_0.conda#8bd46aebe85bd9c5f30affd520ab441f +https://conda.anaconda.org/conda-forge/noarch/pyviz_comms-3.0.4-pyhd8ed1ab_1.conda#99b8cf929b145ae310b333ce3496b56b +https://conda.anaconda.org/conda-forge/noarch/panel-1.6.3-pyhd8ed1ab_0.conda#224dd042707104823baa052bec48d883 +https://conda.anaconda.org/conda-forge/noarch/papermill-2.6.0-pyhd8ed1ab_1.conda#a5d72a5d14079f052d4f3bf7fb4593a7 +https://conda.anaconda.org/conda-forge/noarch/pox-0.3.6-pyhd8ed1ab_0.conda#122f0fcc62e320d64227dd7e76ddd363 +https://conda.anaconda.org/conda-forge/noarch/ppft-1.7.7-pyhd8ed1ab_0.conda#ed1b7887e92109b278f62af7ce383078 +https://conda.anaconda.org/conda-forge/noarch/pathos-0.3.4-pyhd8ed1ab_0.conda#eab86b1904a5554bd9c4c72e3b846b71 +https://conda.anaconda.org/conda-forge/noarch/pure-sasl-0.6.2-pyhd8ed1ab_1.conda#44b22b438db0eb8260ab2e938228990a +https://conda.anaconda.org/conda-forge/noarch/py-xgboost-cpu-2.1.4-pyhc1a9e11_2.conda#828e95e1dea0ddc2e2dcc3b1078ca5dd +https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2#4d22a9315e78c6827f806065957d566e +https://conda.anaconda.org/conda-forge/noarch/pydocstyle-6.3.0-pyhd8ed1ab_1.conda#a36aa6e0119331d3280f4bba043314c7 +https://conda.anaconda.org/conda-forge/linux-64/thrift-0.20.0-py311hfdbb021_1.conda#203ba1d307759a4ae38c3133af6dfe0b +https://conda.anaconda.org/conda-forge/noarch/thrift_sasl-0.4.3-pyhd8ed1ab_3.conda#b6c9674b72fdaab53107ffda2da05295 +https://conda.anaconda.org/conda-forge/noarch/pyhive-0.7.0-pyhd8ed1ab_1.conda#4a09b71c0cb5fb78df05783633fb614a +https://conda.anaconda.org/conda-forge/linux-64/pykrb5-0.7.1-py311h9db375c_0.conda#93c84e6eabee585662441376e40f7fdf +https://conda.anaconda.org/conda-forge/noarch/pylint-3.3.7-pyhe01879c_0.conda#fad6b90165dcf39e3ac79de5dbc030a8 +https://conda.anaconda.org/conda-forge/linux-64/pyspnego-0.11.2-py311h38be061_1.conda#b92f78ed507911cd93019e639e55e6a3 +https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda#c3c9316209dec74a705a36797970c6be +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda#b0dd904de08b7db706167240bf37b164 +https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda#1e35d8f975bc0e984a19819aa91c440a +https://conda.anaconda.org/conda-forge/linux-64/python-gssapi-1.9.0-py311h9db375c_1.conda#3d8c106db049280c07b62d4cd482f3cc +https://conda.anaconda.org/conda-forge/noarch/python-lsp-jsonrpc-1.1.2-pyhff2d567_1.conda#1e4f4f40c7ec8a0e220d5b7740c94568 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-base-1.12.2-pyhd8ed1ab_0.conda#6a3af3eb9d1456fc6f88795276fda29a +https://conda.anaconda.org/conda-forge/noarch/pytoolconfig-1.2.5-pyhd8ed1ab_1.conda#27c95573211e4579709a3ea06051d4c1 +https://conda.anaconda.org/conda-forge/noarch/rope-1.13.0-pyhd8ed1ab_1.conda#63d2b105479d226a24d4f5e4115de503 +https://conda.anaconda.org/conda-forge/noarch/whatthepatch-1.0.7-pyhd8ed1ab_1.conda#c0617d951edc1e90c2809ec104865d7c +https://conda.anaconda.org/conda-forge/noarch/yapf-0.43.0-pyhd8ed1ab_1.conda#ad1a2c858e3c14deae4f274580123151 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-1.12.2-pyhff2d567_0.conda#8eeb18da2803dd64c190e07b7b2f9724 +https://conda.anaconda.org/conda-forge/noarch/requests-kerberos-0.15.0-pyh707e725_1.conda#d3d52b35d96df3f3291b7cbc86250184 +https://conda.anaconda.org/conda-forge/linux-64/ripgrep-14.1.1-h8fae777_0.conda#d214df5d083a659f75e7cdafd9500383 +https://conda.anaconda.org/conda-forge/noarch/s3fs-2024.10.0-pyhd8ed1ab_1.conda#589f046bbc8577f93826fe922f4e960a +https://conda.anaconda.org/conda-forge/linux-64/sagemaker-code-editor-1.5.0-h3e77e23_3.conda#f8bfa1b21d9bce84dbc5374dacc1331e +https://conda.anaconda.org/conda-forge/noarch/sagemaker-core-1.0.33-pyhd8ed1ab_0.conda#676493394c77e6883c04d4eff598d98d +https://conda.anaconda.org/conda-forge/noarch/sagemaker-headless-execution-driver-0.0.13-pyhd8ed1ab_0.conda#feaec93c21652caac71ed7ecf450cb17 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-emr-extension-0.3.8-pyhd8ed1ab_0.conda#92877af5c95030a39a055ca91fba59e8 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-0.4.2-pyhd8ed1ab_0.conda#3de923bb65a217fa8fe30850856dd0c0 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-kernel-wrapper-0.0.5-pyhd8ed1ab_0.conda#f86c4262c5b3130b830fa802e187f6b4 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-mlflow-0.1.0-pyhd8ed1ab_0.conda#edcfd844c3fe864b800f60f05806fd26 +https://conda.anaconda.org/conda-forge/noarch/schema-0.7.7-pyhd8ed1ab_0.conda#1add6f6b99191efab14f16e6aa9b6461 +https://conda.anaconda.org/conda-forge/noarch/smdebug-rulesconfig-1.0.1-pyhd3deb0d_1.tar.bz2#be253a7939a3e7cf95a043a983cab563 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-python-sdk-2.244.0-pyhff2d567_0.conda#7bad042b9385e2856116a01e233b6b5b +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-1.0.13-pyhd8ed1ab_0.conda#e7e0dde074f3c121ff174c1bb6eb172f +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-sparkmagic-lib-0.1.4-pyhd8ed1ab_0.conda#285ce30db20d88190f1f7fb654f259ec +https://conda.anaconda.org/conda-forge/noarch/sparkmagic-0.21.0-pyhd8ed1ab_0.conda#fe489239f573c2ea018925ddea6d3190 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-analytics-extension-0.1.7-pyhd8ed1ab_0.conda#0291c4b0acd1239dd327d55705e242ee +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-cli-1.0.6-pyhd8ed1ab_0.conda#e6fcb773a77ccb75dec23fd23fc0bb34 +https://conda.anaconda.org/conda-forge/noarch/schedule-1.2.2-pyhd8ed1ab_1.conda#cedcd7606497aff90b91134046d44370 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-dataengineering-extensions-1.0.9-pyh80e38bb_0.conda#0d53e1fc7a8d47de6259260a191f3937 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-dataengineering-sessions-1.0.10-pyhd8ed1ab_0.conda#f7807446a8e972ccdce0db985b984006 +https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda#fd96da444e81f9e6fcaac38590f3dd42 +https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda#62afb877ca2c2b4b6f9ecb37320085b6 +https://conda.anaconda.org/conda-forge/linux-64/supervisor-4.2.5-py311h38be061_3.conda#b19d56c85784c625a17bf2b5805ea22b +https://conda.anaconda.org/conda-forge/noarch/termcolor-3.1.0-pyhd8ed1ab_0.conda#951a99e94afe3d38bfdbd04902fe33b7 +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-base-2.18.0-cpu_py311h50f7602_0.conda#6e34f0d84014b7092b3959dc3c3c2348 +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-estimator-2.18.0-cpu_py311h1adda88_0.conda#deffd021264c0fc9a682ddf9960b2d13 +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-2.18.0-cpu_py311h6ac8430_0.conda#9a03a1ecc590a278d50e1517fbe8f691 +https://conda.anaconda.org/conda-forge/noarch/tf-keras-2.18.0-pyhd8ed1ab_0.conda#46ec057279150f91872d9715fe86243b diff --git a/build_artifacts/v2/v2.7/v2.7.0/cpu.pinned_env.in b/build_artifacts/v2/v2.7/v2.7.0/cpu.pinned_env.in new file mode 100644 index 00000000..1b21e512 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/cpu.pinned_env.in @@ -0,0 +1,7 @@ +conda-forge::libmamba[version='>=1.5.11,<1.6.0'] +conda-forge::dash[version='<=2.18.1'] +conda-forge::evaluate[version='<0.4.2'] +conda-forge::catboost[version='>=1.1.1,<1.3.0',build='*cpu*'] +conda-forge::libsqlite[version='<3.49.0'] +conda-forge::urllib3[version='<2'] +conda-forge::papermill[version='>=2.6.0'] diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/code-editor/code_editor_machine_settings.json b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/code-editor/code_editor_machine_settings.json new file mode 100644 index 00000000..44fb8ef7 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/code-editor/code_editor_machine_settings.json @@ -0,0 +1,4 @@ +{ + "python.terminal.activateEnvironment": false, + "python.defaultInterpreterPath": "/opt/conda/bin/python" +} diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/code-editor/code_editor_user_settings.json b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/code-editor/code_editor_user_settings.json new file mode 100644 index 00000000..ed3ef56a --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/code-editor/code_editor_user_settings.json @@ -0,0 +1,3 @@ +{ + "extensions.autoUpdate": false +} diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/code-editor/extensions.txt b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/code-editor/extensions.txt new file mode 100644 index 00000000..7672e9df --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/code-editor/extensions.txt @@ -0,0 +1,4 @@ +https://open-vsx.org/api/ms-toolsai/jupyter/2024.5.0/file/ms-toolsai.jupyter-2024.5.0.vsix +https://open-vsx.org/api/ms-python/python/2023.20.0/file/ms-python.python-2023.20.0.vsix +https://open-vsx.org/api/amazonwebservices/aws-toolkit-vscode/3.30.0/file/amazonwebservices.aws-toolkit-vscode-3.30.0.vsix +https://open-vsx.org/api/amazonwebservices/amazon-q-vscode/1.58.0/file/amazonwebservices.amazon-q-vscode-1.58.0.vsix diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/conda/.condarc b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/conda/.condarc new file mode 100644 index 00000000..c3616df5 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/conda/.condarc @@ -0,0 +1,6 @@ +envs_dirs: + - ~/.conda/envs + - /opt/conda/envs +pkgs_dirs: + - ~/.conda/pkgs + - /opt/conda/pkgs diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/jupyter/jupyter_server_config.py b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/jupyter/jupyter_server_config.py new file mode 100644 index 00000000..0182cc23 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/jupyter/jupyter_server_config.py @@ -0,0 +1,28 @@ +# Default Jupyter server config +# Note: those config can be overridden by user-level configs. + +c.ServerApp.terminado_settings = {"shell_command": ["/bin/bash"]} +c.ServerApp.tornado_settings = {"compress_response": True} + +# Do not delete files to trash. Instead, permanently delete files. +c.FileContentsManager.delete_to_trash = False + +# Allow deleting non-empty directory via file browser. Related documentation: +# https://github.com/jupyter-server/jupyter_server/blob/main/jupyter_server/services/contents/filemanager.py#L125-L129 +c.FileContentsManager.always_delete_dir = True + +# Enable `allow_hidden` by default, so hidden files are accessible via Jupyter server +# Related documentation: https://jupyterlab.readthedocs.io/en/stable/user/files.html#displaying-hidden-files +c.ContentsManager.allow_hidden = True + +# This will set the LanguageServerManager.extra_node_roots setting if amazon_sagemaker_sql_editor exists in the +# environment. Ignore otherwise, don't fail the JL server start +# Related documentation: https://jupyterlab-lsp.readthedocs.io/en/v3.4.0/Configuring.html +try: + import os + + module = __import__("amazon_sagemaker_sql_editor") + module_location = os.path.dirname(module.__file__) + c.LanguageServerManager.extra_node_roots = [f"{module_location}/sql-language-server"] +except: + pass diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/patches/apply_patches.sh b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/patches/apply_patches.sh new file mode 100755 index 00000000..c4ec7604 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/patches/apply_patches.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +set -eux + +# Check if parameter is provided +if [ $# -ne 1 ]; then + echo "Usage: $0 [smus|studio-ai]" + exit 1 +fi + +# Validate parameter +case "$1" in + "smus") + PATCH_DIR="/etc/patches/smus" + ;; + "studio-ai") + PATCH_DIR="/etc/patches/studio-ai" + ;; + *) + echo "Error: Parameter must be either 'smus' or 'studio-ai'" + exit 1 + ;; +esac + +# Check if patch directory exists +if [ ! -d "$PATCH_DIR" ]; then + echo "Error: Patch directory $PATCH_DIR does not exist" + exit 1 +fi + +# Patch files can be generated via "diff -u /path/to/original_file /path/to/new_file > XXX_bad_package.patch" +# See https://www.thegeekstuff.com/2014/12/patch-command-examples/ +for PATCHFILE in "$PATCH_DIR"/*.patch; do + [ -f "$PATCHFILE" ] || continue + echo "Applying $PATCHFILE" + (cd "/opt/conda" && patch --strip=3 < "$PATCHFILE") +done diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/patches/smus/0001-sparkmagic.patch b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/patches/smus/0001-sparkmagic.patch new file mode 100644 index 00000000..df0d755a --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/patches/smus/0001-sparkmagic.patch @@ -0,0 +1,10 @@ +--- /opt/conda/lib/python3.11/site-packages/sparkmagic/livyclientlib/command.py ++++ /opt/conda/lib/python3.11/site-packages/sparkmagic/livyclientlib/command.py +@@ -54,6 +54,7 @@ + try: + session.wait_for_idle() + data = {"code": self.code} ++ data["kind"] = session.kind + response = session.http_client.post_statement(session.id, data) + statement_id = response["id"] + output = self._get_statement_output(session, statement_id) diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/patches/smus/0002-sparkmagic-override-info-table.patch b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/patches/smus/0002-sparkmagic-override-info-table.patch new file mode 100644 index 00000000..a868a83e --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/patches/smus/0002-sparkmagic-override-info-table.patch @@ -0,0 +1,24 @@ +--- /opt/conda/lib/python3.11/site-packages/sparkmagic/utils/utils.py ++++ /opt/conda/lib/python3.11/site-packages/sparkmagic/utils/utils.py +@@ -94,15 +94,12 @@ + + + def get_sessions_info_html(info_sessions, current_session_id): +- html = ( +- """ +-""" +- + "".join( +- [session.get_row_html(current_session_id) for session in info_sessions] +- ) +- + "
IDYARN Application IDKindStateSpark UIDriver logUserCurrent session?
" +- ) +- ++ current_session = next((session for session in info_sessions if session.id == current_session_id), None) ++ spark_ui_url = current_session.get_spark_ui_url() ++ driver_log_url = current_session.get_driver_log_url() ++ ++ from sagemaker_studio_dataengineering_sessions.sagemaker_base_session_manager.common.debugging_utils import get_sessions_info_html ++ html = get_sessions_info_html(current_session.get_app_id(), spark_ui_url, driver_log_url) + return html + + diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/patches/smus/0003-fix-ipython-display.patch b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/patches/smus/0003-fix-ipython-display.patch new file mode 100644 index 00000000..c0c3cdd8 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/patches/smus/0003-fix-ipython-display.patch @@ -0,0 +1,7 @@ +--- /opt/conda/lib/python3.11/site-packages/hdijupyterutils/ipythondisplay.py ++++ /opt/conda/lib/python3.11/site-packages/hdijupyterutils/ipythondisplay.py +@@ -1,4 +1,4 @@ +-from IPython.core.display import display, HTML ++from IPython.display import display, HTML + from IPython import get_ipython + import sys \ No newline at end of file diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/patches/smus/0004-fix-boto3-endpoints.patch b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/patches/smus/0004-fix-boto3-endpoints.patch new file mode 100644 index 00000000..94622cf3 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/patches/smus/0004-fix-boto3-endpoints.patch @@ -0,0 +1,12 @@ +--- /opt/conda/lib/python3.11/site-packages/botocore/data/endpoints.json ++++ /opt/conda/lib/python3.11/site-packages/botocore/data/endpoints.json +@@ -5404,6 +5404,9 @@ + "ap-northeast-3" : { + "hostname" : "datazone.ap-northeast-3.api.aws" + }, ++ "ap-south-1" : { ++ "hostname" : "datazone.ap-south-1.api.aws" ++ }, + "ap-south-2" : { + "hostname" : "datazone.ap-south-2.api.aws" + }, diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/git_clone.sh b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/git_clone.sh new file mode 100755 index 00000000..714d687e --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/git_clone.sh @@ -0,0 +1,62 @@ +#!/bin/bash +set -eux + +sourceMetaData=/opt/ml/metadata/resource-metadata.json + +# Extract the required fields from meta data stored in opt/ml/metadata. +dataZoneDomainId=$(jq -r '.AdditionalMetadata.DataZoneDomainId' < $sourceMetaData) +dataZoneUserId=$(jq -r '.AdditionalMetadata.DataZoneUserId' < $sourceMetaData) +dataZoneEndPoint=$(jq -r '.AdditionalMetadata.DataZoneEndpoint' < $sourceMetaData) +dataZoneProjectId=$(jq -r '.AdditionalMetadata.DataZoneProjectId' < $sourceMetaData) + +DEFAULT_DESTINATION_PATH=$HOME/src +DESTINATION_PATH=${1:-$DEFAULT_DESTINATION_PATH} + +echo "Cloning to ${DESTINATION_PATH}" + +# Function to clone the CodeCommit repository +clone_code_commit_repo() { + if [ -d "${DESTINATION_PATH}/.git" ]; then + echo "Repository already exists at ${DESTINATION_PATH}" + else + rm -rf "${DESTINATION_PATH}" + local repoName=$1 + git clone codecommit::$AWS_REGION://$repoName $DESTINATION_PATH + # if the above command exit with nonzero exit code ,delete the partially cloned Repo. + if [ $? -ne 0 ]; then + echo "Git clone of the Project repository has failed. Please refer to the documentation to understand how to fix this." + if [ -d $DESTINATION_PATH ]; then + rm -rf $DESTINATION_PATH + fi + fi + fi +} + +# Get the clone URL for the project +response=$(sagemaker-studio git get-clone-url --domain-id "$dataZoneDomainId" --project-id "$dataZoneProjectId" --profile DomainExecutionRoleCreds) +cloneUrl=$(echo "$response" | jq -r '.cloneUrl') +# Get the project default environment and extract the gitConnectionArn and gitBranchName +getProjectDefaultEnvResponse=$(sagemaker-studio project get-project-default-environment --domain-id "$dataZoneDomainId" --project-id "$dataZoneProjectId" --profile DomainExecutionRoleCreds) +gitConnectionArn=$(echo "$getProjectDefaultEnvResponse" | jq -r '.provisionedResources[] | select(.name=="gitConnectionArn") | .value') +gitBranchName=$(echo "$getProjectDefaultEnvResponse" | jq -r '.provisionedResources[] | select(.name=="gitBranchName") | .value') +dataZoneProjectRepositoryName=$(echo "$getProjectDefaultEnvResponse" | jq -r '.provisionedResources[] | select(.name=="codeRepositoryName") | .value') + + # Check if the cloneUrl is available +if [[ -n "$cloneUrl" ]]; then + # Check if the cloneUrl contains "codeconnections" or "codestar-connections" (For customers created connection before Jun 7th) + if [[ "$cloneUrl" == *"codeconnections"* ]] || [[ "$cloneUrl" == *"codestar-connections"* ]]; then + # Check if the DomainExecutionRoleCreds profile exists in the AWS config file + if grep -q 'DomainExecutionRoleCreds' /home/sagemaker-user/.aws/config; then + /bin/bash /etc/sagemaker-ui/git_config.sh + # Clone the repository using the cloneUrl and gitBranchName + git clone "$cloneUrl" $DESTINATION_PATH -b "$gitBranchName" + fi + else + # Clone the codeCommit repository + clone_code_commit_repo "$dataZoneProjectRepositoryName" + fi +else + # If the cloneUrl is not available, check if the gitConnectionArn is available + # If not available, clone codeCommit repository. + [[ -z "$gitConnectionArn" ]] && clone_code_commit_repo "$dataZoneProjectRepositoryName" +fi diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/git_config.sh b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/git_config.sh new file mode 100644 index 00000000..5f4d61e5 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/git_config.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -eux + +sourceMetaData=/opt/ml/metadata/resource-metadata.json +dataZoneDomainRegion=$(jq -r '.AdditionalMetadata.DataZoneDomainRegion' < $sourceMetaData) + +# Configure Git to use the AWS CodeCommit credential helper with profile DomainExecutionRoleCreds +git config --global credential.helper "!aws --profile DomainExecutionRoleCreds --region $dataZoneDomainRegion codecommit credential-helper --ignore-host-check $@" +git config --global credential.UseHttpPath true diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/jupyter/lab/settings/overrides.json b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/jupyter/lab/settings/overrides.json new file mode 100644 index 00000000..4c84693d --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/jupyter/lab/settings/overrides.json @@ -0,0 +1,5 @@ +{ + "@jupyterlab/apputils-extension:themes": { + "theme": "Amazon SageMaker Unified Studio Dark" + } +} diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/jupyter/lab/settings/page_config.json b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/jupyter/lab/settings/page_config.json new file mode 100644 index 00000000..fe64b8de --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/jupyter/lab/settings/page_config.json @@ -0,0 +1,14 @@ +{ + "disabledExtensions": { + "@jupyterlab/apputils-extension:announcements": true, + "@amzn/sagemaker-jupyterlab-emr-extension": true, + "@amzn/sagemaker-jupyter-scheduler": true, + "@amzn/sagemaker-jupyterlab-extension-common:panorama": true, + "@amzn/sagemaker-jupyterlab-extensions:sessionmanagement": true, + "@amzn/sagemaker-jupyterlab-extensions:spacemenu": true, + "@amzn/amazon_sagemaker_sql_editor": true, + "@sagemaker-studio:EmrCluster": true, + "@jupyterlab/scheduler": true, + "@jupyter/collaboration-extension": true + } +} diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/jupyter/server/jupyter_server_config.py b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/jupyter/server/jupyter_server_config.py new file mode 100644 index 00000000..7ce6e079 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/jupyter/server/jupyter_server_config.py @@ -0,0 +1,30 @@ +import os + +c.ServerApp.terminado_settings = {"shell_command": ["/bin/bash"]} +region = os.environ.get("AWS_REGION") +csp_rule = os.environ.get("JUPYTERSERVER_CSP_RULE") + +c.ServerApp.tornado_settings = {"compress_response": True, "headers": {"Content-Security-Policy": csp_rule}} + +# Do not delete files to trash. Instead, permanently delete files. +c.FileContentsManager.delete_to_trash = False + +# Allow deleting non-empty directory via file browser. Related documentation: +# https://github.com/jupyter-server/jupyter_server/blob/main/jupyter_server/services/contents/filemanager.py#L125-L129 +c.FileContentsManager.always_delete_dir = True + +# Enable `allow_hidden` by default, so hidden files are accessible via Jupyter server +# Related documentation: https://jupyterlab.readthedocs.io/en/stable/user/files.html#displaying-hidden-files +c.ContentsManager.allow_hidden = True + +# This will set the LanguageServerManager.extra_node_roots setting if amazon_sagemaker_sql_editor exists in the +# environment. Ignore otherwise, don't fail the JL server start +# Related documentation: https://jupyterlab-lsp.readthedocs.io/en/v3.4.0/Configuring.html +try: + import os + + module = __import__("amazon_sagemaker_sql_editor") + module_location = os.path.dirname(module.__file__) + c.LanguageServerManager.extra_node_roots = [f"{module_location}/sql-language-server"] +except: + pass diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/kernels/kernel_launchers/python3_kernel_launcher.sh b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/kernels/kernel_launchers/python3_kernel_launcher.sh new file mode 100755 index 00000000..ca1a8fb7 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/kernels/kernel_launchers/python3_kernel_launcher.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +kernel_type=$2 +connection_file=$4 + +if [ ! -e "/opt/ml/metadata/resource-metadata.json" ] && [ -z "$SPARKMAGIC_CONF_DIR" ]; then + export SPARKMAGIC_CONF_DIR="$SM_EXECUTION_INPUT_PATH" +fi + +if [ -n "$SPARKMAGIC_CONF_DIR" ]; then + mkdir -p $SPARKMAGIC_CONF_DIR + config_file_path=${SPARKMAGIC_CONF_DIR}/config.json +else + sparkmagicHomeDir=${HOME}/.sparkmagic + mkdir -p $sparkmagicHomeDir + config_file_path=${sparkmagicHomeDir}/config.json +fi + +if [ ! -f "$config_file_path" ]; then + cat << EOT > "$config_file_path" +{ + "livy_session_startup_timeout_seconds": 180, + "logging_config": { + "version": 1, + "formatters": { + "magicsFormatter": { + "format": "%(asctime)s\t%(levelname)s\t%(message)s", + "datefmt": "" + } + }, + "handlers": { + "magicsHandler": { + "class": "sagemaker_studio_dataengineering_sessions.sagemaker_base_session_manager.common.logger_utils.SessionManagerFileHandler", + "formatter": "magicsFormatter", + "file_name": "spark_magic" + } + }, + "loggers": { + "magicsLogger": { + "handlers": ["magicsHandler"], + "level": "INFO", + "propagate": 0 + } + } + } +} +EOT +else + sed -i 's/\"sagemaker_base_session_manager/\"sagemaker_studio_dataengineering_sessions.sagemaker_base_session_manager/g' $config_file_path +fi +exec /opt/conda/bin/python -m ${kernel_type} -f ${connection_file} diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/kernels/python3/kernel.json b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/kernels/python3/kernel.json new file mode 100644 index 00000000..7db91492 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/kernels/python3/kernel.json @@ -0,0 +1,14 @@ +{ + "argv": [ + "/opt/conda/share/jupyter/kernels/kernel_launchers/python3_kernel_launcher.sh", + "-m", + "ipykernel_launcher", + "-f", + "{connection_file}" + ], + "display_name": "Python 3 (ipykernel)", + "language": "python", + "metadata": { + "debugger": true + } +} diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/libmgmt/install-lib.sh b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/libmgmt/install-lib.sh new file mode 100755 index 00000000..06f37ea0 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/libmgmt/install-lib.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -eux + +# Check if the .libs.json file exists +if [ -e $1/.libs.json ]; then + lib_config_json=`cat $1/.libs.json` + + apply_change_to_space=`echo $lib_config_json | jq -r '.ApplyChangeToSpace'` + # Extract conda channels from the config, add `-c ` before each channel and join the strings + conda_channels=`echo $lib_config_json | jq -r '.Python.CondaPackages.Channels | .[]' | sed 's/^/-c /g'` + # Extract conda package spec from the config and join the strings + conda_package=`echo $lib_config_json | jq -r '.Python.CondaPackages.PackageSpecs | .[]'` + + if [ ${apply_change_to_space} == "true" -a -n "$conda_package" ]; then + # if conda package spec exists, install the packages + micromamba install --freeze-installed -y $conda_channels $conda_package + fi +fi \ No newline at end of file diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/sagemaker_ui_post_startup.sh b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/sagemaker_ui_post_startup.sh new file mode 100755 index 00000000..92603dae --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/sagemaker_ui_post_startup.sh @@ -0,0 +1,199 @@ +#!/bin/bash +set -eux + +# Only run the following commands if SAGEMAKER_APP_TYPE_LOWERCASE is jupyterlab +if [ "${SAGEMAKER_APP_TYPE_LOWERCASE}" = "jupyterlab" ]; then + # Override Jupyter AI config file with specific content only for 2.6 + # this is a potential workaround for Q chat issue where the chat does not + # load since it does not pick up the latest config file + NB_USER=sagemaker-user + # Check if Jupyter AI config file exists, override with specific content if so only for 2.6 + # this is a potential workaround for Q chat issue + JUPYTER_AI_CONFIG_PATH=/home/${NB_USER}/.local/share/jupyter/jupyter_ai/config.json + JUPYTER_AI_CONFIG_CONTENT='{ + "model_provider_id": "amazon-q:Q-Developer", + "embeddings_provider_id": null, + "send_with_shift_enter": false, + "fields": {}, + "api_keys": {}, + "completions_model_provider_id": null, + "completions_fields": {}, + "embeddings_fields": {} + }' + + # Overwrite the file if it exists (or create it if it doesn't) + echo "$JUPYTER_AI_CONFIG_CONTENT" > "$JUPYTER_AI_CONFIG_PATH" +fi + +# Writes script status to file. This file is read by an IDE extension responsible for dispatching UI post-startup-status to the user. +write_status_to_file() { + local status="$1" + local message="$2" + local file="/tmp/.post-startup-status.json" + + # Check if the file exists, if not, create it + if [ ! -f "$file" ]; then + touch "$file" || { + echo "Failed to create $file" >&2 + return 0 + } + fi + + # Ensure the file is writable + if [ ! -w "$file" ]; then + echo "Error: $file is not writable" >&2 + return 0 + fi + + # Create the JSON object and write to file + jq -n --arg status "$status" --arg message "$message" '{"status":$status,"message":$message}' > "$file" + +} + +# checks if the script status is "in-progress". If so, no errors were detected and it can be marked successful. +write_status_to_file_on_script_complete() { + local file="/tmp/.post-startup-status.json" + local check_key="status" + local check_value="in-progress" + + + if jq -e --arg key "$check_key" --arg value "$check_value" '.[$key] == $value' "$file" > /dev/null; then + write_status_to_file "success" "IDE configured successfully." + echo "Post-startup script completed successfully. Success status written to $file" + else + echo "Skipping writing post-startup script "success" status. An error was detected during execution and written to $file". + fi +} + +write_status_to_file "in-progress" "IDE configuration in progress." + +sourceMetaData=/opt/ml/metadata/resource-metadata.json + +# Extract the required fields from meta data stored in opt/ml/metadata. +dataZoneDomainId=$(jq -r '.AdditionalMetadata.DataZoneDomainId' < $sourceMetaData) +dataZoneUserId=$(jq -r '.AdditionalMetadata.DataZoneUserId' < $sourceMetaData) +dataZoneProjectRepositoryName=$(jq -r '.AdditionalMetadata.DataZoneProjectRepositoryName' < $sourceMetaData) +dataZoneEndPoint=$(jq -r '.AdditionalMetadata.DataZoneEndpoint' < $sourceMetaData) +dataZoneProjectId=$(jq -r '.AdditionalMetadata.DataZoneProjectId' < $sourceMetaData) +dataZoneDomainRegion=$(jq -r '.AdditionalMetadata.DataZoneDomainRegion' < $sourceMetaData) + +set +e + +# Creating a directory where the repository will be cloned +mkdir -p $HOME/src + +# Remove the ~/.aws/config file to start clean when space restart +rm -f /home/sagemaker-user/.aws/config +echo "Successfully removed the ~/.aws/config file" + +aws configure set credential_source EcsContainer +echo "Successfully configured default profile" + +# add SparkMonitor and Connection Magic entrypoint +NB_USER=sagemaker-user + +config_path=/home/${NB_USER}/.ipython/profile_default/ipython_config.py + +if [ ! -f "$config_path" ] || ! grep -q "sagemaker_studio_dataengineering_sessions" "$config_path"; then + ipython profile create && echo "c.InteractiveShellApp.extensions.extend(['sagemaker_sparkmonitor.kernelextension','sagemaker_studio_dataengineering_sessions.sagemaker_connection_magic'])" >> $config_path + cat << EOT >> "$config_path" +c.Application.logging_config = { + "loggers": { + "": { + "level": "INFO", + # console handler is required to keep the default behavior of jupyter logging. + # https://jupyter-server.readthedocs.io/en/latest/operators/configuring-logging.html + "handlers": ["console"], + }, + }, +} +EOT +fi + +# Setting this to +x to not log credentials from the response of fetching credentials. +set +x + +# Note: The $? check immediately follows the sagemaker-studio command to ensure we're checking its exit status. +# Adding commands between these lines could lead to incorrect error handling. +response=$( sagemaker-studio credentials get-domain-execution-role-credential-in-space --domain-id "$dataZoneDomainId" --profile default) +responseStatus=$? + +set -x + +if [ $responseStatus -ne 0 ]; then + echo "Failed to fetch domain execution role credentials. Will skip adding new credentials profile: DomainExecutionRoleCreds." + write_status_to_file "error" "Network issue detected. Your domain may be using a public subnet, which affects IDE functionality. Please contact your administrator." +else + aws configure set credential_process "sagemaker-studio credentials get-domain-execution-role-credential-in-space --domain-id $dataZoneDomainId --profile default" --profile DomainExecutionRoleCreds + echo "Successfully configured DomainExecutionRoleCreds profile" +fi + +echo "Starting execution of Git Cloning script" +bash /etc/sagemaker-ui/git_clone.sh + +# Run AWS CLI command to get the username from DataZone User Profile. +if [ ! -z "$dataZoneEndPoint" ]; then + response=$( aws datazone get-user-profile --endpoint-url "$dataZoneEndPoint" --domain-identifier "$dataZoneDomainId" --user-identifier "$dataZoneUserId" --region "$dataZoneDomainRegion" ) +else + response=$( aws datazone get-user-profile --domain-identifier "$dataZoneDomainId" --user-identifier "$dataZoneUserId" --region "$dataZoneDomainRegion" ) +fi + +# Extract the Auth Mode from the response. Unified Studio currently supports IAM, SSO and SAML. +auth_mode=$(echo "$response" | jq -r '.type') + +case "$auth_mode" in + "IAM") + # For IAM users - extract IAM ARN from response. Response does not contain username or email. + arn=$(echo "$response" | jq -r '.details.iam.arn') + # Split ARN by / and return the last field + username=$(echo "$arn" | awk -F'/' '{print $NF}') + email="$arn" + ;; + "SSO"|"SAML") + # For SSO and SAML user, extract username and email if present in response. + username=$(echo "$response" | jq -r '.details.sso.username') + email=$(echo "$response" | jq -r '.details.sso.email') + # Setting up the email as username if email is not present + if [ -z "$email" ] || [ "$email" = "null" ]; then + email="$username" + fi + ;; + *) + echo "Unknown authentication mode: $auth_mode" + exit 1 + ;; +esac + +# Setting up the Git identity for the user . +git config --global user.email "$email" +git config --global user.name "$username" + +# MLFlow tracking server uses the LOGNAME environment variable to track identity. Set the LOGNAME to the username of the user associated with the space +export LOGNAME=$username +if grep -q "^LOGNAME=" ~/.bashrc; then + echo "LOGNAME is defined in the env" +else + echo LOGNAME=$username >> ~/.bashrc + echo readonly LOGNAME >> ~/.bashrc +fi + +set -e + +# write unexpected error to file if any of the remaining scripts fail. +trap 'write_status_to_file "error" "An unexpected error occurred. Please stop and restart your space to retry."' ERR + +# Generate sagemaker pysdk intelligent default config +nohup python /etc/sagemaker/sm_pysdk_default_config.py & +# Only run the following commands if SAGEMAKER_APP_TYPE_LOWERCASE is jupyterlab +if [ "${SAGEMAKER_APP_TYPE_LOWERCASE}" = "jupyterlab" ]; then + # Start workflows local runner + bash /etc/sagemaker-ui/workflows/start-workflows-container.sh + + # Install conda and pip dependencies if lib mgmt config existing + bash /etc/sagemaker-ui/libmgmt/install-lib.sh $HOME/src + + # Install sm-spark-cli + bash /etc/sagemaker-ui/workflows/sm-spark-cli-install.sh +fi + +write_status_to_file_on_script_complete diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/set_code_editor_theme.sh b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/set_code_editor_theme.sh new file mode 100755 index 00000000..f295052c --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/set_code_editor_theme.sh @@ -0,0 +1,23 @@ +#!/bin/bash +set -e + +USER_SETTINGS_FILE="/home/sagemaker-user/sagemaker-code-editor-server-data/data/User/settings.json" +COLOR_THEME_KEY="workbench.colorTheme" +COLOR_THEME_VALUE="Default Dark Modern" + +# Check if the settings file exists +if [ ! -f "$USER_SETTINGS_FILE" ]; then + echo "Code Editor user settings file not found. Creating..." + mkdir -p "$(dirname "$USER_SETTINGS_FILE")" + echo "{}" > "$USER_SETTINGS_FILE" +fi + +EXISTING_COLOR_THEME_VALUE=$(jq -r --arg key "$COLOR_THEME_KEY" '.[$key] // empty' "$USER_SETTINGS_FILE") + +if [[ -n "$EXISTING_COLOR_THEME_VALUE" ]]; then + echo "Theme is already set in user settings as '$EXISTING_COLOR_THEME_VALUE'. No changes made." +else + # Set theme + jq --arg key "$COLOR_THEME_KEY" --arg value "$COLOR_THEME_VALUE" '.[$key] = $value' "$USER_SETTINGS_FILE" > "${USER_SETTINGS_FILE}.tmp" && mv "${USER_SETTINGS_FILE}.tmp" "$USER_SETTINGS_FILE" + echo "Successfully set Code Editor theme to '$COLOR_THEME_VALUE'." +fi diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/docker-compose.yaml b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/docker-compose.yaml new file mode 100644 index 00000000..16ccfe64 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/docker-compose.yaml @@ -0,0 +1,77 @@ +x-airflow-common: &airflow-common + image: 058264401727.dkr.ecr.${AWS_REGION}.amazonaws.com/mwaa_image:latest + network_mode: sagemaker + environment: + # AWS credentials + AWS_REGION: ${AWS_REGION} + AWS_DEFAULT_REGION: ${AWS_REGION} + AWS_CONTAINER_CREDENTIALS_RELATIVE_URI: ${AWS_CONTAINER_CREDENTIALS_RELATIVE_URI} + + # Logging configuration. + MWAA__LOGGING__AIRFLOW_DAGPROCESSOR_LOGS_ENABLED: "true" + MWAA__LOGGING__AIRFLOW_DAGPROCESSOR_LOG_LEVEL: "INFO" + MWAA__LOGGING__AIRFLOW_SCHEDULER_LOGS_ENABLED: "true" + MWAA__LOGGING__AIRFLOW_SCHEDULER_LOG_LEVEL: "INFO" + MWAA__LOGGING__AIRFLOW_TRIGGERER_LOGS_ENABLED: "true" + MWAA__LOGGING__AIRFLOW_TRIGGERER_LOG_LEVEL: "INFO" + MWAA__LOGGING__AIRFLOW_WEBSERVER_LOGS_ENABLED: "true" + MWAA__LOGGING__AIRFLOW_WEBSERVER_LOG_LEVEL: "INFO" + MWAA__LOGGING__AIRFLOW_WORKER_LOGS_ENABLED: "true" + MWAA__LOGGING__AIRFLOW_WORKER_LOG_LEVEL: "INFO" + MWAA__LOGGING__AIRFLOW_TASK_LOGS_ENABLED: "true" + MWAA__LOGGING__AIRFLOW_TASK_LOG_LEVEL: "INFO" + + MWAA__LOGGING__AIRFLOW_DAGPROCESSOR_LOG_GROUP_ARN: "arn:aws:logs:${AWS_REGION}:${ACCOUNT_ID}:log-group:/aws/sagemaker/studio" + MWAA__LOGGING__AIRFLOW_SCHEDULER_LOG_GROUP_ARN: "arn:aws:logs:${AWS_REGION}:${ACCOUNT_ID}:log-group:/aws/sagemaker/studio" + MWAA__LOGGING__AIRFLOW_TRIGGERER_LOG_GROUP_ARN: "arn:aws:logs:${AWS_REGION}:${ACCOUNT_ID}:log-group:/aws/sagemaker/studio" + MWAA__LOGGING__AIRFLOW_WEBSERVER_LOG_GROUP_ARN: "arn:aws:logs:${AWS_REGION}:${ACCOUNT_ID}:log-group:/aws/sagemaker/studio" + MWAA__LOGGING__AIRFLOW_WORKER_LOG_GROUP_ARN: "arn:aws:logs:${AWS_REGION}:${ACCOUNT_ID}:log-group:/aws/sagemaker/studio" + MWAA__LOGGING__AIRFLOW_TASK_LOG_GROUP_ARN: "arn:aws:logs:${AWS_REGION}:${ACCOUNT_ID}:log-group:/aws/sagemaker/studio" + + # Airflow URL configuration + AIRFLOW__CLI__ENDPOINT_URL: "/jupyterlab/default/proxy/absolute/8080" + AIRFLOW__WEBSERVER__BASE_URL: "/jupyterlab/default/proxy/absolute/8080" + MWAA__CORE__REQUIREMENTS_PATH: "/usr/local/airflow/requirements/requirements.txt" + #Project configuration + DataZoneDomainId: ${DZ_DOMAIN_ID} + DataZoneProjectId: ${DZ_PROJECT_ID} + DataZoneEnvironmentId: ${DZ_ENV_ID} + DataZoneDomainRegion: ${DZ_DOMAIN_REGION} + ProjectS3Path: ${DZ_PROJECT_S3PATH} + volumes: + - /home/sagemaker-user/${HOME_FOLDER_NAME}/workflows/dags:/usr/local/airflow/dags + - /home/sagemaker-user/.workflows_setup/plugins:/usr/local/airflow/plugins + - /home/sagemaker-user/.workflows_setup/requirements:/usr/local/airflow/requirements + - /home/sagemaker-user/.workflows_setup/startup:/usr/local/airflow/startup + - /home/sagemaker-user/src:/home/sagemaker-user/src:rw + - /home/sagemaker-user/jobs:/home/sagemaker-user/jobs:rw + depends_on: &airflow-common-depends-on + postgres: + condition: service_healthy + +services: + postgres: + image: 058264401727.dkr.ecr.${AWS_REGION}.amazonaws.com/postgres:13 + network_mode: sagemaker + container_name: mwaa-292-db + environment: + POSTGRES_USER: airflow + POSTGRES_PASSWORD: airflow + POSTGRES_DB: airflow + volumes: + - /home/sagemaker-user/.workflows_setup/db-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD", "pg_isready", "-U", "airflow"] + interval: 10s + retries: 5 + start_period: 5s + + webserver: + <<: *airflow-common + command: webserver + container_name: mwaa-292-webserver + + scheduler: + <<: *airflow-common + command: scheduler + container_name: mwaa-292-scheduler diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/healthcheck.sh b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/healthcheck.sh new file mode 100755 index 00000000..a9581b54 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/healthcheck.sh @@ -0,0 +1,34 @@ +#!/bin/bash +set -e + +POLLING_INTERVAL=1 # seconds +LOCAL_RUNNER_HEALTH_ENDPOINT="http://default:8888/jupyterlab/default/proxy/absolute/8080/api/v1/health" + +while true; do + response=$(curl -s -w "%{http_code}" $LOCAL_RUNNER_HEALTH_ENDPOINT) + curl_exit_code=$? + + if [[ $curl_exit_code -ne 0 ]]; then + python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'unhealthy' --detailed-status 'Local runner health endpoint is unreachable' + else + + http_code=${response: -3} + body=${response:0:${#response}-3} + + if [[ $http_code -ne 200 ]]; then + python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'unhealthy' --detailed-status 'Local runner health endpoint is unreachable' + elif [[ -z "$body" ]]; then + python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'unhealthy' --detailed-status 'Local runner health endpoint did not return a response' + else + status=$(echo $body | jq -r '.metadatabase.status, .scheduler.status, .triggerer.status, .dag_processor.status') + if [[ "$status" == *"unhealthy"* ]]; then + python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'unhealthy' --detailed-status 'Local runner is unhealthy' + else + python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'healthy' --detailed-status 'Local runner is healthy' + POLLING_INTERVAL=10 # raise to 10 seconds after startup + fi + fi + fi + + sleep $POLLING_INTERVAL +done diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/plugins/amzn_SagemakerWorkflowsOperator-1.0-py3-none-any.whl b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/plugins/amzn_SagemakerWorkflowsOperator-1.0-py3-none-any.whl new file mode 100644 index 00000000..3f14c1ec Binary files /dev/null and b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/plugins/amzn_SagemakerWorkflowsOperator-1.0-py3-none-any.whl differ diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/plugins/amzn_sagemaker_studio-1.0.9-py3-none-any.whl b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/plugins/amzn_sagemaker_studio-1.0.9-py3-none-any.whl new file mode 100644 index 00000000..aba1e42b Binary files /dev/null and b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/plugins/amzn_sagemaker_studio-1.0.9-py3-none-any.whl differ diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/requirements/requirements.txt b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/requirements/requirements.txt new file mode 100644 index 00000000..2b182b0c --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/requirements/requirements.txt @@ -0,0 +1,7 @@ +--find-links /usr/local/airflow/plugins +--no-index + +amzn_sagemaker_studio +amzn_SagemakerWorkflowsOperator + + diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/sample_dag.py b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/sample_dag.py new file mode 100644 index 00000000..aa3fc2f1 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/sample_dag.py @@ -0,0 +1,18 @@ +from airflow.decorators import dag +from airflow.operators.bash import BashOperator + +default_args = { + "owner": "airflow", +} + + +@dag(default_args=default_args, tags=["sample"]) +def sample_dag(): + def sample_task(): + _task = BashOperator(task_id="hello_world", bash_command="echo 'hello world!'") + return _task + + task = sample_task() + + +sample_dag = sample_dag() diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/sm-spark-cli-install.sh b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/sm-spark-cli-install.sh new file mode 100755 index 00000000..6a0d50e3 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/sm-spark-cli-install.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# install sm-spark-cli +sudo curl -LO https://github.com/aws-samples/amazon-sagemaker-spark-ui/releases/download/v0.9.1/amazon-sagemaker-spark-ui.tar.gz && \ +sudo tar -xvzf amazon-sagemaker-spark-ui.tar.gz && \ +sudo chmod +x amazon-sagemaker-spark-ui/install-scripts/studio/install-history-server.sh && \ +sudo amazon-sagemaker-spark-ui/install-scripts/studio/install-history-server.sh && \ +rm -rf ~/.m2 && \ +sudo rm -rf amazon-sagemaker-spark-ui* \ No newline at end of file diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/sm_init_script.sh b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/sm_init_script.sh new file mode 100755 index 00000000..57a4616f --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/sm_init_script.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Create a default aws profile in SM training container +aws configure set credential_source EcsContainer + +# Create a default ipython profile and load extensions in SM processing container +NB_USER=sagemaker-user +config_path=/home/${NB_USER}/.ipython/profile_default/ipython_config.py +# SparkMonitor Widget and Connection Magic - create entrypoint +if [ ! -f "$config_path" ] || ! grep -q "sagemaker_studio_dataengineering_sessions" "$config_path"; then + ipython profile create && echo "c.InteractiveShellApp.extensions.extend(['sagemaker_sparkmonitor.kernelextension','sagemaker_studio_dataengineering_sessions.sagemaker_connection_magic'])" >> $config_path + cat << EOT >> "$config_path" +c.Application.logging_config = { + "loggers": { + "": { + "level": "INFO", + # console handler is required to keep the default behavior of jupyter logging. + # https://jupyter-server.readthedocs.io/en/latest/operators/configuring-logging.html + "handlers": ["console"], + }, + }, +} +EOT +fi \ No newline at end of file diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/start-workflows-container.sh b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/start-workflows-container.sh new file mode 100755 index 00000000..deb7d001 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/start-workflows-container.sh @@ -0,0 +1,190 @@ +#!/bin/bash +set -eu + +handle_workflows_startup_error() { + local step=$1 + local detailed_status="" + case $step in + 0) + detailed_status="Workflows blueprint not enabled" + ;; + 1) + detailed_status="Not enough memory" + ;; + 2) + detailed_status="Error creating directories" + ;; + 3) + detailed_status="Error installing docker" + ;; + 4) + detailed_status="Error copying prerequisite files" + ;; + 5) + detailed_status="Error starting workflows image" + # Kill any orphans that may have started + python /etc/sagemaker-ui/workflows/workflow_client.py stop-local-runner + ;; + *) + detailed_status="Unknown error" + ;; + esac + python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'unhealthy' --detailed-status "$detailed_status" + exit 1 +} + +RESOURCE_METADATA_FILE=/opt/ml/metadata/resource-metadata.json +SM_DOMAIN_ID=$(jq -r ".DomainId" < $RESOURCE_METADATA_FILE) +HOME_FOLDER_NAME=src +AWS_ACCOUNT_ID=$(jq -r '.ExecutionRoleArn | split(":")[4]' < $RESOURCE_METADATA_FILE) +ECR_ACCOUNT_ID=058264401727 +DZ_DOMAIN_ID=$(jq -r '.AdditionalMetadata.DataZoneDomainId' < $RESOURCE_METADATA_FILE) +DZ_PROJECT_ID=$(jq -r '.AdditionalMetadata.DataZoneProjectId' < $RESOURCE_METADATA_FILE) +DZ_ENV_ID=$(jq -r '.AdditionalMetadata.DataZoneEnvironmentId' < $RESOURCE_METADATA_FILE) +DZ_DOMAIN_REGION=$(jq -r '.AdditionalMetadata.DataZoneDomainRegion' < $RESOURCE_METADATA_FILE) +DZ_ENDPOINT=$(jq -r '.AdditionalMetadata.DataZoneEndpoint' < $RESOURCE_METADATA_FILE) +DZ_PROJECT_S3PATH=$(jq -r '.AdditionalMetadata.ProjectS3Path' < $RESOURCE_METADATA_FILE) +WORKFLOW_DAG_PATH="/home/sagemaker-user/${HOME_FOLDER_NAME}/workflows/dags" +WORKFLOW_CONFIG_PATH="/home/sagemaker-user/${HOME_FOLDER_NAME}/workflows/config" +WORKFLOW_DB_DATA_PATH="/home/sagemaker-user/.workflows_setup/db-data" +WORKFLOW_REQUIREMENTS_PATH="/home/sagemaker-user/.workflows_setup/requirements/" +WORKFLOW_PLUGINS_PATH="/home/sagemaker-user/.workflows_setup/plugins" +WORKFLOW_STARTUP_PATH="/home/sagemaker-user/.workflows_setup/startup/" +WORKFLOW_ARTIFACTS_SOURCE_DIR="/etc/sagemaker-ui/workflows" +WORKFLOW_PLUGINS_SOURCE_PATH="${WORKFLOW_ARTIFACTS_SOURCE_DIR}/plugins/*.whl" +WORKFLOW_REQUIREMENTS_SOURCE_PATH="${WORKFLOW_ARTIFACTS_SOURCE_DIR}/requirements/requirements.txt" +WORKFLOW_AIRFLOW_REQUIREMENTS_SOURCE_PATH="/etc/sagemaker-ui/workflows/requirements/requirements.txt" +WORKFLOW_OUTPUT_PATH="/home/sagemaker-user/jobs" +USER_REQUIREMENTS_FILE="${WORKFLOW_CONFIG_PATH}/requirements.txt" +USER_PLUGINS_FOLDER="${WORKFLOW_CONFIG_PATH}/plugins" +USER_STARTUP_FILE="${WORKFLOW_CONFIG_PATH}/startup.sh" + +# Create status log file if it doesn't exist +WORKFLOW_HEALTH_PATH="/home/sagemaker-user/.workflows_setup/health" +mkdir -p $WORKFLOW_HEALTH_PATH +if [ ! -f "${WORKFLOW_HEALTH_PATH}/status.json" ]; then + echo "Creating status file" + echo "[]" > "${WORKFLOW_HEALTH_PATH}/status.json" +fi + +# Only start local runner if Workflows blueprint is enabled +if [ "$(python /etc/sagemaker-ui/workflows/workflow_client.py check-blueprint --region "$DZ_DOMAIN_REGION" --domain-id "$DZ_DOMAIN_ID" --endpoint "$DZ_ENDPOINT")" = "False" ]; then + echo "Workflows blueprint is not enabled. Workflows will not start." + handle_workflows_startup_error 0 +fi + +# Do minimum system requirements check: 4GB RAM and more than 2 CPU cores +free_mem=$(free -m | awk '/^Mem:/ {print $7}') +cpu_cores=$(nproc) +if [[ $free_mem -lt 4096 ]] || [[ $cpu_cores -le 2 ]]; then + echo "There is less than 4GB of available RAM or <=2 CPU cores. Workflows will not start. Free mem: $free_mem MB, CPU cores: $cpu_cores" + handle_workflows_startup_error 1 +fi + +( +python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'starting' --detailed-status 'Creating directories' + +# Create necessary directories +mkdir -p $WORKFLOW_DAG_PATH +mkdir -p $WORKFLOW_CONFIG_PATH +mkdir -p $WORKFLOW_DB_DATA_PATH +mkdir -p $WORKFLOW_REQUIREMENTS_PATH +mkdir -p $WORKFLOW_PLUGINS_PATH +mkdir -p $WORKFLOW_STARTUP_PATH +mkdir -p $WORKFLOW_OUTPUT_PATH +) || handle_workflows_startup_error 2 + +( +# Set the status of the status file to 'starting' +python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'starting' --detailed-status 'Installing prerequisites' + +# Workflows execution environment install +sudo apt-get update +sudo install -m 0755 -d /etc/apt/keyrings +sudo rm -f /etc/apt/keyrings/docker.gpg +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg +sudo chmod a+r /etc/apt/keyrings/docker.gpg +echo \ +"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ +"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ +sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +sudo apt-get update +VERSION_ID=$(cat /etc/os-release | grep -oP 'VERSION_ID=".*"' | cut -d'"' -f2) +VERSION_STRING=$(sudo apt-cache madison docker-ce | awk '{ print $3 }' | grep -i $VERSION_ID | head -n 1) +sudo apt-get install docker-ce-cli=$VERSION_STRING docker-compose-plugin=2.29.2-1~ubuntu.22.04~jammy -y --allow-downgrades +) || handle_workflows_startup_error 3 + +( +# Set status to copying files +python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'starting' --detailed-status 'Copying files' + +# Create .airflowignore file +cat >>"$WORKFLOW_DAG_PATH/.airflowignore" <<'END' +.ipynb_checkpoints +END + +#copy plugins from conda +cp $WORKFLOW_PLUGINS_SOURCE_PATH $WORKFLOW_PLUGINS_PATH +#copy requirements from conda +cp $WORKFLOW_REQUIREMENTS_SOURCE_PATH $WORKFLOW_REQUIREMENTS_PATH + +# Copy system startup +cp /etc/sagemaker-ui/workflows/startup/startup.sh $WORKFLOW_STARTUP_PATH + +# Append user's custom startup script, if exists +if [ -f $USER_STARTUP_FILE ]; then + tail -n +2 $USER_STARTUP_FILE >> "${WORKFLOW_STARTUP_PATH}startup.sh" +else + # Give the user a template startup script + echo "#!/bin/bash" > "${USER_STARTUP_FILE}" + echo "# Place any special instructions you'd like run during your workflows environment startup here" >> "${USER_STARTUP_FILE}" + echo "# Note that you will need to restart your space for changes to take effect." >> "${USER_STARTUP_FILE}" + echo "# For example:" >> "${USER_STARTUP_FILE}" + echo "# pip install dbt-core" >> "${USER_STARTUP_FILE}" +fi + +# Append user's custom requirements, if exists +if [ -f $USER_REQUIREMENTS_FILE ]; then + cat $USER_REQUIREMENTS_FILE >> "${WORKFLOW_REQUIREMENTS_PATH}requirements.txt" +else + # Give the user a template requirements.txt file + echo "# Place any requirements you'd like included in your workflows environment here" > "${USER_REQUIREMENTS_FILE}" + echo "# Note that you will need to restart your space for changes to take effect." >> "${USER_REQUIREMENTS_FILE}" + echo "# For example:" >> "${USER_REQUIREMENTS_FILE}" + echo "# numpy==1.26.4" >> "${USER_REQUIREMENTS_FILE}" +fi + +# Copy over any user-specified plugins, if they exist +if [ -d $USER_PLUGINS_FOLDER ]; then + cp -r $USER_PLUGINS_FOLDER/* $WORKFLOW_PLUGINS_PATH +fi + +) || handle_workflows_startup_error 4 + +( +# Set status to installing workflows image +python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'starting' --detailed-status 'Installing workflows image' + +# Copy sample dag if it does not exist +cp -n "/etc/sagemaker-ui/workflows/sample_dag.py" "${WORKFLOW_DAG_PATH}/" + +# Log into ECR repository +aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin ${ECR_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com + +HOME_FOLDER_NAME=$HOME_FOLDER_NAME \ +ECR_ACCOUNT_ID=$ECR_ACCOUNT_ID \ +ACCOUNT_ID=$AWS_ACCOUNT_ID \ +DZ_DOMAIN_ID=$DZ_DOMAIN_ID \ +DZ_PROJECT_ID=$DZ_PROJECT_ID \ +DZ_ENV_ID=$DZ_ENV_ID \ +DZ_DOMAIN_REGION=$DZ_DOMAIN_REGION \ +DZ_PROJECT_S3PATH=$DZ_PROJECT_S3PATH \ + docker compose -f /etc/sagemaker-ui/workflows/docker-compose.yaml up -d --quiet-pull +) || handle_workflows_startup_error 5 + +# Set status to waiting for image to start +python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'starting' --detailed-status 'Waiting for workflows image to start' + +# Start healthchecker +sleep 30 # give the container some time to start +supervisorctl -s unix:///var/run/supervisord/supervisor.sock start workflows_healthcheck diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/startup/startup.sh b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/startup/startup.sh new file mode 100755 index 00000000..829303ea --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/startup/startup.sh @@ -0,0 +1,3 @@ +#!/bin/sh + + diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/stop-workflows-container.sh b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/stop-workflows-container.sh new file mode 100755 index 00000000..0ce31e2d --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/stop-workflows-container.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +DOCKER_EXECUTABLE=$(which docker) + +# Stop healthchecker +supervisorctl -s unix:///var/run/supervisord/supervisor.sock stop workflows_healthcheck + +# Stop the containers +$DOCKER_EXECUTABLE compose -f /etc/sagemaker-ui/workflows/docker-compose.yaml down + +# Update status to stopped +python /etc/sagemaker-ui/workflows/workflow_client.py update-local-runner-status --status 'stopped' --detailed-status 'Shutdown completed' diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/workflow_client.py b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/workflow_client.py new file mode 100644 index 00000000..4ccec387 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker-ui/workflows/workflow_client.py @@ -0,0 +1,114 @@ +import argparse +from datetime import datetime, timezone +from typing import Optional + +import boto3 +import requests + +JUPYTERLAB_URL = "http://default:8888/jupyterlab/default/" +WORKFLOWS_API_ENDPOINT = "api/sagemaker/workflows" +TIMESTAMP_FORMAT = "%Y-%m-%d %H:%M:%S.%f%z" + + +def _validate_response(function_name: str, response: requests.Response): + if response.status_code == 200: + return response + else: + raise RuntimeError(f"{function_name} returned {response.status_code}: {str(response.content)}") + + +def update_local_runner_status(session: requests.Session, status: str, detailed_status: Optional[str] = None, **kwargs): + response = session.post( + url=JUPYTERLAB_URL + WORKFLOWS_API_ENDPOINT + "/update-local-runner-status", + headers={"X-Xsrftoken": session.cookies.get_dict()["_xsrf"]}, + json={ + "timestamp": datetime.now(timezone.utc).strftime(TIMESTAMP_FORMAT), + "status": status, + "detailed_status": detailed_status, + }, + ) + return _validate_response("UpdateLocalRunner", response) + + +def start_local_runner(session: requests.Session, **kwargs): + response = session.post( + url=JUPYTERLAB_URL + WORKFLOWS_API_ENDPOINT + "/start-local-runner", + headers={"X-Xsrftoken": session.cookies.get_dict()["_xsrf"]}, + json={}, + ) + return _validate_response("StartLocalRunner", response) + + +def stop_local_runner(session: requests.Session, **kwargs): + response = session.post( + url=JUPYTERLAB_URL + WORKFLOWS_API_ENDPOINT + "/stop-local-runner", + headers={"X-Xsrftoken": session.cookies.get_dict()["_xsrf"]}, + json={}, + ) + return _validate_response("StopLocalRunner", response) + + +def check_blueprint(region: str, domain_id: str, endpoint: str, **kwargs): + DZ_CLIENT = boto3.client("datazone") + # add correct endpoint for gamma env + if endpoint != "": + DZ_CLIENT = boto3.client("datazone", endpoint_url=endpoint) + try: + blueprint_id = DZ_CLIENT.list_environment_blueprints( + managed=True, domainIdentifier=domain_id, name="Workflows" + )["items"][0]["id"] + blueprint_config = DZ_CLIENT.get_environment_blueprint_configuration( + domainIdentifier=domain_id, environmentBlueprintIdentifier=blueprint_id + ) + enabled_regions = blueprint_config["enabledRegions"] + print(str(region in enabled_regions)) + except: + print("False") + + +COMMAND_REGISTRY = { + "update-local-runner-status": update_local_runner_status, + "start-local-runner": start_local_runner, + "stop-local-runner": stop_local_runner, + "check-blueprint": check_blueprint, +} + + +def main(): + parser = argparse.ArgumentParser(description="Workflow local runner client") + subparsers = parser.add_subparsers(dest="command", help="Available commands") + + update_status_parser = subparsers.add_parser("update-local-runner-status", help="Update status of local runner") + update_status_parser.add_argument("--status", type=str, required=True, help="Status to update") + update_status_parser.add_argument("--detailed-status", type=str, required=False, help="Detailed status text") + + start_parser = subparsers.add_parser("start-local-runner", help="Start local runner") + + stop_parser = subparsers.add_parser("stop-local-runner", help="Stop local runner") + + check_blueprint_parser = subparsers.add_parser("check-blueprint", help="Check Workflows blueprint") + check_blueprint_parser.add_argument( + "--domain-id", type=str, required=True, help="Datazone Domain ID for blueprint check" + ) + check_blueprint_parser.add_argument("--region", type=str, required=True, help="Datazone Domain region") + check_blueprint_parser.add_argument( + "--endpoint", type=str, required=True, help="Datazone endpoint for blueprint check" + ) + + args = parser.parse_args() + + # create the request session + session = requests.Session() + # populate XSRF cookie + session.get(JUPYTERLAB_URL) + + kwargs = vars(args) | {"session": session} + + if args.command in COMMAND_REGISTRY: + COMMAND_REGISTRY[args.command](**kwargs) + else: + parser.print_help() + + +if __name__ == "__main__": + main() diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker/sm_pysdk_default_config.py b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker/sm_pysdk_default_config.py new file mode 100644 index 00000000..1a8457b4 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/sagemaker/sm_pysdk_default_config.py @@ -0,0 +1,122 @@ +import json +import os +import re + +import yaml + + +def generate_intelligent_default_config(metadata: str) -> dict: + config = { + "SchemaVersion": "1.0", + "SageMaker": { + "PythonSDK": { + "Modules": { + "Session": { + "DefaultS3Bucket": metadata["S3Bucket"], + "DefaultS3ObjectKeyPrefix": metadata["S3ObjectKeyPrefix"], + }, + "RemoteFunction": { + "IncludeLocalWorkDir": True, + "VpcConfig": {"SecurityGroupIds": metadata["SecurityGroupIds"], "Subnets": metadata["Subnets"]}, + }, + "NotebookJob": { + "RoleArn": metadata["UserRoleArn"], + "S3RootUri": f"s3://{metadata['S3Bucket']}/{metadata['S3ObjectKeyPrefix']}", + "VpcConfig": {"SecurityGroupIds": metadata["SecurityGroupIds"], "Subnets": metadata["Subnets"]}, + }, + "Serve": {"S3ModelDataUri": f"s3://{metadata['S3Bucket']}/{metadata['S3ObjectKeyPrefix']}"}, + } + }, + "MonitoringSchedule": { + "MonitoringScheduleConfig": { + "MonitoringJobDefinition": { + "NetworkConfig": { + "VpcConfig": { + "SecurityGroupIds": metadata["SecurityGroupIds"], + "Subnets": metadata["Subnets"], + } + } + } + } + }, + "AutoMLJob": { + "AutoMLJobConfig": { + "SecurityConfig": { + "VpcConfig": {"SecurityGroupIds": metadata["SecurityGroupIds"], "Subnets": metadata["Subnets"]} + } + } + }, + "AutoMLJobV2": { + "SecurityConfig": { + "VpcConfig": {"SecurityGroupIds": metadata["SecurityGroupIds"], "Subnets": metadata["Subnets"]} + } + }, + "CompilationJob": { + "VpcConfig": {"SecurityGroupIds": metadata["SecurityGroupIds"], "Subnets": metadata["Subnets"]} + }, + "Pipeline": {"RoleArn": metadata["UserRoleArn"]}, + "Model": { + "VpcConfig": {"SecurityGroupIds": metadata["SecurityGroupIds"], "Subnets": metadata["Subnets"]}, + "ExecutionRoleArn": metadata["UserRoleArn"], + }, + "ModelPackage": {"ValidationSpecification": {"ValidationRole": metadata["UserRoleArn"]}}, + "ProcessingJob": { + "NetworkConfig": { + "VpcConfig": {"SecurityGroupIds": metadata["SecurityGroupIds"], "Subnets": metadata["Subnets"]} + }, + "RoleArn": metadata["UserRoleArn"], + }, + "TrainingJob": { + "RoleArn": metadata["UserRoleArn"], + "VpcConfig": {"SecurityGroupIds": metadata["SecurityGroupIds"], "Subnets": metadata["Subnets"]}, + }, + }, + } + return config + + +if __name__ == "__main__": + try: + config = {} + resource_metadata = "/opt/ml/metadata/resource-metadata.json" + + PROJECT_S3_PATH = "ProjectS3Path" + SECURITY_GROUP = "SecurityGroup" + PRIVATE_SUBNETS = "PrivateSubnets" + META_DATA = "AdditionalMetadata" + EXECUTION_ROLE_ARN = "ExecutionRoleArn" + CONFIG_FILE_NAME = "config.yaml" + CONFIG_DIR = "/etc/xdg/sagemaker/" + + if os.path.exists(resource_metadata): + with open(resource_metadata, "r") as file: + data = json.load(file) + + s3_path = data[META_DATA].get(PROJECT_S3_PATH, "") + metadata = { + # user provided bucket + "S3Bucket": re.search(r"s3://([^/]+)/", s3_path).group(1), + # ${datazoneEnvironmentDomainId}/${datazoneEnvironmentProjectId}/${datazoneScopeName}/ + "S3ObjectKeyPrefix": s3_path.split("//")[1].split("/", 1)[1], + # TODO: Is this a billing concern if set default + # 'InstanceType': 'ml.m5.xlarge', + "SecurityGroupIds": data[META_DATA].get(SECURITY_GROUP, "").split(","), + "Subnets": data[META_DATA].get(PRIVATE_SUBNETS, "").split(","), + "UserRoleArn": data[EXECUTION_ROLE_ARN], + } + + # Not create config file when invalid value exists in metadata + empty_values = [key for key, value in metadata.items() if value == "" or value == [""]] + if empty_values: + raise AttributeError(f"There are empty values in the metadata: {empty_values}") + + config = generate_intelligent_default_config(metadata) + else: + raise FileNotFoundError("No resource-metadata.json exists on host!") + + # Write the config YAML file to default location of the admin config file + with open(os.path.join(CONFIG_DIR, CONFIG_FILE_NAME), "w") as f: + yaml.dump(config, f, default_flow_style=False, sort_keys=False) + + except Exception as e: + print(f"Error: {e}, SageMaker PySDK intelligent config file is not valid!") diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord-code-editor.conf b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord-code-editor.conf new file mode 100644 index 00000000..58e187d0 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord-code-editor.conf @@ -0,0 +1,12 @@ +[include] +files = supervisord-common.conf + +[program:codeeditorserver] +directory=%(ENV_HOME)s +command=start-code-editor +autostart=true +autorestart=true +stdout_logfile=/dev/fd/1 ; Redirect web server logs to stdout +stderr_logfile=/dev/fd/1 +stdout_logfile_maxbytes = 0 ; Fix: https://github.com/Supervisor/supervisor/issues/935 +stderr_logfile_maxbytes = 0 ; Fix: https://github.com/Supervisor/supervisor/issues/935 diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord-common.conf b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord-common.conf new file mode 100644 index 00000000..27820d4c --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord-common.conf @@ -0,0 +1,18 @@ +[supervisord] +nodaemon=true + +pidfile=/var/run/supervisord/supervisord.pid +logfile=%(ENV_STUDIO_LOGGING_DIR)s/%(ENV_SAGEMAKER_APP_TYPE_LOWERCASE)s/supervisord/supervisord.log +logfile_maxbytes=5MB +logfile_backups=10 +redirect_stderr=true + +[unix_http_server] +file=/var/run/supervisord/supervisor.sock +chmod=0700 + +[supervisorctl] +serverurl=unix:///var/run/supervisord/supervisor.sock + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord-jupyter-lab.conf b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord-jupyter-lab.conf new file mode 100644 index 00000000..5694ac11 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord-jupyter-lab.conf @@ -0,0 +1,11 @@ +[include] +files = supervisord-common.conf + +[program:jupyterlabserver] +directory=%(ENV_HOME)s +command=start-jupyter-server +stopasgroup=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui-code-editor.conf b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui-code-editor.conf new file mode 100644 index 00000000..41dec7fe --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui-code-editor.conf @@ -0,0 +1,28 @@ +[supervisord] +nodaemon=true + +pidfile=/var/run/supervisord/supervisord.pid +logfile=%(ENV_STUDIO_LOGGING_DIR)s/%(ENV_SAGEMAKER_APP_TYPE_LOWERCASE)s/supervisord/supervisord.log +logfile_maxbytes=5MB +logfile_backups=10 +redirect_stderr=true + +[unix_http_server] +file=/var/run/supervisord/supervisor.sock +chmod=0700 + +[supervisorctl] +serverurl=unix:///var/run/supervisord/supervisor.sock + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[program:codeeditorserver] +directory=%(ENV_HOME)s +command=start-sagemaker-ui-code-editor +autostart=true +autorestart=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 \ No newline at end of file diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui-default.conf b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui-default.conf new file mode 100644 index 00000000..13ffc89f --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui-default.conf @@ -0,0 +1,27 @@ +[supervisord] +nodaemon=true + +pidfile=/var/run/supervisord/supervisord.pid +logfile=%(ENV_STUDIO_LOGGING_DIR)s/%(ENV_SAGEMAKER_APP_TYPE_LOWERCASE)s/supervisord/supervisord.log +logfile_maxbytes=5MB +logfile_backups=10 +redirect_stderr=true + +[unix_http_server] +file=/var/run/supervisord/supervisor.sock +chmod=0700 + +[supervisorctl] +serverurl=unix:///var/run/supervisord/supervisor.sock + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[program:jupyterlabserver] +directory=%(ENV_HOME)s +command=start-sagemaker-ui-default-jupyter-server +stopasgroup=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui.conf b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui.conf new file mode 100644 index 00000000..ed00f4d5 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord-sagemaker-ui.conf @@ -0,0 +1,35 @@ +[supervisord] +nodaemon=true + +pidfile=/var/run/supervisord/supervisord.pid +logfile=%(ENV_STUDIO_LOGGING_DIR)s/%(ENV_SAGEMAKER_APP_TYPE_LOWERCASE)s/supervisord/supervisord.log +logfile_maxbytes=5MB +logfile_backups=10 +redirect_stderr=true + +[unix_http_server] +file=/var/run/supervisord/supervisor.sock +chmod=0700 + +[supervisorctl] +serverurl=unix:///var/run/supervisord/supervisor.sock + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[program:jupyterlabserver] +directory=%(ENV_HOME)s +command=start-sagemaker-ui-jupyter-server +stopasgroup=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 + +[program:workflows_healthcheck] +command=bash -c "/etc/sagemaker-ui/workflows/healthcheck.sh" +autostart=false +redirect_stderr=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile_maxbytes=0 diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord.conf b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord.conf new file mode 100644 index 00000000..686f4a5c --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/etc/supervisor/conf.d/supervisord.conf @@ -0,0 +1,27 @@ +[supervisord] +nodaemon=true + +pidfile=/var/run/supervisord/supervisord.pid +logfile=%(ENV_STUDIO_LOGGING_DIR)s/%(ENV_SAGEMAKER_APP_TYPE_LOWERCASE)s/supervisord/supervisord.log +logfile_maxbytes=5MB +logfile_backups=10 +redirect_stderr=true + +[unix_http_server] +file=/var/run/supervisord/supervisor.sock +chmod=0700 + +[supervisorctl] +serverurl=unix:///var/run/supervisord/supervisor.sock + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[program:jupyterlabserver] +directory=%(ENV_HOME)s +command=start-jupyter-server +stopasgroup=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/entrypoint-code-editor b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/entrypoint-code-editor new file mode 100755 index 00000000..bf55a371 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/entrypoint-code-editor @@ -0,0 +1,16 @@ +#!/bin/bash + +set -e + +# Generate and execute the shell code to modifies shell variables to include +# micromamba commands (e.g. using `micromamba activate` to activate environments) +eval "$(micromamba shell hook --shell=bash)" + +# Activate conda environment 'base', where supervisord is installed +micromamba activate base + +# Set up SAGEMAKER_APP_TYPE_LOWERCASE based on SAGEMAKER_APP_TYPE +export SAGEMAKER_APP_TYPE_LOWERCASE=$(echo $SAGEMAKER_APP_TYPE | tr '[:upper:]' '[:lower:]') + +mkdir -p $STUDIO_LOGGING_DIR/$SAGEMAKER_APP_TYPE_LOWERCASE/supervisord +exec supervisord -c /etc/supervisor/conf.d/supervisord-code-editor.conf -n diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/entrypoint-jupyter-server b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/entrypoint-jupyter-server new file mode 100755 index 00000000..5b8c3ad4 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/entrypoint-jupyter-server @@ -0,0 +1,25 @@ +#!/bin/bash + +set -e + +# Generate and execute the shell code to modifies shell variables to include +# micromamba commands (e.g. using `micromamba activate` to activate environments) +eval "$(micromamba shell hook --shell=bash)" + +if [ -n "$SAGEMAKER_RECOVERY_MODE" ]; then + export HOME=$SAGEMAKER_RECOVERY_MODE_HOME + # Activate conda environment `sagemaker-recovery-mode` + micromamba activate sagemaker-recovery-mode +else + # Activate conda environment 'base' + micromamba activate base +fi + +# Set up SAGEMAKER_APP_TYPE_LOWERCASE based on SAGEMAKER_APP_TYPE +export SAGEMAKER_APP_TYPE_LOWERCASE=$(echo $SAGEMAKER_APP_TYPE | tr '[:upper:]' '[:lower:]') + +# Start supervisord with supervisord configuration +# Since program 'jupyterlabserver' autostarts by default, it will be started +# automatically along with supervisord +mkdir -p $STUDIO_LOGGING_DIR/$SAGEMAKER_APP_TYPE_LOWERCASE/supervisord +exec supervisord -c /etc/supervisor/conf.d/supervisord.conf -n diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/entrypoint-sagemaker-ui-code-editor b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/entrypoint-sagemaker-ui-code-editor new file mode 100755 index 00000000..82ed47ff --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/entrypoint-sagemaker-ui-code-editor @@ -0,0 +1,16 @@ +#!/bin/bash + +set -e + +# Generate and execute the shell code to modifies shell variables to include +# micromamba commands (e.g. using `micromamba activate` to activate environments) +eval "$(micromamba shell hook --shell=bash)" + +# Activate conda environment 'base', where supervisord is installed +micromamba activate base + +export SAGEMAKER_APP_TYPE_LOWERCASE=$(echo $SAGEMAKER_APP_TYPE | tr '[:upper:]' '[:lower:]') +export SERVICE_NAME='SageMakerUnifiedStudio' + +mkdir -p $STUDIO_LOGGING_DIR/$SAGEMAKER_APP_TYPE_LOWERCASE/supervisord +exec supervisord -c /etc/supervisor/conf.d/supervisord-sagemaker-ui-code-editor.conf -n \ No newline at end of file diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/entrypoint-sagemaker-ui-jupyter-server b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/entrypoint-sagemaker-ui-jupyter-server new file mode 100755 index 00000000..df5e052f --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/entrypoint-sagemaker-ui-jupyter-server @@ -0,0 +1,19 @@ +#!/bin/bash + +set -e + +# Generate and execute the shell code to modifies shell variables to include +# micromamba commands (e.g. using `micromamba activate` to activate environments) +eval "$(micromamba shell hook --shell=bash)" + +# apply patches for SMUS +/etc/patches/apply_patches.sh smus && sudo rm -rf /etc/patches + +# Activate conda environment 'base', where supervisord is installed +micromamba activate base + +export SAGEMAKER_APP_TYPE_LOWERCASE=$(echo $SAGEMAKER_APP_TYPE | tr '[:upper:]' '[:lower:]') +export SERVICE_NAME='SageMakerUnifiedStudio' + +mkdir -p $STUDIO_LOGGING_DIR/$SAGEMAKER_APP_TYPE_LOWERCASE/supervisord +exec supervisord -c /etc/supervisor/conf.d/supervisord-sagemaker-ui.conf -n diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/merge-settings-util.py b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/merge-settings-util.py new file mode 100644 index 00000000..8b93cae1 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/merge-settings-util.py @@ -0,0 +1,22 @@ +import json +from sys import argv + + +# merges json files file1 and file2, keys in file2 overwriting any keys that already exist in file1 +def main(): + file1, file2 = argv[1], argv[2] + # Read JSON data from files + with open(file1, "r") as f1, open(file2, "r") as f2: + data1 = json.load(f1) + data2 = json.load(f2) + + # Merge the data (simple update) + merged_data = {**data1, **data2} + + # Write the merged data to a new file + with open(file1, "w") as f: + json.dump(merged_data, f) + + +if __name__ == "__main__": + main() diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/restart-jupyter-server b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/restart-jupyter-server new file mode 100755 index 00000000..6f2af98d --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/restart-jupyter-server @@ -0,0 +1,6 @@ +#!/bin/bash +set -e +echo "Restarting the Jupyter server. This page should refresh in a few seconds. Note that any terminals will be closed." +echo "If this page doesn't refresh after a few seconds, try reloading your browser window." +echo "Restarting now..." +nohup supervisorctl -c /etc/supervisor/conf.d/supervisord.conf restart jupyterlabserver > /dev/null 2>&1 & diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/restart-sagemaker-ui-jupyter-server b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/restart-sagemaker-ui-jupyter-server new file mode 100755 index 00000000..8f5207b8 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/restart-sagemaker-ui-jupyter-server @@ -0,0 +1,6 @@ +#!/bin/bash +set -e +echo "Restarting the Jupyter server. This page should refresh in a few seconds. Note that any terminals will be closed." +echo "If this page doesn't refresh after a few seconds, try reloading your browser window." +echo "Restarting now..." +nohup supervisorctl -c /etc/supervisor/conf.d/supervisord-sagemaker-ui.conf restart jupyterlabserver > /dev/null 2>&1 & diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/start-code-editor b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/start-code-editor new file mode 100755 index 00000000..bdd97c16 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/start-code-editor @@ -0,0 +1,84 @@ +#!/bin/bash +set -e + +EFS_MOUNT_POINT="/opt/amazon/sagemaker" +EBS_MOUNT_POINT="/home/sagemaker-user" + +persistent_settings_folder="${EBS_MOUNT_POINT}/sagemaker-code-editor-server-data" +default_settings_folder="${EFS_MOUNT_POINT}/sagemaker-code-editor-server-data" + +override_machine_settings() { + # create a new settings file with preset defaults or merge the defaults into the existing settings file + local settings_relative_path="data/Machine" + local settings_file_path_suffix="${settings_relative_path}/settings.json" + local persistent_machine_settings_file="${persistent_settings_folder}/${settings_file_path_suffix}" + local default_machine_settings_file="${default_settings_folder}/${settings_file_path_suffix}" + + if [ ! -f "$persistent_machine_settings_file" ]; then + # copy settings file to EBS if it doesn't exist in EBS + mkdir -p "${persistent_settings_folder}/${settings_relative_path}" + cp "$default_machine_settings_file" "$persistent_machine_settings_file" + echo "Created persistent settings file with default settings at $persistent_machine_settings_file" + else + # if it does exist then merge settings + echo "File already exists: ${persistent_machine_settings_file}. Merging default settings with existing settings." + python3 /usr/local/bin/merge-settings-util.py "$persistent_machine_settings_file" "$default_machine_settings_file" + fi +} + +copy_user_settings() { + local settings_relative_path="data/User" + local settings_file_path_suffix="${settings_relative_path}/settings.json" + local persistent_user_settings_file="${persistent_settings_folder}/${settings_file_path_suffix}" + local default_user_settings_file="${default_settings_folder}/${settings_file_path_suffix}" + if [ ! -f "$persistent_user_settings_file" ]; then + # copy user settings file to EBS if it doesn't exist in EBS + mkdir -p "${persistent_settings_folder}/${settings_relative_path}" + cp "$default_user_settings_file" "$persistent_user_settings_file" + echo "Created persistent settings file with default settings at $persistent_user_settings_file" + fi +} + +install_prepackaged_extensions() { + local prepackaged_extensions_dir="${default_settings_folder}/extensions" + local persistent_extensions_dir="${persistent_settings_folder}/extensions" + + # if extensions directory doesn't exist then this is the first time opening the app + if [ ! -d "${persistent_extensions_dir}" ]; then + mkdir -p $persistent_extensions_dir + + # find all pre-packaged extensions folders, symlink them to the persistent volume + find "$prepackaged_extensions_dir" -mindepth 1 -maxdepth 1 -type d | while read -r dir; do + dir_name=$(basename "$dir") + + ln -s "$dir" "${persistent_extensions_dir}/${dir_name}" + echo "Added extension: $dir" + done + fi +} + +eval "$(micromamba shell hook --shell=bash)" + +# Activate conda environment 'base', which is the default environment for sagemaker-distribution +micromamba activate base + +# Start code-editor server +if [ -n "$SAGEMAKER_APP_TYPE_LOWERCASE" ]; then + # SAGEMAKER_APP_TYPE is set, indicating the server is running within a SageMaker app. + override_machine_settings + copy_user_settings + install_prepackaged_extensions + # Configure the base url to be `//default`. + sagemaker-code-editor --host 0.0.0.0 --port 8888 \ + --without-connection-token \ + --base-path "/$SAGEMAKER_APP_TYPE_LOWERCASE/default" \ + --server-data-dir $persistent_settings_folder \ + --extensions-dir ${persistent_settings_folder}/extensions \ + --user-data-dir /opt/amazon/sagemaker/sagemaker-code-editor-user-data +else + sagemaker-code-editor --host 0.0.0.0 --port 8888 \ + --without-connection-token \ + --server-data-dir /opt/amazon/sagemaker/sagemaker-code-editor-server-data \ + --extension-dir /opt/amazon/sagemaker/sagemaker-code-editor-server-data/extensions \ + --user-data-dir /opt/amazon/sagemaker/sagemaker-code-editor-user-data +fi diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/start-jupyter-server b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/start-jupyter-server new file mode 100755 index 00000000..7b20d386 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/start-jupyter-server @@ -0,0 +1,43 @@ +#!/bin/bash +set -e + +eval "$(micromamba shell hook --shell=bash)" + +if [ -n "$SAGEMAKER_RECOVERY_MODE" ]; then + export HOME=$SAGEMAKER_RECOVERY_MODE_HOME + # Activate conda environment `sagemaker-recovery-mode` + micromamba activate sagemaker-recovery-mode +else + # Activate conda environment 'base' + micromamba activate base + jupyter labextension disable @amzn/sagemaker-data-explorer-jl-plugin sagemaker-data-explorer:plugin amzn/sagemaker-ui-theme-jlplugin @amzn/sagemaker-ui-doc-manager-jl-plugin @amzn/sagemaker-connection-magics-jlextension +fi + +# Start Jupyter server in rtc mode for shared spaces +if [ -n "$SAGEMAKER_APP_TYPE_LOWERCASE" ] && [ "$SAGEMAKER_SPACE_TYPE_LOWERCASE" == "shared" ]; then + jupyter labextension enable @jupyter/collaboration-extension + # SAGEMAKER_APP_TYPE is set, indicating the server is running within a SageMaker + # app. Configure the base url to be `//default`. + # SAGEMAKER_SPACE_TYPE_LOWERCASE flag is used to determine if the server should start + # in real-time-collaboration mode for a given space. + jupyter lab --ip 0.0.0.0 --port 8888 \ + --ServerApp.base_url="/$SAGEMAKER_APP_TYPE_LOWERCASE/default" \ + --ServerApp.token='' \ + --ServerApp.allow_origin='*' \ + --collaborative \ + --ServerApp.identity_provider_class=sagemaker_jupyterlab_extension_common.identity.SagemakerIdentityProvider \ + --YDocExtension.ystore_class=sagemaker_jupyterlab_extension_common.ydoc_override.ydoc.MySQLiteYStore + +# Start Jupyter server +elif [ -n "$SAGEMAKER_APP_TYPE_LOWERCASE" ]; then + # SAGEMAKER_APP_TYPE is set, indicating the server is running within a SageMaker + # app. Configure the base url to be `//default`. + jupyter lab --ip 0.0.0.0 --port 8888 \ + --ServerApp.base_url="/$SAGEMAKER_APP_TYPE_LOWERCASE/default" \ + --ServerApp.token='' \ + --ServerApp.allow_origin='*' +else + jupyter lab --ip 0.0.0.0 --port 8888 \ + --ServerApp.token='' \ + --ServerApp.allow_origin='*' +fi diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/start-sagemaker-ui-code-editor b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/start-sagemaker-ui-code-editor new file mode 100755 index 00000000..9183f485 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/start-sagemaker-ui-code-editor @@ -0,0 +1,107 @@ +#!/bin/bash +set -e + +EFS_MOUNT_POINT="/opt/amazon/sagemaker" +EBS_MOUNT_POINT="/home/sagemaker-user" + +persistent_settings_folder="${EBS_MOUNT_POINT}/sagemaker-code-editor-server-data" +default_settings_folder="${EFS_MOUNT_POINT}/sagemaker-code-editor-server-data" + +override_machine_settings() { + # create a new settings file with preset defaults or merge the defaults into the existing settings file + local settings_relative_path="data/Machine" + local settings_file_path_suffix="${settings_relative_path}/settings.json" + local persistent_machine_settings_file="${persistent_settings_folder}/${settings_file_path_suffix}" + local default_machine_settings_file="${default_settings_folder}/${settings_file_path_suffix}" + + if [ ! -f "$persistent_machine_settings_file" ]; then + # copy settings file to EBS if it doesn't exist in EBS + mkdir -p "${persistent_settings_folder}/${settings_relative_path}" + cp "$default_machine_settings_file" "$persistent_machine_settings_file" + echo "Created persistent settings file with default settings at $persistent_machine_settings_file" + else + # if it does exist then merge settings + echo "File already exists: ${persistent_machine_settings_file}. Merging default settings with existing settings." + python3 /usr/local/bin/merge-settings-util.py "$persistent_machine_settings_file" "$default_machine_settings_file" + fi +} + +copy_user_settings() { + local settings_relative_path="data/User" + local settings_file_path_suffix="${settings_relative_path}/settings.json" + local persistent_user_settings_file="${persistent_settings_folder}/${settings_file_path_suffix}" + local default_user_settings_file="${default_settings_folder}/${settings_file_path_suffix}" + if [ ! -f "$persistent_user_settings_file" ]; then + # copy user settings file to EBS if it doesn't exist in EBS + mkdir -p "${persistent_settings_folder}/${settings_relative_path}" + cp "$default_user_settings_file" "$persistent_user_settings_file" + echo "Created persistent settings file with default settings at $persistent_user_settings_file" + fi +} + +install_prepackaged_extensions() { + local prepackaged_extensions_dir="${default_settings_folder}/extensions" + local persistent_extensions_dir="${persistent_settings_folder}/extensions" + + # if extensions directory doesn't exist then this is the first time opening the app + if [ ! -d "${persistent_extensions_dir}" ]; then + mkdir -p $persistent_extensions_dir + + # find all pre-packaged extensions folders, symlink them to the persistent volume + find "$prepackaged_extensions_dir" -mindepth 1 -maxdepth 1 -type d | while read -r dir; do + dir_name=$(basename "$dir") + + ln -s "$dir" "${persistent_extensions_dir}/${dir_name}" + echo "Added extension: $dir" + done + fi +} + +set_code_editor_theme() { + echo "Setting code editor theme" + bash /etc/sagemaker-ui/set_code_editor_theme.sh +} + +disableJupyterKernels() { + local kernel_list + kernel_list=$(jupyter kernelspec list) + + for kernel in "$@"; do + if echo "$kernel_list" | grep -q "$kernel"; then + echo "Removing kernel: $kernel" + jupyter kernelspec remove -f -y "$kernel" + else + echo "Kernel not found: $kernel" + fi + done +} + +eval "$(micromamba shell hook --shell=bash)" + +# Activate conda environment 'base', which is the default environment for sagemaker-distribution +micromamba activate base + +# Disable Jupyter Kernels +disableJupyterKernels pysparkkernel sparkkernel glue_spark glue_pyspark + +# Start code-editor server +if [ -n "$SAGEMAKER_APP_TYPE_LOWERCASE" ]; then + # SAGEMAKER_APP_TYPE is set, indicating the server is running within a SageMaker app. + override_machine_settings + copy_user_settings + install_prepackaged_extensions + set_code_editor_theme + # Configure the base url to be `//default`. + sagemaker-code-editor --host 0.0.0.0 --port 8888 \ + --without-connection-token \ + --base-path "/$SAGEMAKER_APP_TYPE_LOWERCASE/default" \ + --server-data-dir $persistent_settings_folder \ + --extensions-dir ${persistent_settings_folder}/extensions \ + --user-data-dir /opt/amazon/sagemaker/sagemaker-code-editor-user-data +else + sagemaker-code-editor --host 0.0.0.0 --port 8888 \ + --without-connection-token \ + --server-data-dir /opt/amazon/sagemaker/sagemaker-code-editor-server-data \ + --extension-dir /opt/amazon/sagemaker/sagemaker-code-editor-server-data/extensions \ + --user-data-dir /opt/amazon/sagemaker/sagemaker-code-editor-user-data +fi \ No newline at end of file diff --git a/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/start-sagemaker-ui-jupyter-server b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/start-sagemaker-ui-jupyter-server new file mode 100755 index 00000000..b9748bfe --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/dirs/usr/local/bin/start-sagemaker-ui-jupyter-server @@ -0,0 +1,37 @@ +#!/bin/bash +set -e + +eval "$(micromamba shell hook --shell=bash)" + +# Activate conda environment 'base', which is the default environment for Cosmos +micromamba activate base + +sudo cp -r /etc/sagemaker-ui/kernels/. /opt/conda/share/jupyter/kernels/ +sudo cp /etc/sagemaker-ui/jupyter/server/jupyter_server_config.py /opt/conda/etc/jupyter/ + +mkdir -p /opt/conda/share/jupyter/lab/settings +cp -r /etc/sagemaker-ui/jupyter/lab/settings/. /opt/conda/share/jupyter/lab/settings + +if [[ $(jupyter kernelspec list | grep pysparkkernel) ]]; then + jupyter-kernelspec remove -f -y pysparkkernel +fi + +if [[ $(jupyter kernelspec list | grep sparkkernel) ]]; then + jupyter-kernelspec remove -f -y sparkkernel +fi + +if [[ $(jupyter kernelspec list | grep glue_spark) ]]; then + jupyter-kernelspec remove -f -y glue_spark +fi + +if [[ $(jupyter kernelspec list | grep glue_pyspark) ]]; then + jupyter-kernelspec remove -f -y glue_pyspark +fi + +jupyter lab --ip 0.0.0.0 --port 8888 \ + --ServerApp.base_url="/$SAGEMAKER_APP_TYPE_LOWERCASE/default" \ + --ServerApp.token='' \ + --ServerApp.allow_origin='*' \ + --SchedulerApp.db_url='sqlite:////tmp/.jupyter_scheduler_do_not_delete.sqlite' \ + --collaborative \ + --ServerApp.identity_provider_class='sagemaker_jupyter_server_extension.identity.SageMakerIdentityProvider' diff --git a/build_artifacts/v2/v2.7/v2.7.0/gpu.arg_based_env.in b/build_artifacts/v2/v2.7/v2.7.0/gpu.arg_based_env.in new file mode 100644 index 00000000..577d9abb --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/gpu.arg_based_env.in @@ -0,0 +1,6 @@ +conda-forge::cuda-compiler=$CUDA_MAJOR_MINOR_VERSION +conda-forge::cuda-libraries=$CUDA_MAJOR_MINOR_VERSION +conda-forge::cuda-libraries-dev=$CUDA_MAJOR_MINOR_VERSION +conda-forge::cuda-nvml-dev=12.6.77.* +conda-forge::cuda-command-line-tools=$CUDA_MAJOR_MINOR_VERSION +conda-forge::gds-tools=1.11.1.6.* \ No newline at end of file diff --git a/build_artifacts/v2/v2.7/v2.7.0/gpu.env.in b/build_artifacts/v2/v2.7/v2.7.0/gpu.env.in new file mode 100644 index 00000000..37110249 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/gpu.env.in @@ -0,0 +1,63 @@ +# This file is auto-generated. +conda-forge::s3fs[version='>=2024.10.0,<2025.0.0'] +conda-forge::seaborn[version='>=0.13.2,<1.0.0'] +conda-forge::jupyter-activity-monitor-extension[version='>=0.3.1,<1.0.0'] +conda-forge::mlflow[version='>=2.21.3,<3.0.0'] +conda-forge::sagemaker-mlflow[version='>=0.1.0,<1.0.0'] +conda-forge::langchain-aws[version='>=0.2.19,<1.0.0'] +conda-forge::jupyter-collaboration[version='>=2.1.5,<3.0.0'] +conda-forge::sagemaker-code-editor[version='>=1.5.0,<2.0.0'] +conda-forge::amazon-sagemaker-jupyter-ai-q-developer[version='>=1.2.4,<2.0.0'] +conda-forge::amazon-q-developer-jupyterlab-ext[version='>=3.4.8,<4.0.0'] +conda-forge::amazon_sagemaker_sql_editor[version='>=0.1.16,<1.0.0'] +conda-forge::amazon-sagemaker-sql-magic[version='>=0.1.4,<1.0.0'] +conda-forge::langchain[version='>=0.3.24,<1.0.0'] +conda-forge::fastapi[version='>=0.115.12,<1.0.0'] +conda-forge::uvicorn[version='>=0.34.2,<1.0.0'] +conda-forge::pytorch[version='>=2.4.1,<3.0.0'] +conda-forge::tensorflow[version='>=2.17.0,<3.0.0'] +conda-forge::python[version='>=3.11.11,<3.12.0'] +conda-forge::pip[version='>=24.3.1,<25.0.0'] +conda-forge::torchvision[version='>=0.19.1,<1.0.0'] +conda-forge::numpy[version='>=1.26.4,<2.0.0'] +conda-forge::pandas[version='>=2.2.3,<3.0.0'] +conda-forge::scikit-learn[version='>=1.5.2,<2.0.0'] +conda-forge::jinja2[version='>=3.1.6,<4.0.0'] +conda-forge::matplotlib-base[version='>=3.10.1,<4.0.0'] +conda-forge::sagemaker-headless-execution-driver[version='>=0.0.13,<1.0.0'] +conda-forge::ipython[version='>=8.35.0,<9.0.0'] +conda-forge::scipy[version='>=1.15.2,<2.0.0'] +conda-forge::keras[version='>=3.9.0,<4.0.0'] +conda-forge::py-xgboost-gpu[version='>=2.1.4,<3.0.0'] +conda-forge::jupyterlab[version='>=4.4.1,<5.0.0'] +conda-forge::ipywidgets[version='>=8.1.6,<9.0.0'] +conda-forge::conda[version='>=24.11.3,<25.0.0'] +conda-forge::boto3[version='>=1.37.1,<2.0.0'] +conda-forge::sagemaker-python-sdk[version='>=2.243.2,<3.0.0'] +conda-forge::supervisor[version='>=4.2.5,<5.0.0'] +conda-forge::autogluon[version='>=1.2.0,<2.0.0'] +conda-forge::aws-glue-sessions[version='>=1.0.9,<2.0.0'] +conda-forge::sagemaker-kernel-wrapper[version='>=0.0.5,<1.0.0'] +conda-forge::jupyter-ai[version='>=2.31.4,<3.0.0'] +conda-forge::jupyter-scheduler[version='>=2.10.0,<3.0.0'] +conda-forge::jupyter-lsp[version='>=2.2.5,<3.0.0'] +conda-forge::jupyterlab-lsp[version='>=5.0.3,<6.0.0'] +conda-forge::python-lsp-server[version='>=1.12.2,<2.0.0'] +conda-forge::notebook[version='>=7.4.1,<8.0.0'] +conda-forge::altair[version='>=5.5.0,<6.0.0'] +conda-forge::sagemaker-studio-analytics-extension[version='>=0.1.6,<1.0.0'] +conda-forge::jupyter-dash[version='>=0.4.2,<1.0.0'] +conda-forge::sagemaker-jupyterlab-extension[version='>=0.4.2,<1.0.0'] +conda-forge::sagemaker-jupyterlab-emr-extension[version='>=0.3.8,<1.0.0'] +conda-forge::amazon-sagemaker-jupyter-scheduler[version='>=3.1.11,<4.0.0'] +conda-forge::jupyter-server-proxy[version='>=4.4.0,<5.0.0'] +conda-forge::jupyterlab-git[version='>=0.51.1,<1.0.0'] +conda-forge::pyhive[version='>=0.7.0,<1.0.0'] +conda-forge::python-gssapi[version='>=1.9.0,<2.0.0'] +conda-forge::tf-keras[version='>=2.17.0,<3.0.0'] +conda-forge::git-remote-codecommit[version='>=1.16,<2.0.0'] +conda-forge::docker-cli[version='>=27.5.1,<28.0.0'] +conda-forge::sagemaker-studio-cli[version='>=1.0.6,<2.0.0'] +conda-forge::sagemaker-studio[version='>=1.0.13,<2.0.0'] +conda-forge::sagemaker-studio-dataengineering-sessions[version='>=1.0.10,<2.0.0'] +conda-forge::sagemaker-studio-dataengineering-extensions[version='>=1.0.9,<2.0.0'] diff --git a/build_artifacts/v2/v2.7/v2.7.0/gpu.env.out b/build_artifacts/v2/v2.7/v2.7.0/gpu.env.out new file mode 100644 index 00000000..97545216 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/gpu.env.out @@ -0,0 +1,858 @@ +# This file may be used to create an environment using: +# $ conda create --name --file +# platform: linux-64 +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-20.1.4-h024ca30_0.conda#4fc395cda27912a7d904b86b5dbf3a4d +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-3_kmp_llvm.conda#ee5c2118262e30b972bc0b4db8ef0ba5 +https://conda.anaconda.org/conda-forge/linux-64/_py-xgboost-mutex-2.0-gpu_0.tar.bz2#7702188077361f43a4d61e64c694f850 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda#ea8ac52380885ed41c1baa8f1d6d2b93 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda#ddca86c7040dd0e73b2b69bd7833d225 +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda#62ee74e96c5ebb0af99386de58cf9553 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda#01f8d123c96816249efd255a31ad7712 +https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda#db0bfbe7dd197b68ad5f30333bae6ce0 +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda#ede4673863426c0883c0063d853bbd85 +https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda#a76fd702c93cd2dfd89eff30a5fd45a8 +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda#30fd6e37fe21f86f4bd26d6ee73eeec7 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda#edb0dca6bc32e4f4789199455a1dbeb8 +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda#3fa05c528d8a1e2a67bbf1e36f22d3bc +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda#40b61aab5c7ba9ff276c41cfffe6b80b +https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda#5aa797f8787fe7a17d1b0821485b5adc +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda#47e340acb35de30501a76c7c799c41d7 +https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda#95db94f75ba080a22eb623590993167b +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda#de356753cfdbffcde5bb1e86e3aa6cd0 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda#283b96675859b20a825f8fa30f311446 +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda#d453b98d9c83e71da0741bb0ff4d76bc +https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda#4222072737ccff51314b5ece9c7d6f5a +https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda#8387070aa413ce9a8cc35a509fae938b +https://conda.anaconda.org/conda-forge/noarch/absl-py-2.2.0-pyhd8ed1ab_0.conda#107112a92cba7895f10a4c246c1770a1 +https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda#4547b39256e296bb758166893e909a7c +https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda#906fe13095e734cb413b57a49116cdc8 +https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda#3bfed7e6228ebf2f7b9eaa47f1b4e2aa +https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-7_cp311.conda#6320dac78b3b215ceac35858b2cfdb70 +https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae +https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda#014417753f948da1f70d132b2de573be +https://conda.anaconda.org/conda-forge/noarch/certifi-2025.4.26-pyhd8ed1ab_0.conda#c33eeaaa33f45031be34cda513df39b6 +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.2-pyhd8ed1ab_0.conda#40fe4284b8b5835a9073a645139f35af +https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda#39a4f67be3286c86d696df570b1201b7 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda#1cb1c67961f6dd257eae9e9691b341aa +https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda#d21daab070d76490cb39a8f1d1729d79 +https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda#461219d1a5bd61342293efa2c0c90eac +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.19-pyhd8ed1ab_0.conda#6bb37c314b3cc1515dcf086ffe01c46e +https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda#a9b9368f3701a417eac9edbcae7cb737 +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda#962b9857ee8e7018c22f2776ffa0b2d7 +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda#9efbfdc37242619130ea42b1cc4ed861 +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.2-pyh29332c3_0.conda#83fc6ae00127671e301c9f44254c31b8 +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.2-h0e9735f_0.conda#568ed1300869dca0ba09fb750cda5dbb +https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.30.2-pyhd8ed1ab_0.conda#e263a7875762bd3a2a6a925ab3ef4f81 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda#9d2072af184b5caa29492bf2344597bb +https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda#8b189310083baabfb622af68fd9d3ae3 +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda#e796ff8ddc598affdf7c173d6145f087 +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda#14dbe05b929e329dbaa6f2d0aa19466d +https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda#804ca9e91bcaea0824a341d55b1684f2 +https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda#ba7726b8df7b9d34ea80e82b097a4893 +https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda#1459379c79dda834673426504d52b319 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_hfdb39a5_mkl.conda#bdf4a57254e8248222cb631db4393ff1 +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_h372d94f_mkl.conda#2a06a6c16b45bd3d10002927ca204b67 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_hc41d3b0_mkl.conda#10d012ddd7cc1c7ff9093d4974a34e53 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda#a502d7aad449a1206efb366d6a12c52d +https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.8-py311h459d7ec_0.conda#9bc62d25dcf64eec484974a3123c9d57 +https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.6-h7480c83_3.conda#1c8b99e65a4423b1e4ac2e4c76fb0978 +https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.6.77-h3f2d84a_0.conda#314908ad05e2c4833475a7d93f4149ca +https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.6.77-h5888daf_0.conda#feb533cb1e5f7ffbbb82d8465e0adaad +https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.6.80-hbd13f7d_0.conda#85e9354a9e32f7526d2451ed2bb93347 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.6.85-hbd13f7d_0.conda#9d9909844a0133153d54b6f07283da8c +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.6.77-hbd13f7d_0.conda#3fe3afe309918465f82f984b3a1a85e9 +https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.6.4.1-h5888daf_1.conda#7718c5dd31ed259736a30b8a1422de70 +https://conda.anaconda.org/conda-forge/linux-64/cudnn-9.8.0.87-h81d5506_1.conda#c87536f2e5d0740f4193625eb00fab7e +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda#6565a715337ae279e351d0abd8ffe88a +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda#446bd6c8cb26050d528881df495ce646 +https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda#488f260ccda0afaf08acb286db439c2f +https://conda.anaconda.org/conda-forge/linux-64/libcudss-0.5.0.16-h14340ca_1.conda#290a26e7caf9bcbdde629db6612e212e +https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.3.0.4-hbd13f7d_0.conda#a296940fa2e0448d066d03bf6b586772 +https://conda.anaconda.org/conda-forge/linux-64/libnl-3.11.0-hb9d3cd8_0.conda#db63358239cbe1ff86242406d440e44a +https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2#d9c69a24ad678ffce24c6543a0176b00 +https://conda.anaconda.org/conda-forge/linux-64/libcap-2.75-h39aace5_0.conda#c44c16d6976d2aebbd65894d7741e67e +https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.55-h3f2d84a_0.conda#2bd47db5807daade8500ed7ca4c512a4 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda#e55712ff40a054134d51b89afca57dbc +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda#9de5350a85c4a20c685259b889aa6393 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda#6432cb5d4ac0046c3ac0a8a0f95842f9 +https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.4-h4e0b6ca_1.conda#04bcf3055e51f8dde6fab9672fb9fca0 +https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.4-hbe16f8c_1.conda#d6716795cd81476ac2f5465f1b1cde75 +https://conda.anaconda.org/conda-forge/linux-64/rdma-core-57.0-h5888daf_0.conda#e5be997517f19a365b8b111b888be426 +https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.11.1.6-h12f29b5_4.conda#44fd967c18c41e4e5822f339621a47b4 +https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.7.77-hbd13f7d_0.conda#d8b8a1e6e6205447289cd09212c914ac +https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.6.85-hbd13f7d_0.conda#dca2d62b3812922e6976f76c0a401918 +https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.5.4.2-hbd13f7d_0.conda#8186e9de34f321aa34965c1cb72c0c26 +https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.7.1.2-h5888daf_1.conda#200e029abc85b27af8935f8348bee84f +https://conda.anaconda.org/conda-forge/linux-64/libmagma-2.8.0-h566cb83_2.conda#b6818d8ad575df8faace47ee560e0630 +https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda#d8703f1ffe5a06356f06467f1d0b9464 +https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda#771ee65e13bc599b0b62af5359d80169 +https://conda.anaconda.org/conda-forge/linux-64/nccl-2.26.5.1-ha44e49d_0.conda#45823c363ce0803d29c4a444e4309634 +https://conda.anaconda.org/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda#aec4dba5d4c2924730088753f6fa164b +https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.6.0-cuda126_mkl_h9e9ac90_301.conda#86b93b838cc834b5b2bb096331392c55 +https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda#fd40bf7f7f4bc4b647dc8512053d9873 +https://conda.anaconda.org/conda-forge/linux-64/optree-0.15.0-py311hd18a35c_0.conda#d4f6d179cdc7ee53e84cfbb1b385019b +https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda#120541563e520d12d8e39abd7de9092c +https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda#8088a5e7b2888c780738c3130f2a969d +https://conda.anaconda.org/conda-forge/noarch/setuptools-80.1.0-pyhff2d567_0.conda#f6f72d0837c79eaec77661be43e8a691 +https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.12-py311hd8ed1ab_0.conda#451718359f1658c6819d8665f82585ab +https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda#c94a5994ef49749880a8139cf9afcbe1 +https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda#2eeb50cab6652538eee8fc0bc3340c81 +https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda#aa14b9a5196a6d8dd364164b7ce56acf +https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.2.1-py311h0f6cedb_0.conda#8243c1be284256690be3e29e2ea63413 +https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda#3585aa87c43ab15b167b574cd73b057b +https://conda.anaconda.org/conda-forge/noarch/sympy-1.14.0-pyh2585a3b_105.conda#8c09fac3785696e1c477156192d64b91 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvdisasm-12.6.77-hbd13f7d_1.conda#86be0f804995240f973a48f291d371de +https://conda.anaconda.org/conda-forge/linux-64/cuda-cuobjdump-12.6.77-hbd13f7d_1.conda#881d6e2cdb12db52e0c3d9dff6f7f14d +https://conda.anaconda.org/conda-forge/linux-64/cuda-crt-tools-12.6.85-ha770c72_0.conda#4ab193b5fcdcf8d7b094221e3977a112 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-tools-12.6.85-he02047a_0.conda#0919bdf9454da5eb974e98dd79bf38fe +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-tools-12.6.85-he02047a_0.conda#30b272fa555944cb44f8d4dc9244abb5 +https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.4-he9d0ab4_0.conda#96c33bbd084ef2b2463503fb7f1482ae +https://conda.anaconda.org/conda-forge/linux-64/triton-3.2.0-cuda126py311hc9dd8b4_1.conda#caffc6da585da83003ea1691c485899e +https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.6.0-cuda126_mkl_py311_h01662ba_301.conda#356032161ba378ac1bc52ca8b7164d5f +https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py311h9e33e62_0.conda#3ad539d7a9e392539fccfd3adf411d7c +https://conda.anaconda.org/conda-forge/noarch/accelerate-1.5.2-pyhd8ed1ab_0.conda#b22d3c50e59a528a19690b854aad66bf +https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda#f4e90937bbfc3a4a92539545a37bb448 +https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda#a451d576819089b0d672f18768be0f65 +https://conda.anaconda.org/conda-forge/noarch/fs-2.4.16-pyhd8ed1ab_0.conda#a231fa7cb5f101f1f3ae8480c0002f91 +https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda#0c3cc595284c5e8f0f9900a9b228a332 +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.10.0-pyha770c72_0.conda#ae2ad334f34040e147cc5824b450463b +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda#5ba79d7c71f03c678c8ead841f347d6e +https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda#88476ae6ebd24f39261e0854ac244f33 +https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda#f26ec986456c30f6dff154b670ae140f +https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_3.conda#c9f8fe78840d5c04e61666474bd739b2 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.0-hb9d3cd8_0.conda#f65c946f28f0518f41ced702f44c52b7 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.7-h043a21b_0.conda#4fdf835d66ea197e693125c64fbd4482 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.1-h3870646_2.conda#17ccde79d864e6183a83c5bbb8fff34d +https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.14-h6c98b2b_0.conda#efab4ad81ba5731b2fefa0ab4359e884 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.17.0-h3dad3f2_6.conda#3a127d28266cdc0da93384d1f59fe8df +https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.4-hb9b18c6_4.conda#773c99d0dbe2b3704af165f97ff399e5 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.3-h3870646_2.conda#06008b5ab42117c89c982aa2a32a5b25 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.6-hd08a7f5_4.conda#f5a770ac1fd2cb34b21327fc513013a7 +https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.3-h3870646_2.conda#303d9e83e0518f1dcb66e90054635ca6 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.4-h04a3f94_2.conda#81096a80f03fc2f0fb2a230f5d028643 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.12.2-h108da3e_2.conda#90e07c8bac8da6378ee1882ef0a9374a +https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.13-h822ba82_2.conda#9cf2c3c13468f2209ee814be2c88655f +https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.31.0-h55f77e1_4.conda#0627af705ed70681f5bede31e72348e5 +https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2#30186d27e2c9fa62b45fb1476b7200e3 +https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda#c277e0a4d549b03ac1e9d6cbbe3d017b +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda#3f43953b7d3fb3aaa1d0d0723d91e368 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda#f7f0d6cc2dc986d42ac2689ec88192be +https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda#172bf1cd1ff8629f2b1179945ed45055 +https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda#19e57602824042dfd0446292ef90488b +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda#eecce068c7e4eddeb169591baac20ac4 +https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.13.0-h332b0f4_0.conda#cbdc92ac0d93fe3c796e36ad65c7905c +https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.510-h37a5c72_3.conda#beb8577571033140c6897d257acc7724 +https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda#0a8838771cc2e985cd295e01ae83baf1 +https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda#73f73f60854f325a55f1d31459f2ab73 +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda#13de36be8de3ae3f05ba127631599213 +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda#7eb66060455c7a47d9dcdbfa9f46579b +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda#7c1980f89dd41b097549782121a73490 +https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda#d411fc29e338efb48c5fd4576d71d881 +https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda#ff862eebdfeb2fd048ae9dc92510baca +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda#41b599ed2b02abcfdd84302bff174b23 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda#9566f0bd264fbd463002e759b8a82401 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda#06f70867945ea6a84d35836af780f1de +https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda#b2fede24428726dd867611664fb372e8 +https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda#e84ddf12bde691e8ec894b00ea829ddf +https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_2.conda#bfcedaf5f9b003029cc6abe9431f66bf +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.36.0-h2b5623c_0.conda#c96ca58ad3352a964bfcb85de6cd1496 +https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2#c965a5aa0d5c1c37ffc62dff36e28400 +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.36.0-h0121fbd_0.conda#fc5efe1833a4d709953964037985bb72 +https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda#4fb055f57404920a43b147031471e03b +https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h3f2d84a_0.conda#d76872d096d063e226482c99337209dc +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda#c9f075ab2f33b3bbee9e62d4ad0a6cd8 +https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda#a83f6a2fdc079e643237887a37460668 +https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda#1f5a5d66e77a39dc5bd639ec953705cf +https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda#aeccfff2806ae38430638ffbb4be9610 +https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda#3b3e64af585eadfb52bb90b553db5edf +https://conda.anaconda.org/conda-forge/linux-64/orc-2.1.1-h2271f48_0.conda#67075ef2cb33079efee3abfe58127a3b +https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-h1938f28_3_cuda.conda#9ef724782cd5b90dd807425effcae27c +https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hb826db4_3_cuda.conda#8ad8c6fb0d492bd1866a67015ef3ffc5 +https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda#a1cfcc585f0c42bf8d5546bb1dfb668d +https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda#dcb95c0a98ba9ff737f7ae482aef7833 +https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h3f30f2e_3_cuda.conda#bb9f38db50bd715eb0b90468fec41c9f +https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hb826db4_3_cuda.conda#9f7735737257d636b439324485fe0299 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-hbf482d9_3_cuda.conda#fd775b79193481c0a669aa97770376ec +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py311hcae7c52_0_cuda.conda#1e12642f6c4bce23719ea4c481088bed +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py311h38be061_0.conda#fd25bdbbb08557c2fab04b26926a8c5c +https://conda.anaconda.org/conda-forge/noarch/triad-0.9.8-pyhd8ed1ab_1.conda#ce141bc07d3fe6f0a63effb6ff6bc1f4 +https://conda.anaconda.org/conda-forge/noarch/adagio-0.2.6-pyhd8ed1ab_1.conda#e501931a052662243622ca1a56147f5f +https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2#bbf6f174dcd3254e19a2f5d2295ce808 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda#55199e2ae2c3651f6f9b2a447b47bdc9 +https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda#3c255be50a506c50765a93a6644f32fe +https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda#51f5be229d83ecd401fb369ab96ae669 +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda#9ccd736d31e0c6e41f54e704e5312811 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda#8f5b0b297b59e1ac160ad4beec99dbee +https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb +https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda#49023d73832ef61042f6a237cb2687e7 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab +https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda#b90bece58b4c2bf25969b70f3be42d25 +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.1-h3618099_1.conda#714c97d4ff495ab69d1fdfcadbcae985 +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda#b3c17d95b5a10c6e64a21fa17573e70e +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda#f6ebe2cb3f82ba6c057dde5d9debe4f7 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda#8035c64cb77ed555e3f150b7b3972480 +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda#92ed62436b625154323d40d5f2f11dd7 +https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda#d2f1c87d4416d1e7344cf92b1aaee1c4 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda#fb901ff28063514abb6046c9ec2c4a45 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda#1c74ff8c35dcadf952a16f752ca5aa49 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda#db038ce880f100acc74dba10302b5630 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda#febbab7d15033c913d53c7a2c102309d +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda#96d57aba173e878a2089d5638016dc5e +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda#09262e66b19567aff4f592fb53b28760 +https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda#9fa334557db9f63da6c9285fd2a48638 +https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda#9344155d33912347b37f0ae6c410a835 +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h86f0d12_0.conda#27fe770decaf469a53f3e3a6d593067f +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda#63f790534398730f59e1b899c3644d4a +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_4.conda#6c1028898cf3a2032d9af46689e1b81a +https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda#201db6c2d9a3c5e46573ac4cb2e92f4f +https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda#f87c7b7c2cb45f323ffbce941c78ab7c +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.1.0-h3beb420_0.conda#95e3bb97f9cdc251c0c68640e9c10ed3 +https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2#ac7bc6a654f8f41b352b38f4051135f8 +https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda#21899b96828014270bd24fd266096612 +https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-he92a37e_3.conda#d27665b20bc4d074b86e628b3ba5ab8b +https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.0-unix_0.conda#11539f9e49efaa281da735ded100b152 +https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.6.0-py311h62d540b_0.conda#ad01dcb674e8792b626276999ab1825e +https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda#1a3981115a398535dbe3f6d5faae3d36 +https://conda.anaconda.org/conda-forge/noarch/attrs-23.2.0-pyh71513ae_0.conda#5e4c0743c70186509d1412e03c2d8dfa +https://conda.anaconda.org/conda-forge/linux-64/multidict-6.4.3-py311h2dc5d0c_0.conda#75ce8e460c19ba5040f39d11284b70a6 +https://conda.anaconda.org/conda-forge/linux-64/propcache-0.3.1-py311h2dc5d0c_0.conda#c75eb8c91d69fe0385fce584f3ce193a +https://conda.anaconda.org/conda-forge/linux-64/yarl-1.20.0-py311h2dc5d0c_0.conda#f937346d50212388f8c954e52133356f +https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.9.5-py311h459d7ec_0.conda#0175d2636cc41dc019b51462c13ce225 +https://conda.anaconda.org/conda-forge/noarch/aioitertools-0.12.0-pyhd8ed1ab_1.conda#3eb47adbffac44483f59e580f8600a1e +https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_1.conda#972bdca8f30147135f951847b30399ea +https://conda.anaconda.org/conda-forge/noarch/botocore-1.37.3-pyge310_1234567_0.conda#7d4948ef8b96fa964c3f47fe261520db +https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py311h9ecbd09_0.conda#c4bb961f5a2020837fe3f7f30fadc2e1 +https://conda.anaconda.org/conda-forge/noarch/aiobotocore-2.22.0-pyhd8ed1ab_0.conda#bc75449e03b6f28df6625e3dd96d2084 +https://conda.anaconda.org/conda-forge/noarch/aiohttp-cors-0.7.0-pyhd8ed1ab_2.conda#d1af42a96bb90a0b3a9523a10c4aaf4b +https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8 +https://conda.anaconda.org/conda-forge/noarch/mako-1.3.10-pyhd8ed1ab_0.conda#c5bb3eea5f1a00fcf3d7ea186209ce33 +https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.2.1-py311hfdbb021_0.conda#8aa3be2b6b9eff63f127a5dfcac60a43 +https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-2.0.40-py311h9ecbd09_0.conda#2e0d3c5a4afb139b23a68a23a2980851 +https://conda.anaconda.org/conda-forge/noarch/alembic-1.15.2-pyhd8ed1ab_0.conda#b412ae3c8625f1c05e9f7f3ce7f77554 +https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda#c85c76dc67d75619a92f51dfbce06992 +https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.24.0-py311h687327b_0.conda#e2fc6063859ff5fd62f983c31e4bf521 +https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda#9140f1c09dd5489549c6a33931b943c7 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda#41ff526b1083fde51fbdc93f29282e0e +https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda#5a5870a74432aa332f7d32180633ad05 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda#a3cead9264b331b32fe8f0aabc967522 +https://conda.anaconda.org/conda-forge/noarch/narwhals-1.38.1-pyhe01879c_0.conda#1da557080c9976b9898abbf0fc64086c +https://conda.anaconda.org/conda-forge/noarch/altair-5.5.0-pyhd8ed1ab_1.conda#e54e67e5aea7288ba110cf685252f599 +https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.11.3-pyhd8ed1ab_0.conda#2d1d519bcf3031d5d809411d1aa9f838 +https://conda.anaconda.org/conda-forge/noarch/boto3-1.37.3-pyhd8ed1ab_0.conda#9f35fb5975b0131816a72dfdd6dbbc91 +https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.5-pyh29332c3_0.conda#d9d0f99095a9bb7e3641bca8c6ad2ac7 +https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda#a16662747cdeb9abbac74d0057cc976e +https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda#bf7a226e58dfb8346c70df36065d86c9 +https://conda.anaconda.org/conda-forge/noarch/anyio-4.9.0-pyh29332c3_0.conda#9749a2c77a7c40d432ea0927662d7e52 +https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda#4b69232755285701bc86a5afe4d9933a +https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda#0a802cb9888dd14eeefc611f05c40b6e +https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda#8e6923fc12f1fe8f8c4e5c9f343256ac +https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda#b4754fb1bdcb70c8fd54f918301582c6 +https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda#4f14640d58e2cc0aa0819d9d8ba125bb +https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda#d6989ead454181f4f9bc987d3dc4e285 +https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda#019a7385be9af33791c989871317e1ed +https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda#74673132601ec2b7fc592755605f4c1b +https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.14-py311hfdbb021_0.conda#1c229452e28e2c4607457c7b6c839bc7 +https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda#9ce473d1d1be1cc3810856a48b3fab32 +https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda#5c092057b6badd30f75b06244ecd01c9 +https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda#a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 +https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda#af6ab708897df59bd6e7283ceab1b56b +https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda#7d9daffbb8d8e0af0f769dbbcd173a54 +https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda#d0d408b1f18883a944376da5cf8101ea +https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda#11a9d1d09a3615fc07c3faf79bc0b943 +https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda#b68980f2495d096e71c7fd9d7ccf63e6 +https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda#d17ae9db4dc594267181bd199bf9a551 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda#232fb4577b6687b2d503ef8e254270c9 +https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda#8f587de4bcf981e26228f268df374a9b +https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda#81d30c08f9a3e556e8ca9e124b044d14 +https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda#3bfdfb8dbcdc4af1ae3f9a8eb3948f04 +https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda#b1b505328da7a6b246787df4b5a49fbc +https://conda.anaconda.org/conda-forge/noarch/ipython-8.36.0-pyh907856f_0.conda#886e40ae1c3851b6d348d4cd41e5de39 +https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda#424844562f5d337077b445ec6b1398a7 +https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda#0a2980dada0dd7fd0998f0342308b1b1 +https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda#a587892d3c13b6621a6091be690dbca2 +https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda#3947a35e916fcc6b9825449affbf4214 +https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py311h7deb3e3_0.conda#eb719a63f26215bba3ee5b0227c6452b +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda#df3aee9c3e44489257a840b8354e77b9 +https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda#4ebae00eae9705b0c3d6d1018a81d047 +https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda#598fd7d4d0de2455fb74f56063969a97 +https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda#b40131ab6a36ac2c09b7c57d4d3fbf99 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda#12c566707c80111f9799308d9e265aef +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda#55553ecd5328336368db611f350b7039 +https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py311h9ecbd09_5.conda#18143eab7fcd6662c604b85850f0db1e +https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda#a7ee488b71c30ada51c48468337b85ba +https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2#576d629e47797577ab0f1b351297ef4a +https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551 +https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda#d3549fd50d450b6d9e7dddff25dd2110 +https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda#1dbc4a115e2ad9fb7f9d5b68397f66f9 +https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda#46b53236fdd990271b03c3978d4218a9 +https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda#0b0154421989637d424ccf0f104be51a +https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py311h38be061_1.conda#5ca76f61b00a15a9be0612d4d883badc +https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda#36de09a8d3e5d5e6f4ee63af49e59706 +https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f +https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda#e7cb0f5745e4c5035a460248334af7eb +https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda#b49f7b291e15494aafb0a7d74806f337 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda#a5b1a8065857cc4bd8b7a38d063bb728 +https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda#a61bf9ec79426938ff785eb69dbb1960 +https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda#f56000b36f09ab7533877e695e4e8cb0 +https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda#efba281bbdae5f6b0a1d53c6d4a97c93 +https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda#2d983ff1b82a1ccb6f2e9d8784bdd6bd +https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.7-pyhd8ed1ab_0.conda#fb32097c717486aa34b38a9db57eb49e +https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.4-pyha770c72_0.conda#9f07c4fc992adb2d6c30da7fab3959a7 +https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda#2841eb5bfc75ce15e9a0054b98dcd64d +https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda#f0b4c8e370446ef89797608d60a564b3 +https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda#f1acf5fdefa8300de697982bcb1761c9 +https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda#a30e9406c873940383555af4c873220d +https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda#fd312693df06da3578383232528c468d +https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda#7ec6576e328bc128f4982cd646eeba85 +https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda#38e34d2d1d9dca4fb2b9a0a04f604e2c +https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda#bbe1963f1e47f594070ffe87cdf612ea +https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda#6bb0d77277061742744176ab555b723c +https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda#d24beda1d30748afcc87c429454ece1b +https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda#f6d7aa696c67756a650e91e15e88223c +https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda#e51f1e4089cad105b6cac64bd8166587 +https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda#3e01e386307acc60b2f89af0b2e161aa +https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda#938c8de6b9de091997145b3bf25cdbf9 +https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda#84f8f77f0a9c6ef401ee96611745da8f +https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda#6ba8c206b5c6f52b82435056cf74ee46 +https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda#0b4c3908e5a38ea22ebb98ee5888c768 +https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda#0a01c169f0ab0f91b26e77a3301fbfe4 +https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda#56275442557b3b45752c10980abfe2db +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda#9dc4b2b0f41f0de41d27f3293e319357 +https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda#e7f89ea5f7ea9401642758ff50a2d9c1 +https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda#ac944244f1fed2eb49bae07193ae8215 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.4.2-pyhd8ed1ab_0.conda#1f5f3b0fcff308d8fbaa73c43af08e2f +https://conda.anaconda.org/conda-forge/noarch/amazon-q-developer-jupyterlab-ext-3.4.8-pyhd8ed1ab_1.conda#3a0d9c73d9764a12e19e9f6cdefb77c6 +https://conda.anaconda.org/conda-forge/noarch/aws-embedded-metrics-3.2.0-pyhd8ed1ab_0.conda#e1c511655b6e9eb0265c9715c7fa410f +https://conda.anaconda.org/conda-forge/linux-64/libfaiss-1.9.0-h72e5a87_0_cpu.conda#95069767db711a0e1e3df3237998c04d +https://conda.anaconda.org/conda-forge/linux-64/faiss-1.9.0-py311hbed6fca_0_cpu.conda#81ce81de368ba0364008f482de1115a2 +https://conda.anaconda.org/conda-forge/linux-64/faiss-cpu-1.9.0-h718b53a_0.conda#1b6350943cb03666539e1995fd45894d +https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda#f22f4d4970e09d68a10b922cbb0408d3 +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda#364ba6c9fb03886ac979b482f39ebb92 +https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 +https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.1-pyhd8ed1ab_0.conda#2fcb582444635e2c402e8569bb94e039 +https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda#0badf9c54e24cecfb0ad2f99d680c163 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.4.1-pyhd8ed1ab_0.conda#0735ecef025a6c2d6eb61aae4785fc3f +https://conda.anaconda.org/conda-forge/noarch/deepmerge-2.0-pyhd8ed1ab_1.conda#75c5496323e2ef172bfeec4651eb3e66 +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.0.1-py311h9ecbd09_0.conda#69a0a85acdcc5e6d0f1cc915c067ad4c +https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.0-py311hd18a35c_0.conda#682f76920687f7d9283039eb542fdacf +https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda#0401a17ae845fa72c7210e206ec5647d +https://conda.anaconda.org/conda-forge/noarch/tblib-3.1.0-pyhd8ed1ab_0.conda#a15c62b8a306b8978f094f76da2f903f +https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda#e52c2ef711ccf31bb7f70ca87d144b9e +https://conda.anaconda.org/conda-forge/noarch/distributed-2025.4.1-pyhd8ed1ab_0.conda#cd6d1cab1174ca5e954b7dbae659b479 +https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda#fd5062942bfa1b0bd5e0d2a4397b099e +https://conda.anaconda.org/conda-forge/noarch/jsonpath-ng-1.6.1-pyhd8ed1ab_1.conda#5c21e268b3020ff115372b797336793e +https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda#3ce482ec3066e6d809dbbb1d1679f215 +https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_1.conda#cb60ae9cf02b9fcb8004dec4089e5691 +https://conda.anaconda.org/conda-forge/linux-64/orjson-3.10.18-py311h9e33e62_0.conda#368f6c74d0d754586a8cc6228e675dd7 +https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda#2934f256a8acfe48f6ebb4fce6cde29c +https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.33.2-py311hdae7d1d_0.conda#484d0d62d4b069d5372680309fc5f00c +https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.0-pyhd8ed1ab_0.conda#c5c76894b6b7bacc888ba25753bc8677 +https://conda.anaconda.org/conda-forge/noarch/pydantic-2.11.4-pyh3cfb1c2_0.conda#8ad3ad8db5ce2ba470c9facc37af00a9 +https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-1.0.0-pyhd8ed1ab_1.conda#66de8645e324fda0ea6ef28c2f99a2ab +https://conda.anaconda.org/conda-forge/noarch/langsmith-0.2.11-pyhd8ed1ab_0.conda#9d949c17fcf0e72779d75ae1546d1242 +https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda#5d99943f2ae3cc69e1ada12ce9d4d701 +https://conda.anaconda.org/conda-forge/noarch/langchain-core-0.3.59-pyhd8ed1ab_0.conda#1a501bd88ed11f6c44b8fcb4830645ff +https://conda.anaconda.org/conda-forge/noarch/langchain-text-splitters-0.3.8-pyhd8ed1ab_0.conda#0fcaf9f098a80efcb3fc94450d47a14f +https://conda.anaconda.org/conda-forge/noarch/langchain-0.3.25-pymin39_hff2d567_0.conda#1a0f7121a664f91ab9b68c5a063bea18 +https://conda.anaconda.org/conda-forge/noarch/marshmallow-3.26.1-pyhd8ed1ab_0.conda#5122fd693171117f91516ce0f6c7a4de +https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda#e9c622e0d00fa24a6292279af3ab6d06 +https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_1.conda#fa31df4d4193aabccaf09ce78a187faf +https://conda.anaconda.org/conda-forge/noarch/dataclasses-json-0.6.7-pyhd8ed1ab_1.conda#963685798962b717d9940d3f3f6a1ec8 +https://conda.anaconda.org/conda-forge/noarch/httpx-sse-0.4.0-pyhd8ed1ab_1.conda#3f9aa7f084adbbbb1fb235e6a72da100 +https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.1.0-pyh29332c3_1.conda#27d816c6981a8d50090537b761de80f4 +https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.9.1-pyh3cfb1c2_0.conda#29dd5c4ece2497b75b4050ec3c8d4044 +https://conda.anaconda.org/conda-forge/noarch/langchain-community-0.3.23-pymin39_hff2d567_0.conda#70845f5fd633b8a47997db712de99617 +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-magics-2.31.4-pyhd8ed1ab_0.conda#4fb0b1fbd0303e869c503e2f5e4257ce +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-2.31.4-pyhd8ed1ab_0.conda#20fea75cbc9998ee8b1d03525093a46a +https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda#7fe569c10905402ed47024fc481bb371 +https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda#b866ff7007b934d564961066c8195983 +https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py311hfdbb021_0.conda#ddf920c3b5d1cbd5ffbea591d2ad09ea +https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.2.10-pyhbc23db3_0.conda#2c18ee679aa838a190eeaae5a14afc9e +https://conda.anaconda.org/conda-forge/linux-64/onnxruntime-1.21.1-py311h4107d7c_200_cuda.conda#fa922be939dc1d98cfa2c45b0a9b946b +https://conda.anaconda.org/conda-forge/linux-64/y-py-0.6.2-py311h9e33e62_1.conda#72bb2cdc3505bb8f015d0244f2b61b76 +https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.12.4-pyhd8ed1ab_1.conda#ce587cae6e9163339bab26048f19842b +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-common-0.2.2-pyhd8ed1ab_0.conda#6a9628656356c639a5267aebc7441e62 +https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d +https://conda.anaconda.org/conda-forge/noarch/dill-0.4.0-pyhd8ed1ab_0.conda#885745570573eb6a08e021841928297a +https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.18-py311h9ecbd09_0.conda#5c48064e8c7f07b21cbec206f7a448c1 +https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb47aa4a_0.conda#607e13a8caac17f9a664bcab5302ce06 +https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py311h9ecbd09_2.conda#4b49b833ad54b3e26da1e743a4e4bc13 +https://conda.anaconda.org/conda-forge/noarch/responses-0.18.0-pyhd8ed1ab_0.tar.bz2#a10d30e613a2a1a78a89ceadf3832e7c +https://conda.anaconda.org/conda-forge/noarch/datasets-2.2.1-pyhd8ed1ab_0.tar.bz2#521decd6877eb8e8e720af29afd5d88a +https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py311h9ecbd09_0.conda#08f56182b69c47595c7fbbbc195f4867 +https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.1-py311h182c674_0.conda#a934f723dcd2813d96469a2723df6d62 +https://conda.anaconda.org/conda-forge/noarch/transformers-4.51.3-pyhd8ed1ab_0.conda#3337cde55c3a1e2defd3fcada980c571 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-jupyter-ai-q-developer-1.2.4-pyhd8ed1ab_2.conda#e80b2d95293c92dc867bd8d43b876405 +https://conda.anaconda.org/conda-forge/noarch/croniter-1.4.1-pyhd8ed1ab_0.conda#7a4568626f8d6e7c63dcb25d5501a967 +https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.6.4-ha770c72_0.conda#53f2cd4128fa7053bb029bbeafbe3f2e +https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.6-hed9df3c_0.conda#5b0afb6c52e74a7eca2cf809a874acf4 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.6-hb482800_0.conda#aa90ea40c80d4bd3da35cb17ed668f22 +https://conda.anaconda.org/conda-forge/noarch/jupyter_scheduler-2.10.0-pyhd8ed1ab_1.conda#27833825f2eaf4dfdc0bfd50f1ad3ab1 +https://conda.anaconda.org/conda-forge/noarch/jupyter-scheduler-2.10.0-pyhd8ed1ab_1.conda#10ae095b709223cdc85e5b9baca628c9 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-jupyter-scheduler-3.1.11-pyhd8ed1ab_0.conda#852540988d3f34f42a5fbf073b7a0f0b +https://conda.anaconda.org/conda-forge/linux-64/cryptography-44.0.3-py311hafd3f86_0.conda#f3263a106241f8fa41486cb7333c2384 +https://conda.anaconda.org/conda-forge/noarch/pyathena-3.13.0-pyhd8ed1ab_0.conda#a06e466e3e7e4f1d23382dc350fa13ed +https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda#e71f31f8cfb0a91439f2086fc8aa0461 +https://conda.anaconda.org/conda-forge/linux-64/lxml-5.4.0-py311hbd2c71b_0.conda#8f918de217abd92a1197cd0ef3b5ce16 +https://conda.anaconda.org/conda-forge/noarch/asn1crypto-1.5.1-pyhd8ed1ab_1.conda#09c02b0ea863321bbe216e7dd0df36db +https://conda.anaconda.org/conda-forge/noarch/scramp-1.4.4-pyhd8ed1ab_0.tar.bz2#2fac165a69d120a1689e1955ba1a4bfd +https://conda.anaconda.org/conda-forge/noarch/redshift_connector-2.1.5-pyhd8ed1ab_0.conda#47164f820ad3bb5f25679bfb4ae6e3bc +https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.1-pyhd8ed1ab_0.conda#84c5c40ea7c5bbc6243556e5daed20e7 +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-25.0.0-pyhd8ed1ab_0.conda#195fbabc5cc805f2cc10cb881a19cf8b +https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.2-pyha770c72_1.conda#1d9ab4fc875c52db83f9c9b40af4e2c8 +https://conda.anaconda.org/conda-forge/linux-64/snowflake-connector-python-3.15.0-np20py311h31610b7_0.conda#216e9360c993a3edecd8959ef97c17c0 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-execution-0.1.7-pyhd8ed1ab_0.conda#488bb82aa4fdff437a5b871efa45ccb0 +https://conda.anaconda.org/conda-forge/noarch/sqlparse-0.5.0-pyhd8ed1ab_0.conda#4dd428bd295ba44babd13050f2bcc622 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-magic-0.1.4-pyhd8ed1ab_0.conda#358b1deaa41aa19ff089d8992966ae5e +https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_1.conda#1c33d47dcfb2f90c80c6d2213f9d65d7 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-lsp-5.0.3-pyhd8ed1ab_0.conda#63ec86c18fd4ab77ae3ada5d48bcf6fc +https://conda.anaconda.org/conda-forge/noarch/amazon_sagemaker_sql_editor-0.1.16-pyhd8ed1ab_0.conda#cfa6b8604cc52d907241918d51f818dd +https://conda.anaconda.org/conda-forge/linux-64/ansi2html-1.9.2-py311h38be061_2.conda#7e747e54809f61885f450f8ddbdcce02 +https://conda.anaconda.org/conda-forge/noarch/ansicolors-1.1.8-pyhd8ed1ab_0.tar.bz2#e4929dd673bcb012fab516878e72f6f6 +https://conda.anaconda.org/conda-forge/noarch/antlr-python-runtime-4.9.3-pyhd8ed1ab_1.tar.bz2#c88eaec8de9ae1fa161205aa18e7a5b1 +https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda#346722a0be40f6edc53f12640d301338 +https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.5-pyhd8ed1ab_0.conda#845b38297fca2f2d18a29748e2ece7fa +https://conda.anaconda.org/conda-forge/linux-64/astroid-3.3.9-py311h38be061_0.conda#cabdabc18d53f957c01685765f24381a +https://conda.anaconda.org/conda-forge/noarch/astunparse-1.6.3-pyhd8ed1ab_3.conda#d3f195dfdbbf736e4ec178bbec2a975c +https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.0-h5888daf_0.conda#d6845ae4dea52a2f90178bf1829a21f8 +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda#4bdb303603e9821baf5fe5fdff1dc8f8 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda#17dcc85db3c7886650b8908b183d6876 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda#7bbe9a0cc0df0ac5f5a8ad6d6a11af2f +https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2#8cb2fc4cd6cc63f1369cfa318f581cc3 +https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda#f730d54ba9cd543666d7220c9f7ed563 +https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2#6b889f174df1e0f816276ae69281af4d +https://conda.anaconda.org/conda-forge/noarch/autogluon.common-1.3.0-pyhd8ed1ab_0.conda#7ef98408f8ccdd6c75297f5d4c91d144 +https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_2.conda#1054c53c95d85e35b88143a3eda66373 +https://conda.anaconda.org/conda-forge/noarch/py4j-0.10.9.9-pyhd8ed1ab_0.conda#9c12bcccde15a83c99dd84b1ab445084 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda#01de444988ed960031dbe84cf4f9b1fc +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda#f92e6e0a3c0c0c85561ef61aa59d555d +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py311h8f841c2_0.conda#5ec0a1732a05376241e1e4c6d50e0e91 +https://conda.anaconda.org/conda-forge/noarch/hyperopt-0.2.7-pyhd8ed1ab_1.conda#6d445b7daedb9989985530de7d26eb4b +https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.2-py311hd18a35c_0.conda#f8e440efa026c394461a45a46cea49fc +https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda#44600c4667a319d67dbe0681fc0bc833 +https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hb9d3cd8_2.conda#c63b5e52939e795ba8d26e35d767a843 +https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hb9d3cd8_2.conda#98514fe74548d768907ce7a13f680e8f +https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 +https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-16.0.0-py311h9ecbd09_0.conda#51a12678b609f5794985fda8372b1a49 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.57.0-py311h2dc5d0c_0.conda#4175f366b41d3d0c80d02661a0a03473 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.7-py311hd18a35c_0.conda#be34c90cce87090d24da64a7c239ca96 +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda#000e85703f0fd9594c81710dd5066471 +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda#9e5816bc95d285c115a3ebc2f8563564 +https://conda.anaconda.org/conda-forge/linux-64/pillow-11.2.1-py311h1322bbf_0.conda#4c49bdabd1d4e09386dabc676fb6bd65 +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda#513d3c262ee49b54a8fec85c5bc99764 +https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda#353823361b1d27eb3960efb076dfcaf6 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.1-py311h2b939e6_0.conda#eed17bae389043337f33b95a0fd8c172 +https://conda.anaconda.org/conda-forge/noarch/colorful-0.5.6-pyhd8ed1ab_0.conda#a75276da977eecc9224dea358576e2ec +https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.67.1-py311h9789449_2.conda#2e14634b5655043dc5260b6501301f65 +https://conda.anaconda.org/conda-forge/noarch/cachetools-5.5.2-pyhd8ed1ab_0.conda#bf9c1698e819fab31f67dbab4256f7ba +https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.conda#09bb17ed307ad6ab2fd78d32372fdd4e +https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.4.2-pyhd8ed1ab_0.conda#c689b62552f6b63f32f3322e463f3805 +https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda#644bd4ca9f68ef536b902685d773d697 +https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda#58958bb50f986ac0c46f73b6e290d5fe +https://conda.anaconda.org/conda-forge/noarch/google-auth-2.40.1-pyhd8ed1ab_0.conda#235e18d45c226be98eb1d3c02ffcac89 +https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.70.0-pyhd8ed1ab_0.conda#7999fb45c48645272d7d88de0b7dc188 +https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.26.1-pyhd8ed1ab_0.conda#6fcfcf4432cd80d05ee9c6e20830bd36 +https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.24.2-pyhd8ed1ab_0.conda#05a11e28a8e55c7ef1f727c2a25e77c1 +https://conda.anaconda.org/conda-forge/linux-64/opencensus-context-0.1.3-py311h38be061_3.conda#3cb0a537f59025a06538ae86ed6bd7e5 +https://conda.anaconda.org/conda-forge/noarch/opencensus-0.11.3-pyhd8ed1ab_1.conda#57109b1dc09c4d2b775aa3b3a6367b7f +https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.6.2-h9c3ff4c_0.tar.bz2#a730b2badd586580c5752cc73842e068 +https://conda.anaconda.org/conda-forge/linux-64/py-spy-0.4.0-h4c5a871_1.conda#aee51398c14a56bb59ede1968418917f +https://conda.anaconda.org/conda-forge/linux-64/setproctitle-1.3.6-py311h9ecbd09_0.conda#99cfa8d13e51b9ae1a2670231101c0d5 +https://conda.anaconda.org/conda-forge/linux-64/ray-core-2.44.1-py311h4831e01_0.conda#aa57b15de6850395ae8da5f1332d88d6 +https://conda.anaconda.org/conda-forge/noarch/smart_open-7.1.0-pyhd8ed1ab_0.conda#a20e42d17e69d364cfb756ac780b0ff1 +https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda#8d88f4a2242e6b96f9ecff9a6a05b2f1 +https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.31.1-pyhd8ed1ab_0.conda#cd28135cfaf1f1a162d6c5af37f7fccb +https://conda.anaconda.org/conda-forge/linux-64/ray-default-2.44.1-py311h48098de_0.conda#0fdbc81541f01a12215906dde020fd7f +https://conda.anaconda.org/conda-forge/noarch/tensorboardx-2.6.2.2-pyhd8ed1ab_1.conda#12edb3e9c07f9fac457d9acb27eb19c8 +https://conda.anaconda.org/conda-forge/linux-64/ray-tune-2.44.1-py311h38be061_0.conda#d984d0fb86ae53dd611643df7614403e +https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.0-pyhd8ed1ab_0.conda#3d7257f0a61c9aa4ffa3e324a887416b +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda#9d64911b31d57ca443e9f1e36b04385f +https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.6.1-py311h57cc02b_0.conda#5a9d7250b6a2ffdd223c514bc70242ba +https://conda.anaconda.org/conda-forge/noarch/autogluon.core-1.3.0-pyha770c72_0.conda#c7ea5f83ca20b0ffdc0047d232ec667c +https://conda.anaconda.org/conda-forge/noarch/autogluon.features-1.3.0-pyhd8ed1ab_0.conda#2f482212ee9660022d6e422ddcdec479 +https://conda.anaconda.org/conda-forge/noarch/chardet-5.2.0-pyhd8ed1ab_3.conda#56bfd153e523d9b9d05e4cf3c1cfe01c +https://conda.anaconda.org/conda-forge/noarch/binaryornot-0.4.4-pyhd8ed1ab_2.conda#67692f4269b341f88f80896ec835d1a9 +https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda#23b4ba5619c4752976eb7ba1f5acb7e8 +https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda#a4059bc12930bddeb41aef71537ffaed +https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda#592132998493b3ff25fd7479396e8351 +https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda#fee3164ac23dfca50cfcc8b85ddefb81 +https://conda.anaconda.org/conda-forge/noarch/rich-14.0.0-pyh29332c3_0.conda#202f08242192ce3ed8bdb439ba40c0fe +https://conda.anaconda.org/conda-forge/noarch/cookiecutter-2.6.0-pyhd8ed1ab_1.conda#d18cb8ec1efa4cc38a0434bfa53e20d3 +https://conda.anaconda.org/conda-forge/noarch/evaluate-0.4.1-pyhd8ed1ab_0.conda#ea228540526db4dde8ad8f2309bc1d40 +https://conda.anaconda.org/conda-forge/noarch/lightning-utilities-0.14.3-pyhd8ed1ab_0.conda#fc7847be22ca2fc44fa94de0bd75e94a +https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.7.1-pyhd8ed1ab_0.conda#de4c98760a15583a95f9c3031745a31c +https://conda.anaconda.org/conda-forge/noarch/pytorch-lightning-2.5.1.post0-pyh2a12c56_0.conda#76c4f85236a4e84eac96446b6086b54f +https://conda.anaconda.org/conda-forge/noarch/lightning-2.5.1.post0-pyhd8ed1ab_0.conda#3fbe03652bd90a6af7f7460cfcda205d +https://conda.anaconda.org/conda-forge/noarch/gdown-5.2.0-pyhd8ed1ab_1.conda#0b2ab6adce98f0dcf1dfd3f11343e5cd +https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda#4f43dbcfacd3cc9a183dd3a48b94d3c0 +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py311hf886319_10.conda#90c0c6f0d4d58d2383373e3ab7bc4d19 +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda#e977b7be5ac26c55825e121e00b90493 +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-h074ec65_10.conda#4b2fa94e6d42231ffee6707dfe578915 +https://conda.anaconda.org/conda-forge/noarch/nlpaug-1.1.11-pyhd8ed1ab_2.conda#c96d8edc5c7f8d48af1f10b24b227027 +https://conda.anaconda.org/conda-forge/noarch/nltk-3.9.1-pyhd8ed1ab_1.conda#85fd21c82d46f871d3820c17270e575d +https://conda.anaconda.org/conda-forge/noarch/omegaconf-2.3.0-pyhd8ed1ab_0.conda#23cc056834cab53849b91f78d6ee3ea0 +https://conda.anaconda.org/conda-forge/noarch/markdown-3.8-pyhd8ed1ab_0.conda#016103aab3842859e6702d7f8bbb0a54 +https://conda.anaconda.org/conda-forge/noarch/ordered-set-4.1.0-pyhd8ed1ab_1.conda#a130daf1699f927040956d3378baf0f2 +https://conda.anaconda.org/conda-forge/noarch/model-index-0.1.11-pyhd8ed1ab_1.conda#0971a0282c986b0a23a6cf5ad28d3f3f +https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda#75cb7132eb58d97896e173ef12ac9986 +https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda#04e691b9fadd93a8a9fad87a81d4fd8f +https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda#959484a66b4b76befcddc4fa97c95567 +https://conda.anaconda.org/conda-forge/noarch/openmim-0.3.7-pyhd8ed1ab_1.conda#0a95bd2f70d80433e328d03583d022b2 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.36-h5888daf_0.conda#de9cd5bca9e4918527b9b72b6e2e1409 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.108-h159eef7_0.conda#3c872a5aa802ee5c645e09d4c5d38585 +https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda#d8d7293c5b37f39b2ac32940621c6592 +https://conda.anaconda.org/conda-forge/linux-64/poppler-25.02.0-hea79843_2.conda#3d8f79a46eeac3059ed989fb51627a99 +https://conda.anaconda.org/conda-forge/noarch/pdf2image-1.17.0-pyhd8ed1ab_1.conda#1a5dbc1be5b125b16a23d20a99526fb2 +https://conda.anaconda.org/conda-forge/noarch/pytesseract-0.3.13-pyhd8ed1ab_1.conda#513b2f288a034d56472298838ced7812 +https://conda.anaconda.org/conda-forge/noarch/pytorch-metric-learning-2.8.1-pyh101cb37_1.conda#99c2eca68c2c695cbba4f8248bd8bd58 +https://conda.anaconda.org/conda-forge/noarch/imageio-2.37.0-pyhfb79c49_0.conda#b5577bc2212219566578fd5af9993af6 +https://conda.anaconda.org/conda-forge/noarch/lazy-loader-0.4-pyhd8ed1ab_2.conda#d10d9393680734a8febc4b362a4c94f2 +https://conda.anaconda.org/conda-forge/noarch/lazy_loader-0.4-pyhd8ed1ab_2.conda#bb0230917e2473c77d615104dbe8a49d +https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.8.0-py311h9f3472d_0.conda#17334e5c12abdf2db6b25bd4187cd3e4 +https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda#2c2fae981fd2afd00812c92ac47d023d +https://conda.anaconda.org/conda-forge/linux-64/brunsli-0.1-h9c3ff4c_0.tar.bz2#c1ac6229d0bfd14f8354ff9ad2a26cad +https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.2.4-h7955e40_0.conda#c8a816dbf59eb8ba6346a8f10014b302 +https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.15.2-h3122c55_1.conda#2bc8d76acd818d7e79229f5157d5c156 +https://conda.anaconda.org/conda-forge/linux-64/charls-2.4.2-h59595ed_0.conda#4336bd67920dd504cd8c6761d6a99645 +https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda#3bf7b9fd5a7136126e0234db4b87c8b6 +https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda#5aeabe88534ea4169d4c49998f293d6c +https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.3-h59595ed_0.conda#5e97e271911b8b2001a8b71860c32faa +https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda#418c6ca5929a611cbd69204907a83995 +https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda#77d9955b4abddb811cb8ab1aa7d743e4 +https://conda.anaconda.org/conda-forge/linux-64/svt-av1-3.0.2-h5888daf_0.conda#0096882bd623e6cc09e8bf920fc8fb47 +https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.2.1-hbb36593_2.conda#971387a27e61235b97cacb440a37e991 +https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.2.0-hf40a0c7_0.conda#2f433d593a66044c3f163cb25f0a09de +https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.1-h7b0646d_1.conda#959fc2b6c0df7883e070b3fe525219a5 +https://conda.anaconda.org/conda-forge/linux-64/libzopfli-1.0.3-h9c3ff4c_0.tar.bz2#c66fe2d123249af7651ebde8984c51c2 +https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h5888daf_2.conda#e0409515c467b87176b070bff5d9442e +https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2024.12.30-py311h9971d45_0.conda#0295a373ce22edd96d833d59a45840c9 +https://conda.anaconda.org/conda-forge/noarch/tifffile-2025.3.30-pyhd8ed1ab_0.conda#14f46147fae19bb867f82a787c7059e9 +https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.25.2-py311h7db5c69_0.conda#abb598418b5e26a721751432bb3c6450 +https://conda.anaconda.org/conda-forge/noarch/seqeval-1.2.2-pyhd3deb0d_0.tar.bz2#d4436c8a8b9fb6d60fe4e7b9f097f9bb +https://conda.anaconda.org/conda-forge/linux-64/tensorboard-data-server-0.7.0-py311hafd3f86_2.conda#599c214c5dd150c9dd716db4cdbedf2e +https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.3-pyhd8ed1ab_1.conda#0a9b57c159d56b508613cc39022c1b9e +https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.18.0-pyhd8ed1ab_1.conda#90a735b377427589728e588b5241a253 +https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.3.54-h5888daf_0.conda#56a2750239be4499dd6c9a27cebfb4b4 +https://conda.anaconda.org/conda-forge/linux-64/libde265-1.0.15-h00ab1b0_0.conda#407fee7a5d7ab2dca12c9ca7f62310ad +https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2#e7f6ed84d4623d52ee581325c1587a6b +https://conda.anaconda.org/conda-forge/linux-64/libheif-1.19.7-gpl_hc18d805_100.conda#1db2693fa6a50bef58da2df97c5204cb +https://conda.anaconda.org/conda-forge/linux-64/torchvision-extra-decoders-0.0.2-py311h896098c_2.conda#aaebf7b5393e30ed452de175834ff032 +https://conda.anaconda.org/conda-forge/linux-64/torchvision-0.21.0-cuda126_py311_h96b1feb_1.conda#ca1a00b62c6c75f177bd0d073aaa5015 +https://conda.anaconda.org/conda-forge/noarch/timm-1.0.3-pyhd8ed1ab_0.conda#03f52b5f829d470a4ff20441e92e283e +https://conda.anaconda.org/conda-forge/noarch/autogluon.multimodal-1.3.0-pyha770c72_0.conda#dcc6cdb0e88fe1190a2a0513499d7c5c +https://conda.anaconda.org/conda-forge/noarch/plotly-6.0.1-pyhd8ed1ab_0.conda#37ce02c899ff42ac5c554257b1a5906e +https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2#a089d06164afd2d511347d3f87214e0b +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.1-h4833e2c_1.conda#418de18c9b79a3d8583d90d27e0937c2 +https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda#d4529f4dff3057982a7617c7ac58fde3 +https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.44-hb9d3cd8_0.conda#7c91bfc90672888259675ad2ad28af9c +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.9.2-h65c71a3_0.conda#d045b1d878031eb497cab44e6392b1df +https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_1.conda#a37843723437ba75f42c9270ffe800b1 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda#d3c295b50f092ab525ffe3c2aa4b7413 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda#2ccd714aa2242315acaf0a67faea780b +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda#b5fcc7172d22516e1f965490e65e33a4 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda#5e2eb9bf77394fc2e5918beefec9f9ab +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda#2de7f99d6581a4a7adbff607b5c278ca +https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda#67d00e9cfe751cfe581726c5eff7c184 +https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda#4d8df0b0db060d33c9a702ada998a8fe +https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda#68fc66282364981589ef36868b1a7c78 +https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.2.1-h5ae0cbf_1.conda#df7835d2c73cd1889d377cfd6694ada4 +https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.20.3-pyh91182bf_2.conda#f822f0e13849c2283f72ec4aa120eeaa +https://conda.anaconda.org/conda-forge/linux-64/catboost-1.2.8-cuda120_py311h7e16ea6_103.conda#225eb24b9a1e81a55fe84239406c6437 +https://conda.anaconda.org/conda-forge/noarch/fastcore-1.7.20-pyh29332c3_0.conda#1368b5a054df51c0b6e82eed53a63dd3 +https://conda.anaconda.org/conda-forge/noarch/fastprogress-1.0.3-pyhd8ed1ab_1.conda#a1f997959ce49fe4d554a8ae6d3ef494 +https://conda.anaconda.org/conda-forge/noarch/fastdownload-0.0.7-pyhd8ed1ab_1.conda#fe49ec81a00e5bd65a7ad9a0a795abc0 +https://conda.anaconda.org/conda-forge/linux-64/catalogue-2.0.10-py311h38be061_1.conda#01f0647169060bd35e1e47789ee678f4 +https://conda.anaconda.org/conda-forge/linux-64/cymem-2.0.11-py311hfdbb021_0.conda#5658cadb009abad2b8ce67e44dbafd4a +https://conda.anaconda.org/conda-forge/linux-64/marisa-trie-1.2.1-py311hfdbb021_0.conda#aafc68438565850cc796b0fc100f227c +https://conda.anaconda.org/conda-forge/noarch/language-data-1.3.0-pyhff2d567_0.conda#03791f1242445cf08900118f5bea86e6 +https://conda.anaconda.org/conda-forge/noarch/langcodes-3.4.1-pyhd8ed1ab_1.conda#50727f5554dc6436399c9c1760263acc +https://conda.anaconda.org/conda-forge/linux-64/murmurhash-1.0.10-py311hfdbb021_2.conda#605ecc70192cf281a6fd0024076828e9 +https://conda.anaconda.org/conda-forge/linux-64/preshed-3.0.9-py311hfdbb021_2.conda#12656f774fda7fd79a7c28c20e694a87 +https://conda.anaconda.org/conda-forge/noarch/spacy-legacy-3.0.12-pyhd8ed1ab_0.conda#bbe68ced56ea855f0223c329f1fd2fc0 +https://conda.anaconda.org/conda-forge/noarch/spacy-loggers-1.0.5-pyhd8ed1ab_0.conda#017fa97ac8c29416983dc9e67b27f6c8 +https://conda.anaconda.org/conda-forge/linux-64/ujson-5.10.0-py311hfdbb021_1.conda#273cf8bedf58f24aec8d960831f89c5a +https://conda.anaconda.org/conda-forge/linux-64/srsly-2.5.1-py311hfdbb021_1.conda#522ceb699dd626dd074493b9e489018e +https://conda.anaconda.org/conda-forge/noarch/confection-0.1.5-pyhecae5ae_0.conda#cb7c903ea9e763e1e026d8633ae81964 +https://conda.anaconda.org/conda-forge/linux-64/cython-blis-1.0.1-py311h9f3472d_0.conda#ad8c4f7c01b7db7e83b76c16c3790ed4 +https://conda.anaconda.org/conda-forge/noarch/wasabi-1.1.3-pyhd8ed1ab_1.conda#fa76741f59d973f2e07d810ee124cb25 +https://conda.anaconda.org/conda-forge/linux-64/thinc-8.3.2-py311h5b7b71f_1.conda#c81a765e7078b6e06d98da248f6dab2f +https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda#7c3c2a0f3ebdea2bbc35538d162b43bf +https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.3-pyh29332c3_0.conda#20c0f2ae932004d7118c172eeb035cea +https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.3-h1a15894_0.conda#120216d3a2e51dfbb87bbba173ebf210 +https://conda.anaconda.org/conda-forge/noarch/typer-0.15.3-pyhf21524f_0.conda#b4bed8eb8dd4fe076f436e5506d31673 +https://conda.anaconda.org/conda-forge/noarch/cloudpathlib-0.21.0-pyhd8ed1ab_1.conda#c68ff3411dea32b12bc21be19b54a92f +https://conda.anaconda.org/conda-forge/noarch/smart-open-7.1.0-hd8ed1ab_0.conda#021f83968041a87ad9f02413267fe97c +https://conda.anaconda.org/conda-forge/noarch/weasel-0.4.1-pyhd8ed1ab_2.conda#c909d5a153ce7e0af0ff051b851dd38a +https://conda.anaconda.org/conda-forge/linux-64/spacy-3.8.5-py311h5b7b71f_0.conda#39824c81d3a2b391377c39255266b3aa +https://conda.anaconda.org/conda-forge/noarch/fastai-2.7.19-pyhd8ed1ab_0.conda#a03c6c44b8e72967de1ed7ecec3c90b8 +https://conda.anaconda.org/conda-forge/linux-64/liblightgbm-4.6.0-cuda_h3896ea8_1.conda#5131ea6259a0dd1e2666cb58ddbca9a6 +https://conda.anaconda.org/conda-forge/noarch/lightgbm-4.6.0-cuda_py_1.conda#e76fe8d084f981832f9220a057137994 +https://conda.anaconda.org/conda-forge/linux-64/libxgboost-2.1.4-cuda128_hacb7753_2.conda#f96e41475bf6430c92f347e36d5c41af +https://conda.anaconda.org/conda-forge/noarch/py-xgboost-2.1.4-cuda128_pyh71c493a_2.conda#396ec177bfe4129f28a6bd980c60fe79 +https://conda.anaconda.org/conda-forge/noarch/xgboost-2.1.4-cuda128_pyh68bd8d9_2.conda#2a70764754ac5fe070e97e86ae428710 +https://conda.anaconda.org/conda-forge/noarch/autogluon.tabular-1.3.0-pyha770c72_0.conda#bba7df1798387fc33d61457aa56950ba +https://conda.anaconda.org/conda-forge/linux-64/coreforecast-0.0.16-py311hd18a35c_0.conda#507f74e2805e29ff6fa9fda60185e1e4 +https://conda.anaconda.org/conda-forge/noarch/fugue-0.9.1-pyhd8ed1ab_1.conda#e984965e8393d48885c7788d28b703ae +https://conda.anaconda.org/conda-forge/noarch/gluonts-0.16.1-pyhd8ed1ab_1.conda#d9ec21c66a1523862183f9e4b18d8c9a +https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.44.0-py311h9c9ff8c_1.conda#eb6be2d03a0f5b259ae00427a6cb1b73 +https://conda.anaconda.org/conda-forge/linux-64/numba-0.61.2-py311h4e1c48f_0.conda#70097c5dfd0217b0400277c04fe3613e +https://conda.anaconda.org/conda-forge/noarch/colorlog-6.9.0-pyh707e725_1.conda#f00fc375bd02bdbbf791f9fe26ae96ec +https://conda.anaconda.org/conda-forge/noarch/optuna-4.3.0-pyhd8ed1ab_0.conda#b1ca426b395871b2a35217f8b0d36bb2 +https://conda.anaconda.org/conda-forge/noarch/utilsforecast-0.2.10-pyhff2d567_0.conda#c7a2253c7469db251a63835b2e1e2bb1 +https://conda.anaconda.org/conda-forge/noarch/window-ops-0.0.15-pyhd8ed1ab_1.conda#bedf63535f6367742068563cb3e617cf +https://conda.anaconda.org/conda-forge/noarch/mlforecast-0.13.6-pyhff2d567_0.conda#26c53602ae6fb31a085a7a109757867e +https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda#ee23fabfd0a8c6b8d6f3729b47b2859d +https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.4-py311h9f3472d_0.conda#81e81b5b7a744fcb279e98aa6d2e6683 +https://conda.anaconda.org/conda-forge/linux-64/statsforecast-2.0.1-py311hd18a35c_0.conda#80aecc7631207271d730dc25d6c2ea81 +https://conda.anaconda.org/conda-forge/noarch/autogluon.timeseries-1.3.0-pyhd8ed1ab_0.conda#9054de91241897f88c7de46626f293e8 +https://conda.anaconda.org/conda-forge/noarch/autogluon-1.3.0-pyhd8ed1ab_0.conda#dcd2176887190325eb9208c43bafb39e +https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.12.1-pyhd8ed1ab_1.conda#e895db5e6cee923018cbb1656c8ca7fa +https://conda.anaconda.org/conda-forge/noarch/autopep8-2.0.4-pyhd8ed1ab_0.conda#1053857605b5139c8f9818a029a71913 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.15-pyhd8ed1ab_0.conda#ad100d215fad890ab0ee10418f36876f +https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.14-pyhd8ed1ab_0.conda#2f1f99b13b9d2a03570705030a0b3e7c +https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.7-pyhd8ed1ab_0.conda#7c9449eac5975ef2d7753da262a72707 +https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.51-hd8ed1ab_0.conda#1e61ab85dd7c60e5e73d853ea035dc29 +https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda#801dbf535ec26508fac6d4b24adfb76e +https://conda.anaconda.org/conda-forge/noarch/notebook-7.4.2-pyhd8ed1ab_0.conda#59a96e10c24dd3407ff3366e46a2f5b3 +https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda#9453512288d20847de4356327d0e1282 +https://conda.anaconda.org/conda-forge/noarch/hdijupyterutils-0.22.0-pyhd8ed1ab_2.conda#9e53a605d951dce06c797572d7d65f20 +https://conda.anaconda.org/conda-forge/noarch/autovizwidget-0.22.0-pyhd8ed1ab_2.conda#a2216a11b7af64477999153fbc42dbbd +https://conda.anaconda.org/conda-forge/noarch/nose-1.3.7-py_1006.tar.bz2#382019d5f8e9362ef6f60a8d4e7bce8f +https://conda.anaconda.org/conda-forge/noarch/aws-glue-sessions-1.0.9-pyhd8ed1ab_0.conda#1648d658fe9e03258afd221ec6186de3 +https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.3.0-py311h9e33e62_0.conda#f4bf34159bdc05e00ec3ff1335539671 +https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda#ad8527bf134a90e1c9ed35fa0b64318c +https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda#460eba7851277ec1fd80a1a24080787a +https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_4.conda#ef67db625ad0d2dce398837102f875ed +https://conda.anaconda.org/conda-forge/linux-64/binutils-2.43-h4852527_4.conda#29782348a527eda3ecfc673109d28e93 +https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.43-h4852527_4.conda#c87e146f5b685672d4aa6b527c6d3b5e +https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda#42834439227a4551b939beeeb8a4b085 +https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.4.0-pyhd8ed1ab_0.conda#5663fa346821cd06dc1ece2c2600be2c +https://conda.anaconda.org/conda-forge/noarch/bokeh-3.7.2-pyhd8ed1ab_1.conda#2f31c581e29bdb830ec77e112f3776ae +https://conda.anaconda.org/conda-forge/noarch/boltons-24.0.0-pyhd8ed1ab_1.conda#d88c38e66d85ecc9c7e2c4110676bbf4 +https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-13.3.0-hc03c837_102.conda#4c1d6961a6a54f602ae510d9bf31fa60 +https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda#fbe7d535ff9d3a168c148e07358cd5b1 +https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-13.3.0-he8ea267_2.conda#2b6cdf7bb95d3d10ef4e38ce0bc95dba +https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-13.3.0-h1e990d8_2.conda#f46cf0acdcb6019397d37df1e407ab91 +https://conda.anaconda.org/conda-forge/linux-64/gcc-13.3.0-h9576a4e_2.conda#d92e51bf4b6bdbfe45e5884fb0755afe +https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-13.3.0-hc28eda2_10.conda#d151142bbafe5e68ec7fc065c5e6f80c +https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.9.0-h2b85faf_0.conda#3cb814f83f1f71ac1985013697f80cc1 +https://conda.anaconda.org/conda-forge/linux-64/fmt-11.1.4-h07f6e7f_1.conda#288a90e722fd7377448b00b2cddcb90d +https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-hd590300_1001.conda#ec7398d21e2651e0dcb0044d03b9a339 +https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.7.7-h75ea233_4.conda#b80309616f188ac77c4740acba40f796 +https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.32-h7955e40_2.conda#5339dae097a6e1ab631adb3cb04b8f7e +https://conda.anaconda.org/conda-forge/linux-64/reproc-14.2.5.post0-hb9d3cd8_0.conda#69fbc0a9e42eb5fe6733d2d60d818822 +https://conda.anaconda.org/conda-forge/linux-64/reproc-cpp-14.2.5.post0-h5888daf_0.conda#828302fca535f9cfeb598d5f7c204323 +https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h3f2d84a_0.conda#92b90f5f7a322e74468bb4909c7354b5 +https://conda.anaconda.org/conda-forge/linux-64/libmamba-1.5.12-he771761_1.conda#b7a1526e72ca6f62995b235cb0bfb04f +https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-4-hd8ed1ab_3.tar.bz2#878f923dd6acc8aeb47a75da6c4098be +https://conda.anaconda.org/conda-forge/linux-64/libmambapy-1.5.12-py311h5f9230d_1.conda#4df585e4b071c5920a84c131817ded7f +https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-24.9.0-pyhd8ed1ab_0.conda#45378d089c5f72c9c0d63d58414c645d +https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311h9ecbd09_2.conda#ca02de88df1cc3cfc8f24766ff50cb3c +https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_1.conda#027138b89fbe94c3870eee49bb2e1da6 +https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.4.0-pyh7900ff3_2.conda#32c158f481b4fd7630c565030f7bc482 +https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda#0a2014fd9860f8b1eaa0b1f3d3771a08 +https://conda.anaconda.org/conda-forge/linux-64/frozendict-2.4.6-py311h9ecbd09_0.conda#5ed089614b88920f8cc673fe3bc34558 +https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.2.0-py311h38be061_0.conda#56b688f5333037364ddf9c5cbdd4d672 +https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda#e9dcbce5f45f9ee500e728ae58b605b6 +https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py311h9ecbd09_2.conda#65a6d37c5a2868d5605cf2df3ea0236e +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py311h9ecbd09_1.conda#e56869fca385961323e43783b89bef66 +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.10-py311h9ecbd09_0.conda#a3188715e28c25f1404b84c702e6fdf4 +https://conda.anaconda.org/conda-forge/noarch/truststore-0.10.1-pyh29332c3_0.conda#373a72aeffd8a5d93652ef1235062252 +https://conda.anaconda.org/conda-forge/linux-64/conda-24.11.3-py311h38be061_0.conda#1bd98538e60d0381d776996e771abf84 +https://conda.anaconda.org/conda-forge/noarch/contextlib2-21.6.0-pyhd8ed1ab_1.conda#4de17d73a4afd4ce03b370fe4480100f +https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.0-py311h2dc5d0c_0.conda#37bc439a94beeb29914baa5b4987ebd5 +https://conda.anaconda.org/conda-forge/noarch/cuda-cccl_linux-64-12.6.77-ha770c72_0.conda#365a924cf93535157d61debac807e9e4 +https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-dev-12.6.80-h5888daf_0.conda#ed37a8cad974fed39334d096f3b18d81 +https://conda.anaconda.org/conda-forge/linux-64/cuda-gdb-12.6.77-h50b4baa_1.conda#9238f590fcc613c86ebff4a421db85e0 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvprof-12.6.80-hbd13f7d_0.conda#b5ccb8e53c9ec037d14e3e8b14a2740d +https://conda.anaconda.org/conda-forge/linux-64/cuda-sanitizer-api-12.6.77-hbd13f7d_1.conda#ba073c8009d7166892a4260179b07582 +https://conda.anaconda.org/conda-forge/linux-64/cuda-command-line-tools-12.6.3-ha770c72_0.conda#3d338828e4b5fa7768a7a59cbeadaa32 +https://conda.anaconda.org/conda-forge/linux-64/cuda-cuxxfilt-12.6.77-hbd13f7d_1.conda#faefe1c43db4641223a1dfa23ee21e0f +https://conda.anaconda.org/conda-forge/noarch/cuda-cudart-static_linux-64-12.6.77-h3f2d84a_0.conda#3ad8eacbf716ddbca1b5292a3668c821 +https://conda.anaconda.org/conda-forge/noarch/cuda-cudart-dev_linux-64-12.6.77-h3f2d84a_0.conda#f967e2449b6c066f6d09497fff12d803 +https://conda.anaconda.org/conda-forge/noarch/cuda-driver-dev_linux-64-12.6.77-h3f2d84a_0.conda#f2b7f45acf027c7de8c383b1d2f6a298 +https://conda.anaconda.org/conda-forge/noarch/cuda-crt-dev_linux-64-12.6.85-ha770c72_0.conda#4b14e78e12daa061dcdbe3ceed95cb57 +https://conda.anaconda.org/conda-forge/noarch/cuda-nvvm-dev_linux-64-12.6.85-ha770c72_0.conda#9c1f1ecfd9990b549312b3206d9c003b +https://conda.anaconda.org/conda-forge/noarch/cuda-nvcc-dev_linux-64-12.6.85-he91c749_0.conda#8d4bca6397374ecbd3001ab4ece3b23d +https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-static-12.6.77-h5888daf_0.conda#ae37b405ef74e57ef9685fcf820a2dde +https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-dev-12.6.77-h5888daf_0.conda#86e47562bfe92a529ae1c75bbcff814b +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-impl-12.6.85-he02047a_0.conda#5b72e12459f5deab812cb30b67b64d48 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-impl-12.6.85-h85509e4_0.conda#e5b96d2e34abaa90c0c1c968d02bbc9b +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc_linux-64-12.6.85-h04802cd_0.conda#4e1376cbc6d66b6744557cabeff02ca2 +https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-13.3.0-hc03c837_102.conda#aa38de2738c5f4a72a880e3d31ffe8b4 +https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-13.3.0-hae580e1_2.conda#b55f02540605c322a47719029f8404cc +https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-13.3.0-h6834431_10.conda#9a8ebde471cec5cc9c48f8682f434f92 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-12.6.85-hcdd1206_0.conda#fe294b5f78236b26d0b388652212e581 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvprune-12.6.77-hbd13f7d_1.conda#533cf43c4201ae6387f156ff7cbd8c89 +https://conda.anaconda.org/conda-forge/linux-64/gxx-13.3.0-h9576a4e_2.conda#07e8df00b7cd3084ad3ef598ce32a71c +https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.9.0-h1a2810e_0.conda#1ce8b218d359d9ed0ab481f2a3f3c512 +https://conda.anaconda.org/conda-forge/noarch/cuda-compiler-12.6.3-hbad6d8a_0.conda#ec211b132a6554400de751021e2b695c +https://conda.anaconda.org/conda-forge/linux-64/cuda-driver-dev-12.6.77-h5888daf_0.conda#42f029040bcf7a8fd0fc4cf82db91a99 +https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda#3ba02cce423fdac1a8582bd6bb189359 +https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.3-hb9d3cd8_0.conda#56f8947aa9d5cf37b0b3d43b83f34192 +https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.6.77-hbd13f7d_0.conda#ae042b206c97ec79af1a1fb2f91f6eb0 +https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.3.1.54-h5888daf_0.conda#f1c723a97c4c8f82429df5a7b9b96382 +https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.6.77-hbd13f7d_0.conda#3131e00022d739313baa5b4498e6edd0 +https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.6.3-ha770c72_0.conda#d88e326c1d34c1f4258625e7b34de45d +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-dev-12.6.85-h5888daf_0.conda#a526356b18499e3dbe2b4ae8f7e77213 +https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-dev-12.6.77-h5888daf_0.conda#0c0167532e40574e9cf67b6270704dad +https://conda.anaconda.org/conda-forge/linux-64/cuda-profiler-api-12.6.77-h7938cbb_0.conda#b051a6584fa2f5d8815f9823d6ffa257 +https://conda.anaconda.org/conda-forge/linux-64/libcublas-dev-12.6.4.1-h5888daf_1.conda#d7c84bdc63481995050f42e37c55f341 +https://conda.anaconda.org/conda-forge/linux-64/libcufft-dev-11.3.0.4-h5888daf_0.conda#e51d70f74e9e5241a0bf33fb866e2476 +https://conda.anaconda.org/conda-forge/linux-64/libcufile-dev-1.11.1.6-h5888daf_4.conda#e97a43d752c8a438a9f339a11cf29cb0 +https://conda.anaconda.org/conda-forge/linux-64/libcurand-dev-10.3.7.77-h5888daf_0.conda#83a87ce38925eb22b509a8aba3ba3aaf +https://conda.anaconda.org/conda-forge/linux-64/libcusolver-dev-11.7.1.2-h5888daf_1.conda#2a9339395d087361dc346d0b4826d70b +https://conda.anaconda.org/conda-forge/linux-64/libcusparse-dev-12.5.4.2-h5888daf_0.conda#48de133da2c0d116b3e7053b8c8dff89 +https://conda.anaconda.org/conda-forge/linux-64/libnpp-dev-12.3.1.54-h5888daf_0.conda#37c3d406ec286cfae716868c2915026c +https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-dev-12.6.77-h5888daf_0.conda#4affbc6122feb5ed25ee3c812b4b3b32 +https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-dev-12.6.85-h5888daf_0.conda#581771c7078e1c9e23af358c122bdcf4 +https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-dev-12.3.3.54-ha770c72_0.conda#38ab71f4fadbd66e9421a6b62342ad69 +https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-dev-12.6.3-ha770c72_0.conda#baf00d9d33fcb6ffb6d12ca1002e5e86 +https://conda.anaconda.org/conda-forge/linux-64/cuda-nvml-dev-12.6.77-hbd13f7d_1.conda#5b45001c3b1b10762ff95565d8d3b3a0 +https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda#7ac5f795c15f288984e32add616cdc59 +https://conda.anaconda.org/conda-forge/noarch/flask-3.1.0-pyhd8ed1ab_1.conda#2da939620e3a741f61fc1cb136df66fb +https://conda.anaconda.org/conda-forge/noarch/retrying-1.3.4-pyhd8ed1ab_0.conda#d9c8cef727d60fa29fd485ce79dd745a +https://conda.anaconda.org/conda-forge/noarch/dash-2.18.1-pyhd8ed1ab_0.conda#07f061eda0489f827c821e995cd1a7a4 +https://conda.anaconda.org/conda-forge/noarch/databricks-sdk-0.52.0-pyhd8ed1ab_0.conda#efac78ef7f25825db2e90bd575cc93c7 +https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda#0cef44b1754ae4d6924ac0eef6b9fdbe +https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda#5fbd60d61d21b4bd2f9d7a48fe100418 +https://conda.anaconda.org/conda-forge/linux-64/docker-cli-27.5.1-hd0c01bc_0.conda#82fab5aba1605dd091a0a503900dd3c8 +https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.5.0-py311h9ecbd09_4.conda#522059f3c55e201aa5f189fe5276f83f +https://conda.anaconda.org/conda-forge/noarch/paramiko-3.5.1-pyhd8ed1ab_0.conda#4e6bea7eee94bb9d8a599385215719f9 +https://conda.anaconda.org/conda-forge/noarch/pywin32-on-windows-0.1.0-pyh1179c8e_3.tar.bz2#2807a0becd1d986fe1ef9b7f8135f215 +https://conda.anaconda.org/conda-forge/noarch/docker-py-7.1.0-pyhd8ed1ab_1.conda#07ce73ca6f6c1a1df5d498679fc52d9e +https://conda.anaconda.org/conda-forge/noarch/docstring-to-markdown-0.17-pyhe01879c_0.conda#66cb4c80ff13d7971adba487a5d12e74 +https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda#da16dd3b0b71339060cd44cb7110ddf9 +https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda#0794f8807ff2c6f020422cacb1bd7bfa +https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda#3366592d3c219f2731721f11bc93755c +https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda#4ba15ae9388b67d09782798347481f69 +https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda#c16a94f3d0c6a2a495b3071cff3f598d +https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.2-pyh31011fe_0.conda#7e9f164470d693a5d2537c6b2ce1d9ea +https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py311h9ecbd09_1.conda#66890e34ed6a9bd84f1c189043a928f8 +https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.5-py311h9e33e62_0.conda#896e5c200fddca2b878a0113a58345f9 +https://conda.anaconda.org/conda-forge/linux-64/websockets-15.0.1-py311h9ecbd09_0.conda#208bf8e44ef767b25a51ba1beef0613c +https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.2-h31011fe_0.conda#62676324fa57eb76b542a6a2e85d35e2 +https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda#d960e0ea9e1c561aa928f6c4439f04c7 +https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda#a28c984e0429aff3ab7386f7de56de6f +https://conda.anaconda.org/conda-forge/noarch/starlette-0.46.2-pyh81abbef_0.conda#36ec80c2b37e52760ab41be7c2bd1fd3 +https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.12-pyh29332c3_0.conda#4bc12ece07c8c717e19fd790bfec100d +https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda#827064ddfe0de2917fb29f1da4f8f533 +https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.2.0-pyhd8ed1ab_1.conda#4731450b2c059fc567696242bcb7fc05 +https://conda.anaconda.org/conda-forge/noarch/flake8-7.1.2-pyhd8ed1ab_0.conda#5811f74de55030cb5f4054ab9a846139 +https://conda.anaconda.org/conda-forge/linux-64/flatbuffers-24.12.23-h8f4948b_0.conda#db383f9fb349481841ed26f18d790058 +https://conda.anaconda.org/conda-forge/noarch/gast-0.6.0-pyhd8ed1ab_0.conda#3fb76e88cbe6f96dfdaff277268bded9 +https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-h4ab18f5_2.conda#a263760479dbc7bc1f3df12707bd90dc +https://conda.anaconda.org/conda-forge/linux-64/gds-tools-1.11.1.6-h5888daf_4.conda#25f08271d608ad863c326888b1769b74 +https://conda.anaconda.org/conda-forge/noarch/git-remote-codecommit-1.16-pyhd8ed1ab_0.conda#c04f2d06a3f0e3a74c8c85b7b84b4e8f +https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda#87f47a78808baf2fa1ea9c315a1e48f1 +https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda#7c14f3706e099f8fcd47af2d494616cc +https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.44-pyhff2d567_0.conda#140a4e944f7488467872e562a2a52789 +https://conda.anaconda.org/conda-forge/noarch/google-pasta-0.2.0-pyhd8ed1ab_2.conda#005b9749218cb8c9e94ac2a77ca3c8c0 +https://conda.anaconda.org/conda-forge/noarch/graphql-core-3.2.6-pyh29332c3_0.conda#dc604341f71b370f8a4a0a3b2996cd99 +https://conda.anaconda.org/conda-forge/noarch/graphql-relay-3.2.0-pyhd8ed1ab_1.conda#154dbffd0db14585c9314bc771a87a6e +https://conda.anaconda.org/conda-forge/noarch/graphene-3.4.3-pyhd8ed1ab_1.conda#64be7816cf6074a3533c3f23ce2c316e +https://conda.anaconda.org/conda-forge/linux-64/gunicorn-23.0.0-py311h38be061_1.conda#e5ddac80dea64e38ed9559cde97d5222 +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h2d575fe_101.conda#d1f61f912e1968a8ac9834b62fde008d +https://conda.anaconda.org/conda-forge/linux-64/h5py-3.13.0-nompi_py311h38436b4_101.conda#0a24ff81763ff208d8485354cb9d347e +https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.10.0-hd8ed1ab_0.conda#c063ddbb9908499fd4f20b31dc67065a +https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda#6837f3eff7dcea42ecd714ce1ac2b108 +https://conda.anaconda.org/conda-forge/noarch/isort-6.0.1-pyhd8ed1ab_1.conda#c25d1a27b791dab1797832aafd6a3e9a +https://conda.anaconda.org/conda-forge/noarch/jupyter-activity-monitor-extension-0.3.1-pyhd8ed1ab_1.conda#859116fcc3082864e6271322a7a776b3 +https://conda.anaconda.org/conda-forge/noarch/jupyter_server_fileid-0.9.2-pyhd8ed1ab_1.conda#fbf0a308ddc042202a005a1760524823 +https://conda.anaconda.org/conda-forge/linux-64/pycrdt-0.12.15-py311h9e33e62_0.conda#d4f9bcb8be14a6c56a14ef01465a7920 +https://conda.anaconda.org/conda-forge/noarch/jupyter_ydoc-2.1.5-pyhd8ed1ab_0.conda#19b71bcc5f1d0fb7b11262a308af7e04 +https://conda.anaconda.org/conda-forge/noarch/sqlite-anyio-0.2.3-pyhaa4b35c_1.conda#de0f0dddcf1b9c3535de60eb35a5b280 +https://conda.anaconda.org/conda-forge/noarch/pycrdt-websocket-0.15.5-pyhd8ed1ab_0.conda#885aecec5f2a3f7f67e99014c09f9aa0 +https://conda.anaconda.org/conda-forge/noarch/jupyter-collaboration-2.1.5-pyhd8ed1ab_0.conda#5703aca213285d93bf9e12a73d1b010d +https://conda.anaconda.org/conda-forge/noarch/jupyter-dash-0.4.2-pyhd8ed1ab_1.tar.bz2#9c77330b235666f244a7b8dcc7c0955a +https://conda.anaconda.org/conda-forge/noarch/jupyter-server-mathjax-0.2.6-pyhbbac1ac_2.conda#a575ab1d71583644de23e7a9bef9bd27 +https://conda.anaconda.org/conda-forge/noarch/simpervisor-1.0.0-pyhd8ed1ab_1.conda#b12cd36c9eea3f4d2f77daef432bdc00 +https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.4.0-pyhd8ed1ab_1.conda#4696e23d86b32957ff469870e74c8c97 +https://conda.anaconda.org/conda-forge/noarch/nbdime-4.0.2-pyhd8ed1ab_1.conda#5217ed230c497fb71f7bb2de6d7eb27b +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-git-0.51.1-pyhd8ed1ab_0.conda#a35e3bc8b7851a27bacc5d944337bbad +https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.4.0-py311h7db5c69_2.conda#7df028e3691fb3940a03e5ad7938414e +https://conda.anaconda.org/conda-forge/noarch/namex-0.0.9-pyhd8ed1ab_0.conda#15af2284ffe3f4e522244cfe65970084 +https://conda.anaconda.org/conda-forge/noarch/keras-3.9.2-pyh753f3f9_0.conda#202c3f3027796408a509184ca6ce368b +https://conda.anaconda.org/conda-forge/noarch/langchain-aws-0.2.19-pyhd8ed1ab_0.conda#b5b5b1b7e19600aebc5ba02a44236888 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-devel-1.11.0-hb9d3cd8_2.conda#bf888b6a37286e9ae3749a114f878a6e +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-tools-1.11.0-hb9d3cd8_2.conda#342389a8c9eef45fd8bb144b7522e28d +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.0-ha770c72_2.conda#92aaf7c067a5e63ac7f035bbd8864415 +https://conda.anaconda.org/conda-forge/linux-64/libsecret-0.18.8-h329b89f_2.tar.bz2#9d6698e3c9585a75156d86f7ef229093 +https://conda.anaconda.org/conda-forge/noarch/uc-micro-py-1.0.3-pyhd8ed1ab_1.conda#9c96c9876ba45368a03056ddd0f20431 +https://conda.anaconda.org/conda-forge/noarch/linkify-it-py-2.0.3-pyhd8ed1ab_1.conda#b02fe519b5dc0dc55e7299810fcdfb8e +https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.4.2-pyhd8ed1ab_1.conda#af2060041d4f3250a7eb6ab3ec0e549b +https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.32.1-pyhd8ed1ab_0.conda#6682bf849a7d9b2403b84d6e6687c69f +https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.53b1-pyh3cfb1c2_0.conda#79adc3610af5e42a1b2bc5bfd2a9e68a +https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.32.1-pyhd8ed1ab_0.conda#e276c63fbcaac75690b23f0667938c66 +https://conda.anaconda.org/conda-forge/linux-64/mlflow-skinny-2.22.0-h38be061_0.conda#c6cbfbd1779b314de8b59de22dda2eaa +https://conda.anaconda.org/conda-forge/noarch/querystring_parser-1.2.4-pyhd8ed1ab_2.conda#57962900dda3df6b61e545023469c930 +https://conda.anaconda.org/conda-forge/linux-64/mlflow-ui-2.22.0-py311h38be061_0.conda#c5087c0af7750ce37eb5d42125f61c7b +https://conda.anaconda.org/conda-forge/noarch/prometheus_flask_exporter-0.23.2-pyhd8ed1ab_0.conda#9a3090bbdda5cb17e0181bee26672b08 +https://conda.anaconda.org/conda-forge/linux-64/mlflow-2.22.0-h38be061_0.conda#80627888cb9a734fbec74a00f394c8dd +https://conda.anaconda.org/conda-forge/noarch/mock-4.0.3-pyhd8ed1ab_4.tar.bz2#a49a3174d0d7392c115a6608548a907c +https://conda.anaconda.org/conda-forge/linux-64/nodejs-20.18.1-hc55a1b2_0.conda#65d4cfcb1793a3e4f102da0d0ce9ebd8 +https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda#52919815cd35c4e1a0298af658ccda04 +https://conda.anaconda.org/conda-forge/noarch/param-2.2.0-pyhd8ed1ab_0.conda#8bd46aebe85bd9c5f30affd520ab441f +https://conda.anaconda.org/conda-forge/noarch/pyviz_comms-3.0.4-pyhd8ed1ab_1.conda#99b8cf929b145ae310b333ce3496b56b +https://conda.anaconda.org/conda-forge/noarch/panel-1.6.3-pyhd8ed1ab_0.conda#224dd042707104823baa052bec48d883 +https://conda.anaconda.org/conda-forge/noarch/papermill-2.6.0-pyhd8ed1ab_1.conda#a5d72a5d14079f052d4f3bf7fb4593a7 +https://conda.anaconda.org/conda-forge/noarch/pox-0.3.6-pyhd8ed1ab_0.conda#122f0fcc62e320d64227dd7e76ddd363 +https://conda.anaconda.org/conda-forge/noarch/ppft-1.7.7-pyhd8ed1ab_0.conda#ed1b7887e92109b278f62af7ce383078 +https://conda.anaconda.org/conda-forge/noarch/pathos-0.3.4-pyhd8ed1ab_0.conda#eab86b1904a5554bd9c4c72e3b846b71 +https://conda.anaconda.org/conda-forge/noarch/pure-sasl-0.6.2-pyhd8ed1ab_1.conda#44b22b438db0eb8260ab2e938228990a +https://conda.anaconda.org/conda-forge/noarch/py-xgboost-gpu-2.1.4-pyh68bd8d9_2.conda#19ddac5f970c3febcc7aeef66af8d7a4 +https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2#4d22a9315e78c6827f806065957d566e +https://conda.anaconda.org/conda-forge/noarch/pydocstyle-6.3.0-pyhd8ed1ab_1.conda#a36aa6e0119331d3280f4bba043314c7 +https://conda.anaconda.org/conda-forge/linux-64/thrift-0.20.0-py311hfdbb021_1.conda#203ba1d307759a4ae38c3133af6dfe0b +https://conda.anaconda.org/conda-forge/noarch/thrift_sasl-0.4.3-pyhd8ed1ab_3.conda#b6c9674b72fdaab53107ffda2da05295 +https://conda.anaconda.org/conda-forge/noarch/pyhive-0.7.0-pyhd8ed1ab_1.conda#4a09b71c0cb5fb78df05783633fb614a +https://conda.anaconda.org/conda-forge/linux-64/pykrb5-0.7.1-py311h9db375c_0.conda#93c84e6eabee585662441376e40f7fdf +https://conda.anaconda.org/conda-forge/noarch/pylint-3.3.7-pyhe01879c_0.conda#fad6b90165dcf39e3ac79de5dbc030a8 +https://conda.anaconda.org/conda-forge/linux-64/pyspnego-0.11.2-py311h38be061_1.conda#b92f78ed507911cd93019e639e55e6a3 +https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda#c3c9316209dec74a705a36797970c6be +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda#b0dd904de08b7db706167240bf37b164 +https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda#1e35d8f975bc0e984a19819aa91c440a +https://conda.anaconda.org/conda-forge/linux-64/python-gssapi-1.9.0-py311h9db375c_1.conda#3d8c106db049280c07b62d4cd482f3cc +https://conda.anaconda.org/conda-forge/noarch/python-lsp-jsonrpc-1.1.2-pyhff2d567_1.conda#1e4f4f40c7ec8a0e220d5b7740c94568 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-base-1.12.2-pyhd8ed1ab_0.conda#6a3af3eb9d1456fc6f88795276fda29a +https://conda.anaconda.org/conda-forge/noarch/pytoolconfig-1.2.5-pyhd8ed1ab_1.conda#27c95573211e4579709a3ea06051d4c1 +https://conda.anaconda.org/conda-forge/noarch/rope-1.13.0-pyhd8ed1ab_1.conda#63d2b105479d226a24d4f5e4115de503 +https://conda.anaconda.org/conda-forge/noarch/whatthepatch-1.0.7-pyhd8ed1ab_1.conda#c0617d951edc1e90c2809ec104865d7c +https://conda.anaconda.org/conda-forge/noarch/yapf-0.43.0-pyhd8ed1ab_1.conda#ad1a2c858e3c14deae4f274580123151 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-1.12.2-pyhff2d567_0.conda#8eeb18da2803dd64c190e07b7b2f9724 +https://conda.anaconda.org/conda-forge/noarch/requests-kerberos-0.15.0-pyh707e725_1.conda#d3d52b35d96df3f3291b7cbc86250184 +https://conda.anaconda.org/conda-forge/linux-64/ripgrep-14.1.1-h8fae777_0.conda#d214df5d083a659f75e7cdafd9500383 +https://conda.anaconda.org/conda-forge/noarch/s3fs-2024.10.0-pyhd8ed1ab_1.conda#589f046bbc8577f93826fe922f4e960a +https://conda.anaconda.org/conda-forge/linux-64/sagemaker-code-editor-1.5.0-h3e77e23_3.conda#f8bfa1b21d9bce84dbc5374dacc1331e +https://conda.anaconda.org/conda-forge/noarch/sagemaker-core-1.0.33-pyhd8ed1ab_0.conda#676493394c77e6883c04d4eff598d98d +https://conda.anaconda.org/conda-forge/noarch/sagemaker-headless-execution-driver-0.0.13-pyhd8ed1ab_0.conda#feaec93c21652caac71ed7ecf450cb17 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-emr-extension-0.3.8-pyhd8ed1ab_0.conda#92877af5c95030a39a055ca91fba59e8 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-0.4.2-pyhd8ed1ab_0.conda#3de923bb65a217fa8fe30850856dd0c0 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-kernel-wrapper-0.0.5-pyhd8ed1ab_0.conda#f86c4262c5b3130b830fa802e187f6b4 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-mlflow-0.1.0-pyhd8ed1ab_0.conda#edcfd844c3fe864b800f60f05806fd26 +https://conda.anaconda.org/conda-forge/noarch/schema-0.7.7-pyhd8ed1ab_0.conda#1add6f6b99191efab14f16e6aa9b6461 +https://conda.anaconda.org/conda-forge/noarch/smdebug-rulesconfig-1.0.1-pyhd3deb0d_1.tar.bz2#be253a7939a3e7cf95a043a983cab563 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-python-sdk-2.244.0-pyhff2d567_0.conda#7bad042b9385e2856116a01e233b6b5b +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-1.0.13-pyhd8ed1ab_0.conda#e7e0dde074f3c121ff174c1bb6eb172f +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-sparkmagic-lib-0.1.4-pyhd8ed1ab_0.conda#285ce30db20d88190f1f7fb654f259ec +https://conda.anaconda.org/conda-forge/noarch/sparkmagic-0.21.0-pyhd8ed1ab_0.conda#fe489239f573c2ea018925ddea6d3190 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-analytics-extension-0.1.7-pyhd8ed1ab_0.conda#0291c4b0acd1239dd327d55705e242ee +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-cli-1.0.6-pyhd8ed1ab_0.conda#e6fcb773a77ccb75dec23fd23fc0bb34 +https://conda.anaconda.org/conda-forge/noarch/schedule-1.2.2-pyhd8ed1ab_1.conda#cedcd7606497aff90b91134046d44370 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-dataengineering-extensions-1.0.9-pyh80e38bb_0.conda#0d53e1fc7a8d47de6259260a191f3937 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-studio-dataengineering-sessions-1.0.10-pyhd8ed1ab_0.conda#f7807446a8e972ccdce0db985b984006 +https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda#fd96da444e81f9e6fcaac38590f3dd42 +https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda#62afb877ca2c2b4b6f9ecb37320085b6 +https://conda.anaconda.org/conda-forge/linux-64/supervisor-4.2.5-py311h38be061_3.conda#b19d56c85784c625a17bf2b5805ea22b +https://conda.anaconda.org/conda-forge/noarch/termcolor-3.1.0-pyhd8ed1ab_0.conda#951a99e94afe3d38bfdbd04902fe33b7 +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-base-2.18.0-cuda126py311h593f62b_200.conda#06d7f504ff1c36d0e512afb344317097 +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-estimator-2.18.0-cuda126py311h3eb005d_200.conda#fa99133f0ce6762f2421101317fbd880 +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-2.18.0-cuda126py311h673d4f6_200.conda#c9113bfd54da6ebf95bd55c81f2bcb51 +https://conda.anaconda.org/conda-forge/noarch/tf-keras-2.18.0-pyhd8ed1ab_0.conda#46ec057279150f91872d9715fe86243b diff --git a/build_artifacts/v2/v2.7/v2.7.0/gpu.pinned_env.in b/build_artifacts/v2/v2.7/v2.7.0/gpu.pinned_env.in new file mode 100644 index 00000000..f32ce896 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/gpu.pinned_env.in @@ -0,0 +1,6 @@ +conda-forge::libmamba[version='>=1.5.11,<1.6.0'] +conda-forge::dash[version='<=2.18.1'] +conda-forge::evaluate[version='<0.4.2'] +conda-forge::libsqlite[version='<3.49.0'] +conda-forge::urllib3[version='<2'] +conda-forge::papermill[version='>=2.6.0'] diff --git a/build_artifacts/v2/v2.7/v2.7.0/patch_glue_pyspark.json b/build_artifacts/v2/v2.7/v2.7.0/patch_glue_pyspark.json new file mode 100644 index 00000000..f92eee89 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/patch_glue_pyspark.json @@ -0,0 +1,15 @@ +{ + "argv": [ + "/opt/conda/bin/python", + "-m", + "sagemaker_kernel_wrapper.sm_gis_wrapper", + "-m", + "aws_glue_interactive_sessions_kernel.glue_pyspark.GlueKernel", + "-f", + "{connection_file}" + ], + "display_name": "Glue PySpark", + "env": {"request_origin": "SageMakerStudioPySparkNotebook", "glue_version": "3.0"}, + "language": "python" +} + diff --git a/build_artifacts/v2/v2.7/v2.7.0/patch_glue_spark.json b/build_artifacts/v2/v2.7/v2.7.0/patch_glue_spark.json new file mode 100644 index 00000000..1bd168e7 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/patch_glue_spark.json @@ -0,0 +1,15 @@ +{ + "argv": [ + "/opt/conda/bin/python", + "-m", + "sagemaker_kernel_wrapper.sm_gis_wrapper", + "-m", + "aws_glue_interactive_sessions_kernel.glue_spark.GlueKernel", + "-f", + "{connection_file}" + ], + "display_name": "Glue Spark", + "env": {"request_origin": "SageMakerStudioSparkNotebook", "glue_version": "3.0"}, + "language": "python" +} + diff --git a/build_artifacts/v2/v2.7/v2.7.0/source-version.txt b/build_artifacts/v2/v2.7/v2.7.0/source-version.txt new file mode 100644 index 00000000..914ec967 --- /dev/null +++ b/build_artifacts/v2/v2.7/v2.7.0/source-version.txt @@ -0,0 +1 @@ +2.6.0 \ No newline at end of file diff --git a/src/config.py b/src/config.py index 4c86ba67..90b63805 100644 --- a/src/config.py +++ b/src/config.py @@ -56,8 +56,8 @@ 2: [ { "build_args": { - "TAG_FOR_BASE_MICROMAMBA_IMAGE": "jammy-cuda-12.5.0", - "CUDA_MAJOR_MINOR_VERSION": "12.5", # Should match the previous one. + "TAG_FOR_BASE_MICROMAMBA_IMAGE": "jammy-cuda-12.6.0", + "CUDA_MAJOR_MINOR_VERSION": "12.6", # Should match the previous one. "ENV_IN_FILENAME": "gpu.env.in", "PINNED_ENV_IN_FILENAME": "gpu.pinned_env.in", "ARG_BASED_ENV_IN_FILENAME": "gpu.arg_based_env.in",