Skip to content

Commit 55a4f34

Browse files
github-actions[bot]SageMaker Distribution BotenageshwariNageshwari Elangoclaytonparnell
authored
release: v2.9.5 (#949)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: SageMaker Distribution Bot <sm-distribution-github-bot[bot]@amazon.com> Co-authored-by: enageshwari <[email protected]> Co-authored-by: Nageshwari Elango <[email protected]> Co-authored-by: Clayton Parnell <[email protected]>
1 parent f1d0654 commit 55a4f34

File tree

76 files changed

+4901
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+4901
-1
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Change log: 2.9.5(cpu)
2+
3+
## Upgrades:
4+
5+
Package | Previous Version | Current Version
6+
---|---|---
7+
pandas|2.3.2|2.3.3
8+
jupyterlab|4.4.7|4.4.10
9+
amazon-sagemaker-jupyter-ai-q-developer|1.2.7|1.2.8
10+
amazon_sagemaker_sql_editor|0.1.18|0.1.19
11+
matplotlib-base|3.10.6|3.10.7
12+
notebook|7.4.5|7.4.7
13+
fastapi|0.116.1|0.116.2
14+
langchain-aws|0.2.32|0.2.35
15+
sagemaker-gen-ai-jupyterlab-extension|1.0.9|1.0.11
16+
sagemaker-studio|1.0.21|1.0.22
17+
sagemaker-studio-dataengineering-extensions|1.2.9|1.2.12
18+
sagemaker-studio-dataengineering-sessions|1.2.4|1.2.6
19+
uv|0.8.17|0.8.24
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Change log: 2.9.5(gpu)
2+
3+
## Upgrades:
4+
5+
Package | Previous Version | Current Version
6+
---|---|---
7+
pandas|2.3.2|2.3.3
8+
jupyterlab|4.4.7|4.4.10
9+
amazon-sagemaker-jupyter-ai-q-developer|1.2.7|1.2.8
10+
amazon_sagemaker_sql_editor|0.1.18|0.1.19
11+
matplotlib-base|3.10.6|3.10.7
12+
notebook|7.4.5|7.4.7
13+
fastapi|0.116.1|0.116.2
14+
langchain-aws|0.2.32|0.2.35
15+
sagemaker-gen-ai-jupyterlab-extension|1.0.9|1.0.11
16+
sagemaker-studio|1.0.21|1.0.22
17+
sagemaker-studio-dataengineering-extensions|1.2.9|1.2.12
18+
sagemaker-studio-dataengineering-sessions|1.2.4|1.2.6
19+
uv|0.8.17|0.8.24
Lines changed: 238 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
ARG TAG_FOR_BASE_MICROMAMBA_IMAGE
2+
FROM mambaorg/micromamba:$TAG_FOR_BASE_MICROMAMBA_IMAGE
3+
4+
ARG CUDA_MAJOR_MINOR_VERSION=''
5+
ARG ENV_IN_FILENAME
6+
ARG PINNED_ENV_IN_FILENAME
7+
ARG ARG_BASED_ENV_IN_FILENAME
8+
ARG IMAGE_VERSION
9+
10+
# Amazon Q Agentic Chat version - update this default value when needed
11+
ARG FLARE_SERVER_VERSION_JL=1.25.0
12+
# IDE type for Amazon Q integration
13+
ARG AMAZON_Q_IDE_TYPE=jupyterlab
14+
15+
LABEL "org.amazon.sagemaker-distribution.image.version"=$IMAGE_VERSION
16+
17+
ARG AMZN_BASE="/opt/amazon/sagemaker"
18+
ARG DB_ROOT_DIR="/opt/db"
19+
ARG DIRECTORY_TREE_STAGE_DIR="${AMZN_BASE}/dir-staging"
20+
21+
ARG NB_USER="sagemaker-user"
22+
ARG NB_UID=1000
23+
ARG NB_GID=100
24+
25+
# https://www.openssl.org/source/
26+
ARG FIPS_VALIDATED_SSL=3.0.8
27+
ARG MIN_REQUIRED_MICROMAMBA_VERSION=1.5.11
28+
29+
ENV SAGEMAKER_LOGGING_DIR="/var/log/sagemaker/"
30+
ENV STUDIO_LOGGING_DIR="/var/log/studio/"
31+
ENV EDITOR="nano"
32+
ENV IMAGE_VERSION=$IMAGE_VERSION
33+
ENV PINNED_MICROMAMBA_MINOR_VERSION="1.5.*"
34+
ENV SAGEMAKER_RECOVERY_MODE_HOME=/tmp/sagemaker-recovery-mode-home
35+
36+
USER root
37+
# Upgrade micromamba to the latest patch version in the pinned minor version range, if applicable
38+
RUN CURRENT_MICROMAMBA_VERSION=$(micromamba --version) && \
39+
echo "Current micromamba version: $CURRENT_MICROMAMBA_VERSION" && \
40+
if [[ "$CURRENT_MICROMAMBA_VERSION" == $PINNED_MICROMAMBA_MINOR_VERSION ]]; then \
41+
echo "Upgrading micromamba to the latest $PINNED_MICROMAMBA_MINOR_VERSION version..." && \
42+
micromamba self-update -c conda-forge --version "$MIN_REQUIRED_MICROMAMBA_VERSION" && \
43+
micromamba clean --all --yes --force-pkgs-dirs; \
44+
else \
45+
echo "Micromamba is already at version $CURRENT_MICROMAMBA_VERSION (outside $PINNED_MICROMAMBA_MINOR_VERSION). No upgrade performed."; \
46+
fi
47+
48+
RUN usermod "--login=${NB_USER}" "--home=/home/${NB_USER}" --move-home "-u ${NB_UID}" "${MAMBA_USER}" && \
49+
groupmod "--new-name=${NB_USER}" --non-unique "-g ${NB_GID}" "${MAMBA_USER}" && \
50+
# Update the expected value of MAMBA_USER for the
51+
# _entrypoint.sh consistency check.
52+
echo "${NB_USER}" > "/etc/arg_mamba_user" && \
53+
:
54+
ENV MAMBA_USER=$NB_USER
55+
ENV USER=$NB_USER
56+
57+
COPY extract_amazon_q_agentic_chat_urls.py /tmp/
58+
COPY download_amazon_q_agentic_chat_artifacts.sh /tmp/
59+
60+
RUN apt-get update && apt-get upgrade -y && \
61+
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 && \
62+
# We just install tzdata below but leave default time zone as UTC. This helps packages like Pandas to function correctly.
63+
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata krb5-user libkrb5-dev libsasl2-dev libsasl2-modules && \
64+
chmod g+w /etc/passwd && \
65+
echo "ALL ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \
66+
touch /etc/krb5.conf.lock && chown ${NB_USER}:${MAMBA_USER} /etc/krb5.conf* && \
67+
# Note that we do NOT run `rm -rf /var/lib/apt/lists/*` here. If we did, anyone building on top of our images will
68+
# not be able to run any `apt-get install` commands and that would hamper customizability of the images.
69+
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && \
70+
unzip awscliv2.zip && \
71+
sudo ./aws/install && \
72+
rm -rf aws awscliv2.zip && \
73+
: && \
74+
# Install Q CLI
75+
curl --proto '=https' --tlsv1.2 -sSf "https://desktop-release.q.us-east-1.amazonaws.com/1.12.7/q-x86_64-linux.zip" -o "q.zip" && \
76+
unzip q.zip && \
77+
Q_INSTALL_GLOBAL=true ./q/install.sh --no-confirm && \
78+
rm -rf q q.zip && \
79+
echo "source /usr/local/bin/_activate_current_env.sh" | tee --append /etc/profile && \
80+
# CodeEditor - create server, user data dirs
81+
mkdir -p /opt/amazon/sagemaker/sagemaker-code-editor-server-data /opt/amazon/sagemaker/sagemaker-code-editor-user-data \
82+
&& chown $MAMBA_USER:$MAMBA_USER /opt/amazon/sagemaker/sagemaker-code-editor-server-data /opt/amazon/sagemaker/sagemaker-code-editor-user-data && \
83+
# create dir to store user data files
84+
mkdir -p /opt/amazon/sagemaker/user-data \
85+
&& chown $MAMBA_USER:$MAMBA_USER /opt/amazon/sagemaker/user-data && \
86+
# Merge in OS directory tree contents.
87+
mkdir -p ${DIRECTORY_TREE_STAGE_DIR}
88+
COPY dirs/ ${DIRECTORY_TREE_STAGE_DIR}/
89+
RUN rsync -a ${DIRECTORY_TREE_STAGE_DIR}/ / && \
90+
rm -rf ${DIRECTORY_TREE_STAGE_DIR} && \
91+
# CodeEditor - download the extensions
92+
mkdir -p /etc/code-editor/extensions && \
93+
while IFS= read -r url || [ -n "$url" ]; do \
94+
echo "Downloading extension from ${url}..." && \
95+
wget --no-check-certificate -P /etc/code-editor/extensions "${url}"; \
96+
done < /etc/code-editor/extensions.txt
97+
98+
USER $MAMBA_USER
99+
COPY --chown=$MAMBA_USER:$MAMBA_USER $ENV_IN_FILENAME *.in /tmp/
100+
COPY --chown=$MAMBA_USER:$MAMBA_USER $PINNED_ENV_IN_FILENAME *.in /tmp/
101+
102+
ARG MAMBA_DOCKERFILE_ACTIVATE=1
103+
ARG CONDA_OVERRIDE_CUDA=$CUDA_MAJOR_MINOR_VERSION
104+
105+
# Make sure that $ENV_IN_FILENAME and $PINNED_ENV_IN_FILENAME has a newline at the end before the `tee` command runs.
106+
# Otherwise, nasty things will happen.
107+
RUN if [[ -z $ARG_BASED_ENV_IN_FILENAME ]] ; \
108+
then echo 'No ARG_BASED_ENV_IN_FILENAME passed' ; \
109+
else envsubst < /tmp/$ARG_BASED_ENV_IN_FILENAME | tee --append /tmp/$ENV_IN_FILENAME ; \
110+
fi && \
111+
# Enforce dependencies are all installed from conda-forge
112+
micromamba install -y --name base --file /tmp/$ENV_IN_FILENAME --file /tmp/$PINNED_ENV_IN_FILENAME && \
113+
mkdir -p $SAGEMAKER_RECOVERY_MODE_HOME && \
114+
chown $MAMBA_USER:$MAMBA_USER $SAGEMAKER_RECOVERY_MODE_HOME && \
115+
SUPERVISOR_VERSION=$(grep "^conda-forge::supervisor\[" /tmp/$ENV_IN_FILENAME) && \
116+
JUPYTERLAB_VERSION=$(grep "^conda-forge::jupyterlab\[" /tmp/$ENV_IN_FILENAME) && \
117+
SAGEMAKER_JUPYTERLAB_VERSION=$(grep "^conda-forge::sagemaker-jupyterlab-extension" /tmp/$ENV_IN_FILENAME) && \
118+
echo "Installing in sagemaker-recovery-mode micromamba environment: $JUPYTERLAB_VERSION $SAGEMAKER_JUPYTERLAB_VERSION" && \
119+
micromamba create -n sagemaker-recovery-mode && \
120+
micromamba install -n sagemaker-recovery-mode -y $JUPYTERLAB_VERSION $SAGEMAKER_JUPYTERLAB_VERSION $SUPERVISOR_VERSION && \
121+
micromamba clean --all --yes --force-pkgs-dirs && \
122+
rm -rf /tmp/*.in && \
123+
sudo ln -s $(which python3) /usr/bin/python && \
124+
# Download shared web client libraries
125+
sudo mkdir -p /etc/web-client/libs && \
126+
sudo curl -L --retry 3 --retry-delay 5 --fail "https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js" -o "/etc/web-client/libs/jszip.min.js" || (echo "Failed to download JSZip library" && exit 1) && \
127+
# Download Amazon Q artifacts for JupyterLab extension
128+
bash /tmp/download_amazon_q_agentic_chat_artifacts.sh $FLARE_SERVER_VERSION_JL /etc/amazon-q-agentic-chat/artifacts/$AMAZON_Q_IDE_TYPE $AMAZON_Q_IDE_TYPE && \
129+
# Fix ownership for JupyterLab access
130+
sudo chown -R $MAMBA_USER:$MAMBA_USER /etc/amazon-q-agentic-chat/ /etc/web-client/ && \
131+
# Update npm version
132+
npm i -g npm && \
133+
# Enforce to use `conda-forge` as only channel, by removing `defaults`
134+
conda config --remove channels defaults && \
135+
micromamba config append channels conda-forge --env && \
136+
# Configure CodeEditor - Install extensions and set preferences
137+
extensionloc=/opt/amazon/sagemaker/sagemaker-code-editor-server-data/extensions && mkdir -p "${extensionloc}" \
138+
# Loop through all vsix files in /etc/code-editor/extensions and install them
139+
&& for ext in /etc/code-editor/extensions/*.vsix; do \
140+
echo "Installing extension ${ext}..."; \
141+
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; \
142+
done \
143+
# Copy the settings
144+
&& cp /etc/code-editor/code_editor_machine_settings.json /opt/amazon/sagemaker/sagemaker-code-editor-server-data/data/Machine/settings.json && \
145+
cp /etc/code-editor/code_editor_user_settings.json /opt/amazon/sagemaker/sagemaker-code-editor-server-data/data/User/settings.json && \
146+
# Install glue kernels, and move to shared directory
147+
# Also patching base kernel so Studio background code doesn't start session silently
148+
install-glue-kernels && \
149+
SITE_PACKAGES=$(pip show aws-glue-sessions | grep Location | awk '{print $2}') && \
150+
jupyter-kernelspec install $SITE_PACKAGES/aws_glue_interactive_sessions_kernel/glue_pyspark --user && \
151+
jupyter-kernelspec install $SITE_PACKAGES/aws_glue_interactive_sessions_kernel/glue_spark --user && \
152+
mv /home/sagemaker-user/.local/share/jupyter/kernels/glue_pyspark /opt/conda/share/jupyter/kernels && \
153+
mv /home/sagemaker-user/.local/share/jupyter/kernels/glue_spark /opt/conda/share/jupyter/kernels && \
154+
sed -i '/if not store_history and (/i\ if "sm_analytics_runtime_check" in code:\n return await self._complete_cell()\n' \
155+
"$SITE_PACKAGES/aws_glue_interactive_sessions_kernel/glue_kernel_base/BaseKernel.py" && \
156+
# Install FIPS Provider for OpenSSL, on top of existing OpenSSL installation
157+
# v3.0.8 is latest FIPS validated provider, so this is the one we install
158+
# But we need to run tests against the installed version.
159+
# see https://github.com/openssl/openssl/blob/master/README-FIPS.md https://www.openssl.org/source/
160+
INSTALLED_SSL=$(micromamba list | grep openssl | tr -s ' ' | cut -d ' ' -f 3 | head -n 1) && \
161+
# download source code for installed, and FIPS validated openssl versions
162+
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 && \
163+
curl -L https://github.com/openssl/openssl/releases/download/openssl-$INSTALLED_SSL/openssl-$INSTALLED_SSL.tar.gz > openssl-$INSTALLED_SSL.tar.gz && \
164+
tar -xf openssl-$FIPS_VALIDATED_SSL.tar.gz && tar -xf openssl-$INSTALLED_SSL.tar.gz && cd openssl-$FIPS_VALIDATED_SSL && \
165+
# Configure both versions to enable FIPS and build
166+
./Configure enable-fips --prefix=/opt/conda --openssldir=/opt/conda/ssl && make && \
167+
cd ../openssl-$INSTALLED_SSL && \
168+
./Configure enable-fips --prefix=/opt/conda --openssldir=/opt/conda/ssl && make && \
169+
# Copy validated provider to installed version for testing
170+
cp ../openssl-$FIPS_VALIDATED_SSL/providers/fips.so providers/. && \
171+
cp ../openssl-$FIPS_VALIDATED_SSL/providers/fipsmodule.cnf providers/. && \
172+
make tests && cd ../openssl-$FIPS_VALIDATED_SSL && \
173+
# After tests pass, install FIPS provider and remove source code
174+
make install_fips && cd .. && rm -rf ./openssl-* && \
175+
# Create new config file with fips-enabled. Then user can override OPENSSL_CONF to enable FIPS
176+
# e.g. export OPENSSL_CONF=/opt/conda/ssl/openssl-fips.cnf
177+
cp /opt/conda/ssl/openssl.cnf /opt/conda/ssl/openssl-fips.cnf && \
178+
sed -i "s:# .include fipsmodule.cnf:.include /opt/conda/ssl/fipsmodule.cnf:" /opt/conda/ssl/openssl-fips.cnf && \
179+
sed -i 's:# fips = fips_sect:fips = fips_sect:' /opt/conda/ssl/openssl-fips.cnf && \
180+
# Install Kerberos.
181+
# Make sure no dependency is added/updated
182+
pip install "krb5>=0.5.1,<0.6" && \
183+
pip show krb5 | grep Require | xargs -i sh -c '[ $(echo {} | cut -d: -f2 | wc -w) -eq 0 ] ' && \
184+
# https://stackoverflow.com/questions/122327
185+
SYSTEM_PYTHON_PATH=$(python3 -c "from __future__ import print_function;import sysconfig; print(sysconfig.get_paths().get('purelib'))") && \
186+
# Remove SparkRKernel as it's not supported \
187+
jupyter-kernelspec remove -f -y sparkrkernel && \
188+
# Patch Sparkmagic lib to support Custom Certificates \
189+
# https://github.com/jupyter-incubator/sparkmagic/pull/435/files \
190+
cp -a ${SYSTEM_PYTHON_PATH}/sagemaker_studio_analytics_extension/patches/configuration.py ${SYSTEM_PYTHON_PATH}/sparkmagic/utils/ && \
191+
cp -a ${SYSTEM_PYTHON_PATH}/sagemaker_studio_analytics_extension/patches/reliablehttpclient.py ${SYSTEM_PYTHON_PATH}/sparkmagic/livyclientlib/reliablehttpclient.py && \
192+
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 && \
193+
sed -i 's="Spark"="SparkMagic Spark"=g' /opt/conda/share/jupyter/kernels/sparkkernel/kernel.json && \
194+
sed -i 's="PySpark"="SparkMagic PySpark"=g' /opt/conda/share/jupyter/kernels/pysparkkernel/kernel.json && \
195+
# Configure RTC - disable jupyter_collaboration by default
196+
jupyter labextension disable @jupyter/collaboration-extension && \
197+
sudo curl -o /opt/apache-maven-3.9.9-bin.tar.gz https://archive.apache.org/dist/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.tar.gz
198+
199+
# Patch glue kernels to use kernel wrapper
200+
COPY patch_glue_pyspark.json /opt/conda/share/jupyter/kernels/glue_pyspark/kernel.json
201+
COPY patch_glue_spark.json /opt/conda/share/jupyter/kernels/glue_spark/kernel.json
202+
203+
USER root
204+
205+
# Create logging directories for supervisor
206+
RUN mkdir -p $SAGEMAKER_LOGGING_DIR && \
207+
chmod a+rw $SAGEMAKER_LOGGING_DIR && \
208+
mkdir -p ${STUDIO_LOGGING_DIR} && \
209+
chown ${NB_USER}:${MAMBA_USER} ${STUDIO_LOGGING_DIR} && \
210+
# Create sagemaker pysdk admin default config directory
211+
mkdir -p /etc/xdg/sagemaker && \
212+
chmod a+rw /etc/xdg/sagemaker && \
213+
# Clean up CodeEditor artifacts
214+
rm -rf /etc/code-editor && \
215+
# Create supervisord runtime directory
216+
mkdir -p /var/run/supervisord && \
217+
chmod a+rw /var/run/supervisord && \
218+
# Create root directory for DB
219+
# Create logging directories for supervisor
220+
mkdir -p $DB_ROOT_DIR && \
221+
chmod a+rw $DB_ROOT_DIR && \
222+
HOME_DIR="/home/${NB_USER}/licenses" \
223+
&& mkdir -p ${HOME_DIR} \
224+
&& curl -o ${HOME_DIR}/oss_compliance.zip https://aws-dlinfra-utilities.s3.amazonaws.com/oss_compliance.zip \
225+
&& unzip ${HOME_DIR}/oss_compliance.zip -d ${HOME_DIR}/ \
226+
&& cp ${HOME_DIR}/oss_compliance/test/testOSSCompliance /usr/local/bin/testOSSCompliance \
227+
&& chmod +x /usr/local/bin/testOSSCompliance \
228+
&& chmod +x ${HOME_DIR}/oss_compliance/generate_oss_compliance.sh \
229+
&& ${HOME_DIR}/oss_compliance/generate_oss_compliance.sh ${HOME_DIR} python \
230+
&& rm -rf ${HOME_DIR}/oss_compliance*
231+
232+
# Explicitly disable BuildKit for SM Studio Docker functionality
233+
ENV DOCKER_BUILDKIT=0
234+
ENV PATH="/opt/conda/bin:/opt/conda/condabin:$PATH"
235+
WORKDIR "/home/${NB_USER}"
236+
ENV SHELL=/bin/bash
237+
ENV OPENSSL_MODULES=/opt/conda/lib64/ossl-modules/
238+
USER $MAMBA_USER
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# Release notes: 2.9.5
2+
3+
Package | gpu| cpu
4+
---|---|---
5+
python|3.11.11|3.11.11
6+
numpy|1.26.4|1.26.4
7+
jinja2|3.1.6|3.1.6
8+
pytorch|2.6.0|2.6.0
9+
pandas|2.3.3|2.3.3
10+
altair|5.5.0|5.5.0
11+
boto3|1.39.11|1.39.11
12+
ipython|8.37.0|8.37.0
13+
jupyter-lsp|2.2.6|2.2.6
14+
jupyterlab|4.4.10|4.4.10
15+
amazon-q-developer-jupyterlab-ext|3.4.8|3.4.8
16+
langchain|0.3.27|0.3.27
17+
jupyter-ai|2.31.6|2.31.6
18+
amazon-sagemaker-jupyter-ai-q-developer|1.2.8|1.2.8
19+
jupyter-scheduler|2.11.0|2.11.0
20+
amazon-sagemaker-jupyter-scheduler|3.1.15|3.1.15
21+
amazon-sagemaker-sql-magic|0.1.4|0.1.4
22+
jupyterlab-lsp|5.0.3|5.0.3
23+
amazon_sagemaker_sql_editor|0.1.19|0.1.19
24+
amzn-sagemaker-aiops-jupyterlab-extension|1.0.4|1.0.4
25+
scipy|1.16.2|1.16.2
26+
matplotlib-base|3.10.7|3.10.7
27+
scikit-learn|1.7.2|1.7.2
28+
pip|24.3.1|24.3.1
29+
torchvision|0.21.0|0.21.0
30+
autogluon|1.4.0|1.4.0
31+
ipywidgets|8.1.7|8.1.7
32+
notebook|7.4.7|7.4.7
33+
aws-glue-sessions|1.0.9|1.0.9
34+
aws-s3-access-grants-boto3-plugin|1.2.0|1.2.0
35+
conda|24.11.3|24.11.3
36+
docker-cli|27.5.1|27.5.1
37+
uvicorn|0.35.0|0.35.0
38+
fastapi|0.116.2|0.116.2
39+
git-remote-codecommit|1.16|1.16
40+
jupyter-activity-monitor-extension|0.3.2|0.3.2
41+
jupyter-collaboration|2.1.5|2.1.5
42+
jupyter-dash|0.4.2|0.4.2
43+
jupyter-server-proxy|4.4.0|4.4.0
44+
jupyterlab-git|0.51.2|0.51.2
45+
keras|3.10.0|3.10.0
46+
langchain-aws|0.2.35|0.2.35
47+
mcp|1.12.4|1.12.4
48+
mlflow|2.22.0|2.22.0
49+
py-xgboost-gpu|2.1.4|
50+
pyhive|0.7.0|0.7.0
51+
python-gssapi|1.9.0|1.9.0
52+
python-lsp-server|1.13.1|1.13.1
53+
s3fs|2024.12.0|2024.12.0
54+
sagemaker-code-editor|1.7.1|1.7.1
55+
sagemaker-gen-ai-jupyterlab-extension|1.0.11|1.0.11
56+
sagemaker-headless-execution-driver|0.0.13|0.0.13
57+
sagemaker-jupyterlab-emr-extension|0.4.3|0.4.3
58+
sagemaker-jupyterlab-extension|0.5.1|0.5.1
59+
sagemaker-kernel-wrapper|0.0.6|0.0.6
60+
sagemaker-mlflow|0.1.0|0.1.0
61+
sagemaker-python-sdk|2.245.0|2.245.0
62+
sagemaker-studio|1.0.22|1.0.22
63+
sagemaker-studio-analytics-extension|0.2.2|0.2.2
64+
sagemaker-studio-cli|1.0.7|1.0.7
65+
sagemaker-studio-dataengineering-extensions|1.2.12|1.2.12
66+
sagemaker-studio-dataengineering-sessions|1.2.6|1.2.6
67+
seaborn|0.13.2|0.13.2
68+
supervisor|4.2.5|4.2.5
69+
tensorflow|2.18.0|2.18.0
70+
tf-keras|2.18.0|2.18.0
71+
uv|0.8.24|0.8.24
72+
py-xgboost-cpu| |2.1.4
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
-----BEGIN PGP PUBLIC KEY BLOCK-----
2+
3+
mQINBF2Cr7UBEADJZHcgusOJl7ENSyumXh85z0TRV0xJorM2B/JL0kHOyigQluUG
4+
ZMLhENaG0bYatdrKP+3H91lvK050pXwnO/R7fB/FSTouki4ciIx5OuLlnJZIxSzx
5+
PqGl0mkxImLNbGWoi6Lto0LYxqHN2iQtzlwTVmq9733zd3XfcXrZ3+LblHAgEt5G
6+
TfNxEKJ8soPLyWmwDH6HWCnjZ/aIQRBTIQ05uVeEoYxSh6wOai7ss/KveoSNBbYz
7+
gbdzoqI2Y8cgH2nbfgp3DSasaLZEdCSsIsK1u05CinE7k2qZ7KgKAUIcT/cR/grk
8+
C6VwsnDU0OUCideXcQ8WeHutqvgZH1JgKDbznoIzeQHJD238GEu+eKhRHcz8/jeG
9+
94zkcgJOz3KbZGYMiTh277Fvj9zzvZsbMBCedV1BTg3TqgvdX4bdkhf5cH+7NtWO
10+
lrFj6UwAsGukBTAOxC0l/dnSmZhJ7Z1KmEWilro/gOrjtOxqRQutlIqG22TaqoPG
11+
fYVN+en3Zwbt97kcgZDwqbuykNt64oZWc4XKCa3mprEGC3IbJTBFqglXmZ7l9ywG
12+
EEUJYOlb2XrSuPWml39beWdKM8kzr1OjnlOm6+lpTRCBfo0wa9F8YZRhHPAkwKkX
13+
XDeOGpWRj4ohOx0d2GWkyV5xyN14p2tQOCdOODmz80yUTgRpPVQUtOEhXQARAQAB
14+
tCFBV1MgQ0xJIFRlYW0gPGF3cy1jbGlAYW1hem9uLmNvbT6JAlQEEwEIAD4CGwMF
15+
CwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQT7Xbd/1cEYuAURraimMQrMRnJHXAUC
16+
ZqFYbwUJCv/cOgAKCRCmMQrMRnJHXKYuEAC+wtZ611qQtOl0t5spM9SWZuszbcyA
17+
0xBAJq2pncnp6wdCOkuAPu4/R3UCIoD2C49MkLj9Y0Yvue8CCF6OIJ8L+fKBv2DI
18+
yWZGmHL0p9wa/X8NCKQrKxK1gq5PuCzi3f3SqwfbZuZGeK/ubnmtttWXpUtuU/Iz
19+
VR0u/0sAy3j4uTGKh2cX7XnZbSqgJhUk9H324mIJiSwzvw1Ker6xtH/LwdBeJCck
20+
bVBdh3LZis4zuD4IZeBO1vRvjot3Oq4xadUv5RSPATg7T1kivrtLCnwvqc6L4LnF
21+
0OkNysk94L3LQSHyQW2kQS1cVwr+yGUSiSp+VvMbAobAapmMJWP6e/dKyAUGIX6+
22+
2waLdbBs2U7MXznx/2ayCLPH7qCY9cenbdj5JhG9ibVvFWqqhSo22B/URQE/CMrG
23+
+3xXwtHEBoMyWEATr1tWwn2yyQGbkUGANneSDFiTFeoQvKNyyCFTFO1F2XKCcuDs
24+
19nj34PE2TJilTG2QRlMr4D0NgwLLAMg2Los1CK6nXWnImYHKuaKS9LVaCoC8vu7
25+
IRBik1NX6SjrQnftk0M9dY+s0ZbAN1gbdjZ8H3qlbl/4TxMdr87m8LP4FZIIo261
26+
Eycv34pVkCePZiP+dgamEiQJ7IL4ZArio9mv6HbDGV6mLY45+l6/0EzCwkI5IyIf
27+
BfWC9s/USgxchg==
28+
=ptgS
29+
-----END PGP PUBLIC KEY BLOCK-----

0 commit comments

Comments
 (0)