diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 00000000..c519eda5 --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,2 @@ +# Migrate code style to Black +a74466c154d01201388f5232b167538275aa74c4 diff --git a/.github/workflows/PR_TEMPLATE.md b/.github/workflows/PR_TEMPLATE.md index f6bcb2e4..767b3ba5 100644 --- a/.github/workflows/PR_TEMPLATE.md +++ b/.github/workflows/PR_TEMPLATE.md @@ -1,4 +1,4 @@ This pull request was created by GitHub Actions/AWS CodeBuild! Before merging, please do the following: - [ ] Review changelog/staleness report. - [ ] Review build/test results by clicking *Build Logs* in CI Report (be patient, tests take ~4hr). -- [ ] Review ECR Scan results. \ No newline at end of file +- [ ] Review ECR Scan results. diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index b83981d6..9da68321 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -57,7 +57,7 @@ jobs: # Note - CodeBuild depends on this branch name. Don't change without corresponding backend change. run: git checkout -b release-${{ steps.calc_target.outputs.target_version }} - name: Generate artifacts - run: python ./src/main.py create-${{ inputs.release-type }}-version-artifacts --base-patch-version ${{ inputs.base-version }} + run: python ./src/main.py create-${{ inputs.release-type }}-version-artifacts --base-patch-version ${{ inputs.base-version }} --force - name: Commit .in artifacts to branch env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -88,14 +88,15 @@ jobs: - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v4 with: - role-to-assume: arn:aws:iam::700843992353:role/codebuild-start-build-role - aws-region: us-west-2 + role-to-assume: ${{ secrets.START_CODEBUILD_ROLE }} + aws-region: us-east-1 # CodeBuild timeout of 8 hours - role-duration-seconds: 3840 + role-duration-seconds: 28800 + audience: https://sts.us-east-1.amazonaws.com - name: Run CodeBuild uses: dark-mechanicum/aws-codebuild@v1 env: CODEBUILD__sourceVersion: 'pr/${{ needs.open-pr.outputs.pr_id }}' with: - projectName: 'buildtestpublicimage1C7307A-9AzES2hf19lW' - buildspec: '{"imageOverride": "aws/codebuild/standard:7.0"}' + projectName: ${{ secrets.CODEBUILD_JOB_NAME }} + buildspec: '{"imageOverride": "aws/codebuild/standard:7.0", "imagePullCredentialsTypeOverride": "CODEBUILD"}' diff --git a/.github/workflows/check_code_quality.yml b/.github/workflows/check_code_quality.yml new file mode 100644 index 00000000..6239f821 --- /dev/null +++ b/.github/workflows/check_code_quality.yml @@ -0,0 +1,50 @@ +name: check_code_quality + +on: + push: + branches: [ main ] + paths: + - "src/**.py" + - "test/**.py" + - "template/**.py" + + pull_request: + branches: [ main ] + paths: + - "src/**.py" + - "test/**.py" + - "template/**.py" + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +defaults: + run: + shell: bash -l {0} + +jobs: + build: + name: Check Code Quality + runs-on: ubuntu-latest + if: github.repository == 'aws/sagemaker-distribution' + permissions: + pull-requests: write + contents: write + steps: + - uses: actions/checkout@v4 + - uses: mamba-org/setup-micromamba@v1 + with: + environment-file: ./environment.yml + environment-name: sagemaker-distribution + init-shell: bash + - name: Free up disk space + run: rm -rf /opt/hostedtoolcache + - name: Activate sagemaker-distribution + run: micromamba activate sagemaker-distribution + - name: Check style with black + run: black --line-length=120 --check src test template + - name: Check style with autoflake + run: autoflake --in-place --expand-star-imports --ignore-init-module-imports --remove-all-unused-imports -rc src test template + - name: Check style with isort + run: isort --profile black -c src test template diff --git a/.github/workflows/monthly-minor-release.yml b/.github/workflows/monthly-minor-release.yml index 7b91b75c..fc443d26 100644 --- a/.github/workflows/monthly-minor-release.yml +++ b/.github/workflows/monthly-minor-release.yml @@ -41,4 +41,4 @@ jobs: uses: aws/sagemaker-distribution/.github/workflows/build-image.yml@main with: release-type: "minor" - base-version: ${{ matrix.version }} \ No newline at end of file + base-version: ${{ matrix.version }} diff --git a/.github/workflows/nightly-build-image.yml b/.github/workflows/nightly-build-image.yml index efac7e22..285af603 100644 --- a/.github/workflows/nightly-build-image.yml +++ b/.github/workflows/nightly-build-image.yml @@ -1,8 +1,9 @@ name: Build New Image Version on: + workflow_dispatch: # Run every night at 4:00PM PDT schedule: - - cron: '0 23 ? * *' + - cron: '0 23 * * *' defaults: run: shell: bash -l {0} @@ -24,4 +25,4 @@ jobs: uses: dark-mechanicum/aws-codebuild@v1 with: projectName: 'betaimagerelease92AD4800-5O3Rv5xogtpw' - buildspec: '{"imageOverride": "aws/codebuild/standard:7.0","imagePullCredentialsTypeOverride": "CODEBUILD"}' + buildspec: '{"imageOverride": "aws/codebuild/standard:7.0", "imagePullCredentialsTypeOverride": "CODEBUILD"}' diff --git a/.gitignore b/.gitignore index 083d7323..120ee635 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ __pycache__ .idea +.DS_Store diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..4c3a2233 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,26 @@ +default_language_version: + # force all unspecified python hooks to run python3 + python: python3 +repos: +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v2.3.0 + hooks: + - id: end-of-file-fixer + - id: trailing-whitespace + - id: detect-aws-credentials +- repo: https://github.com/humitos/mirrors-autoflake.git + rev: v1.3 + hooks: + - id: autoflake + args: ['--in-place', '--expand-star-imports', '--ignore-init-module-imports', '--remove-all-unused-imports'] +- repo: https://github.com/psf/black + rev: 23.3.0 + hooks: + - id: black + args: [--line-length=120] +- repo: https://github.com/pycqa/isort + rev: 5.12.0 + hooks: # imports sorting + - id: isort + name: isort (python) + args: ["--profile", "black"] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 74e827f5..324d899c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -40,62 +40,73 @@ GitHub provides additional document on [forking a repository](https://help.githu [creating a pull request](https://help.github.com/articles/creating-a-pull-request/). -## For adding new Python packages to SageMaker Distribution -SageMaker Distribution will add new Python packages only during a minor/major version release. +## For adding new Conda packages to SageMaker Distribution +SageMaker Distribution will add new Conda packages only during a minor/major version release. New packages will not be added during a patch version release. Follow these steps for sending out a pull request for adding new packages: 1. Identify the latest version of SageMaker Distribution. 2. Create the next minor/major version's build artifacts folder here: https://github.com/aws/sagemaker-distribution/tree/main/build_artifacts -3. Currently, SageMaker Distribution is using Conda forge channel as our source (for Python - packages). +3. Currently, SageMaker Distribution is using Conda forge channel as our source (for Conda + packages). Ensure that the new package which you are trying to add is present in Conda forge channel. https://conda-forge.org/feedstock-outputs/ -4. Create {cpu/gpu}.additional_packages_env.in file in that folder containing the new packages. +4. Create {cpu/gpu}.additional_packages_env.in file in that folder containing the new packages. Specify the new package based on the following examples: i. conda-forge::new-package - + ii. conda-forge::new-package[version='>=some-version-number," --local-image-version $VERSION + ``` 8. Submit the PR containing the following files. * {cpu/gpu}.additional_packages_env.in files * All the test files and test_dockerfile_based_harness.py changes - + Note: you don't have to include other files such as env.in/ env.out/ Dockerfile etc in your PR - + Also Note: We might ask you to include the test results as part of the PR. ## Finding contributions to work on diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 4bf4796b..2b9d61df 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -24,6 +24,22 @@ Run the following to invoke those tests: pytest --local-image-id REPLACE_ME_WITH_IMAGE_ID ``` +## Code Style + +Install pre-commit to run code style checks before each commit: + +```shell +pre-commit install +``` + +To run formatters for all existing files, use: + +```shell +pre-commit run --all-files +``` + +pre-commit checks can be disabled for a particular commit with git commit -n. + You can also pass a `--use-gpu` flag if the test machine has Nvidia GPU(s) and necessary Nvidia drivers. ### Unit tests for the project's source code diff --git a/README.md b/README.md index 67e99493..9792f8b9 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ in the relevant _RELEASE.md_ file in the [build_artifacts](build_artifacts) dire ### Versioning strategy -Amazon SageMaker Distribution supports semantic versioning as described on [semver.org](https://semver.org/). A major +Amazon SageMaker Distribution supports semantic versioning as described on [semver.org](https://semver.org/). A major version upgrade of Amazon SageMaker Distribution allows major version upgrades of all its dependencies, and similarly for minor and patch version upgrades. However, it is important to note that Amazon SageMaker Distribution’s ability to follow semver guidelines is currently dependent on how its dependencies adhere to them. @@ -47,7 +47,7 @@ will remain the same over time. ### Package Staleness Report -If you want to generate/view the staleness report for each of the individual packages in a given +If you want to generate/view the staleness report for each of the individual packages in a given SageMaker distribution image version, then run the following command: ``` @@ -98,7 +98,7 @@ directory (such as Jupyter Lab notebooks) will persist. ### Amazon SageMaker Studio -> [Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) is a web-based, integrated +> [Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) is a web-based, integrated > development environment (IDE) for machine learning that lets you build, train, debug, deploy, and monitor your > machine learning models. @@ -123,6 +123,15 @@ USER $MAMBA_USER RUN micromamba install sagemaker-inference --freeze-installed --yes --channel conda-forge --name base ``` +## FIPS + +As of sagemaker-distribution: v0.12+, v1.6+, and v2+, the images come with FIPS 140-2 validated openssl provider +available for use. You can enable the FIPS provider by running: + +`export OPENSSL_CONF=/opt/conda/ssl/openssl-fips.cnf` + +For more info on the FIPS provider see: https://github.com/openssl/openssl/blob/master/README-FIPS.md + ## Security See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information. diff --git a/RELEASE.md b/RELEASE.md index 03286729..d6f16c01 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -51,7 +51,7 @@ python src/main.py build \ Note: -- As you can see above, the `--target-ecr-repo` parameter can be supplied zero or multiple times. If not supplied, the +- As you can see above, the `--target-ecr-repo` parameter can be supplied zero or multiple times. If not supplied, the tool will just build a local image. If supplied multiple times, it'll upload the images to all those ECR repositories. - There is also a `--skip-tests` flag which, by default, is `false`. You can supply it if you'd like to skip tests locally. However, we'll make sure the tests succeed before any image is release publicly. diff --git a/build_artifacts/v1/v1.6/v1.6.0/CHANGELOG-cpu.md b/build_artifacts/v1/v1.6/v1.6.0/CHANGELOG-cpu.md new file mode 100644 index 00000000..d8c52b71 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.0/CHANGELOG-cpu.md @@ -0,0 +1,24 @@ +# Change log: 1.6.0(cpu) + +## Upgrades: + +Package | Previous Version | Current Version +---|---|--- +boto3|1.28.64|1.34.51 +ipython|8.21.0|8.22.2 +jupyter-lsp|2.2.3|2.2.4 +jupyterlab|4.1.2|4.1.4 +jupyter-ai|2.9.1|2.11.0 +jupyter-server-proxy|4.1.0|4.1.2 +nodejs|18.18.2|18.19.0 +python-lsp-server|1.10.0|1.10.1 +sagemaker-python-sdk|2.198.1|2.212.0 +uvicorn|0.27.1|0.28.0 + +## What's new: + +Package | Version +---|--- +amazon-sagemaker-sql-magic|0.1.0 +amazon_sagemaker_sql_editor|0.1.3 +sagemaker-code-editor|1.0.0 diff --git a/build_artifacts/v1/v1.6/v1.6.0/CHANGELOG-gpu.md b/build_artifacts/v1/v1.6/v1.6.0/CHANGELOG-gpu.md new file mode 100644 index 00000000..503cb51d --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.0/CHANGELOG-gpu.md @@ -0,0 +1,24 @@ +# Change log: 1.6.0(gpu) + +## Upgrades: + +Package | Previous Version | Current Version +---|---|--- +boto3|1.28.64|1.34.51 +ipython|8.21.0|8.22.2 +jupyter-lsp|2.2.3|2.2.4 +jupyterlab|4.1.2|4.1.4 +jupyter-ai|2.9.1|2.11.0 +jupyter-server-proxy|4.1.0|4.1.2 +nodejs|18.18.2|18.19.0 +python-lsp-server|1.10.0|1.10.1 +sagemaker-python-sdk|2.198.1|2.212.0 +uvicorn|0.27.1|0.28.0 + +## What's new: + +Package | Version +---|--- +amazon-sagemaker-sql-magic|0.1.0 +amazon_sagemaker_sql_editor|0.1.3 +sagemaker-code-editor|1.0.0 diff --git a/build_artifacts/v1/v1.6/v1.6.0/Dockerfile b/build_artifacts/v1/v1.6/v1.6.0/Dockerfile new file mode 100644 index 00000000..de5b910c --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.0/Dockerfile @@ -0,0 +1,182 @@ +ARG TAG_FOR_BASE_MICROMAMBA_IMAGE +FROM mambaorg/micromamba:$TAG_FOR_BASE_MICROMAMBA_IMAGE + +ARG CUDA_MAJOR_MINOR_VERSION='' +ARG ENV_IN_FILENAME +ARG ARG_BASED_ENV_IN_FILENAME + +ARG AMZN_BASE="/opt/amazon/sagemaker" +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 + +ENV SAGEMAKER_LOGGING_DIR="/var/log/sagemaker/" +ENV STUDIO_LOGGING_DIR="/var/log/studio/" +ENV EDITOR="nano" + +USER root +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 install -y --no-install-recommends sudo gettext-base wget curl unzip git rsync build-essential openssh-client nano cron less && \ + # 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 && \ + : +RUN echo "source /usr/local/bin/_activate_current_env.sh" | tee --append /etc/profile + +# CodeEditor - create server, user data dirs +RUN 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 + +# Merge in OS directory tree contents. +RUN 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 +RUN mkdir -p /etc/code-editor/extensions && \ + while IFS= read -r 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/ + +# Make sure that $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 + +ARG CONDA_OVERRIDE_CUDA=$CUDA_MAJOR_MINOR_VERSION +RUN micromamba install -y --name base --file /tmp/$ENV_IN_FILENAME && \ + micromamba clean --all --yes --force-pkgs-dirs && \ + rm -rf /tmp/*.in + + +ARG MAMBA_DOCKERFILE_ACTIVATE=1 +RUN sudo ln -s $(which python3) /usr/bin/python + +# Configure CodeEditor - Install extensions and set preferences +RUN \ + 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 + +# Install glue kernels, and move to shared directory +# Also patching base kernel so Studio background code doesn't start session silently +RUN 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" + + +# 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 +RUN 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* + +# 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} + +# Clean up CodeEditor artifacts +RUN rm -rf /etc/code-editor + +# Create supervisord runtime directory +RUN mkdir -p /var/run/supervisord && \ + chmod a+rw /var/run/supervisord + +USER $MAMBA_USER +ENV PATH="/opt/conda/bin:/opt/conda/condabin:$PATH" +WORKDIR "/home/${NB_USER}" + +# 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/ +RUN 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://www.openssl.org/source/openssl-$FIPS_VALIDATED_SSL.tar.gz > openssl-$FIPS_VALIDATED_SSL.tar.gz && \ + curl -L https://www.openssl.org/source/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 +RUN 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 +ENV OPENSSL_MODULES=/opt/conda/lib64/ossl-modules/ + +# Install Kerberos. +# Make sure no dependency is added/updated +RUN 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 +RUN 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 + +ENV SHELL=/bin/bash diff --git a/build_artifacts/v1/v1.6/v1.6.0/RELEASE.md b/build_artifacts/v1/v1.6/v1.6.0/RELEASE.md new file mode 100644 index 00000000..94f6e2c2 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.0/RELEASE.md @@ -0,0 +1,56 @@ +# Release notes: 1.6.0 + +Package | gpu| cpu +---|---|--- +python|3.10.13|3.10.13 +numpy|1.26.4|1.26.4 +jinja2|3.1.3|3.1.3 +pandas|2.1.4|2.1.4 +altair|5.2.0|5.2.0 +boto3|1.34.51|1.34.51 +ipython|8.22.2|8.22.2 +jupyter-lsp|2.2.4|2.2.4 +jupyterlab|4.1.4|4.1.4 +amazon-codewhisperer-jupyterlab-ext|2.0.1|2.0.1 +jupyter-scheduler|2.5.1|2.5.1 +amazon-sagemaker-jupyter-scheduler|3.0.7|3.0.7 +amazon-sagemaker-sql-magic|0.1.0|0.1.0 +jupyterlab-lsp|5.0.3|5.0.3 +amazon_sagemaker_sql_editor|0.1.3|0.1.3 +scipy|1.11.4|1.11.4 +scikit-learn|1.4.1.post1|1.4.1.post1 +pip|23.3.2|23.3.2 +torchvision|0.15.2|0.15.2 +autogluon|0.8.2|0.8.2 +ipywidgets|8.1.2|8.1.2 +notebook|7.1.1|7.1.1 +aws-glue-sessions|1.0.4|1.0.4 +conda|23.11.0|23.11.0 +fastapi|0.103.2|0.103.2 +langchain|0.1.9|0.1.9 +jupyter-ai|2.11.0|2.11.0 +jupyter-dash|0.4.2|0.4.2 +jupyter-server-proxy|4.1.2|4.1.2 +jupyterlab-git|0.50.0|0.50.0 +keras|2.12.0|2.12.0 +matplotlib|3.8.3|3.8.3 +nodejs|18.19.0|18.19.0 +py-xgboost-gpu|1.7.6| +thrift_sasl|0.4.3|0.4.3 +pyhive|0.7.0|0.7.0 +python-gssapi|1.8.3|1.8.3 +python-lsp-server|1.10.1|1.10.1 +pytorch-gpu|2.0.0| +sagemaker-code-editor|1.0.0|1.0.0 +sagemaker-headless-execution-driver|0.0.12|0.0.12 +sagemaker-jupyterlab-emr-extension|0.1.9|0.1.9 +sagemaker-jupyterlab-extension|0.2.0|0.2.0 +sagemaker-kernel-wrapper|0.0.2|0.0.2 +sagemaker-python-sdk|2.212.0|2.212.0 +sagemaker-studio-analytics-extension|0.0.21|0.0.21 +sasl|0.3.1|0.3.1 +supervisor|4.2.5|4.2.5 +tensorflow|2.12.1|2.12.1 +uvicorn|0.28.0|0.28.0 +pytorch| |2.0.0 +py-xgboost-cpu| |1.7.6 diff --git a/build_artifacts/v1/v1.6/v1.6.0/cpu.additional_packages_env.in b/build_artifacts/v1/v1.6/v1.6.0/cpu.additional_packages_env.in new file mode 100644 index 00000000..d84fe408 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.0/cpu.additional_packages_env.in @@ -0,0 +1,3 @@ +conda-forge::sagemaker-code-editor[version='>=1.0.0'] +conda-forge::amazon_sagemaker_sql_editor[version='>=0.1.0,<2'] +conda-forge::amazon-sagemaker-sql-magic[version='>=0.1.0,<2'] diff --git a/build_artifacts/v1/v1.6/v1.6.0/cpu.env.in b/build_artifacts/v1/v1.6/v1.6.0/cpu.env.in new file mode 100644 index 00000000..f5a92f1d --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.0/cpu.env.in @@ -0,0 +1,51 @@ +# This file is auto-generated. +conda-forge::sagemaker-code-editor +conda-forge::amazon_sagemaker_sql_editor +conda-forge::amazon-sagemaker-sql-magic +conda-forge::langchain[version='>=0.1.9,<1.0.0'] +conda-forge::fastapi[version='>=0.103.2,<1.0.0'] +conda-forge::uvicorn[version='>=0.27.1,<1.0.0'] +conda-forge::pytorch[version='>=2.0.0,<3.0.0'] +conda-forge::tensorflow[version='>=2.12.1,<3.0.0'] +conda-forge::python[version='>=3.10.13,<3.11.0'] +conda-forge::pip[version='>=23.3.2,<24.0.0'] +conda-forge::torchvision[version='>=0.15.2,<1.0.0'] +conda-forge::numpy[version='>=1.26.4,<2.0.0'] +conda-forge::pandas[version='>=2.1.4,<3.0.0'] +conda-forge::scikit-learn[version='>=1.4.1.post1,<2.0.0'] +conda-forge::jinja2[version='>=3.1.3,<4.0.0'] +conda-forge::matplotlib[version='>=3.8.3,<4.0.0'] +conda-forge::sagemaker-headless-execution-driver[version='>=0.0.12,<1.0.0'] +conda-forge::ipython[version='>=8.21.0,<9.0.0'] +conda-forge::scipy[version='>=1.11.4,<2.0.0'] +conda-forge::keras[version='>=2.12.0,<3.0.0'] +conda-forge::py-xgboost-cpu[version='>=1.7.6,<2.0.0'] +conda-forge::jupyterlab[version='>=4.1.2,<5.0.0'] +conda-forge::ipywidgets[version='>=8.1.2,<9.0.0'] +conda-forge::conda[version='>=23.11.0,<24.0.0'] +conda-forge::boto3[version='>=1.28.64,<2.0.0'] +conda-forge::sagemaker-python-sdk[version='>=2.198.1,<3.0.0'] +conda-forge::supervisor[version='>=4.2.5,<5.0.0'] +conda-forge::autogluon[version='>=0.8.2,<1.0.0'] +conda-forge::aws-glue-sessions[version='>=1.0.4,<2.0.0'] +conda-forge::sagemaker-kernel-wrapper[version='>=0.0.2,<1.0.0'] +conda-forge::jupyter-ai[version='>=2.9.1,<3.0.0'] +conda-forge::jupyter-scheduler[version='>=2.5.1,<3.0.0'] +conda-forge::nodejs[version='>=18.18.2,<19.0.0'] +conda-forge::jupyter-lsp[version='>=2.2.3,<3.0.0'] +conda-forge::jupyterlab-lsp[version='>=5.0.3,<6.0.0'] +conda-forge::python-lsp-server[version='>=1.10.0,<2.0.0'] +conda-forge::notebook[version='>=7.1.1,<8.0.0'] +conda-forge::altair[version='>=5.2.0,<6.0.0'] +conda-forge::sagemaker-studio-analytics-extension[version='>=0.0.21,<1.0.0'] +conda-forge::jupyter-dash[version='>=0.4.2,<1.0.0'] +conda-forge::sagemaker-jupyterlab-extension[version='>=0.2.0,<1.0.0'] +conda-forge::sagemaker-jupyterlab-emr-extension[version='>=0.1.9,<1.0.0'] +conda-forge::amazon-sagemaker-jupyter-scheduler[version='>=3.0.7,<4.0.0'] +conda-forge::jupyter-server-proxy[version='>=4.1.0,<5.0.0'] +conda-forge::amazon-codewhisperer-jupyterlab-ext[version='>=2.0.1,<3.0.0'] +conda-forge::jupyterlab-git[version='>=0.50.0,<1.0.0'] +conda-forge::sasl[version='>=0.3.1,<1.0.0'] +conda-forge::thrift_sasl[version='>=0.4.3,<1.0.0'] +conda-forge::pyhive[version='>=0.7.0,<1.0.0'] +conda-forge::python-gssapi[version='>=1.8.3,<2.0.0'] diff --git a/build_artifacts/v1/v1.6/v1.6.0/cpu.env.out b/build_artifacts/v1/v1.6/v1.6.0/cpu.env.out new file mode 100644 index 00000000..962573f2 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.0/cpu.env.out @@ -0,0 +1,663 @@ +# 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/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_5.conda#d4ff227c46917d3b4565302a2bbb276b +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda#f36c115f1ee199da648e0597ec2047ad +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_5.conda#f6f6600d18a4047b54f803cf708b868a +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.5-hfc55251_0.conda#04b88013080254850d6c01ed54810589 +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-17.0.6-h4dfa4b3_0.conda#c1665f9c1c9f6c93d8b4e492a6a39056 +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#562b26ba2e19059551a811e72ab7f793 +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/bzip2-1.0.8-hd590300_5.conda#69b8b6202a07720f448be700e300ccf4 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda#7aca3059a1729aa76c597603f10b0dd3 +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3 +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda#30fd6e37fe21f86f4bd26d6ee73eeec7 +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.45.2-h2797004_0.conda#866983a220e27a80cb75e85cb30466a1 +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.4-h59595ed_2.conda#7dbaa197d7ba6032caf7ae7f32c1efa0 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.2.2-hbcca054_0.conda#2f4327a1cbe7f022401b236e915a5fef +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.2.1-hd590300_0.conda#51a753e64a3027bd7e23a189b1f6e91e +https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4 +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-2024a-h0c530f3_0.conda#161081fc7cec0bfda0d86d7cb595f8d8 +https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0 +https://conda.anaconda.org/conda-forge/linux-64/python-3.10.13-hd12c33a_1_cpython.conda#ed38140af93f81319ebc472fbcf16cca +https://conda.anaconda.org/conda-forge/noarch/absl-py-2.1.0-pyhd8ed1ab_0.conda#035d1d58677c13ec93122d9eb6b8803b +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_5.conda#7a6bd7a12a4bd359e2afe6c0fa1acace +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_5.conda#e73e9cfd1191783392131e6238bdb3e9 +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.25-pthreads_h413a1c8_0.conda#d172b34a443b95f86089e8229ddc9a17 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-20_linux64_openblas.conda#2b7bb4f7562c8cf334fc2e20c2d28abc +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-20_linux64_openblas.conda#36d486d72ab64ffea932329a1d3729a3 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-20_linux64_openblas.conda#6fabc51f5e647d09cc010c40061557e0 +https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.10-4_cp310.conda#26322ec5d7712c3ded99dd656142b8ce +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py310hb13e2d6_0.conda#6593de64c935768b6bad3e19b3e978be +https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda#79002079284aa895f883c6b7f3f88fd6 +https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.8-py310h2372a71_0.conda#bd19b3096442ea342c4a5208379660b1 +https://conda.anaconda.org/conda-forge/noarch/filelock-3.13.1-pyhd8ed1ab_0.conda#0c1729b74a8152fde6a38ba0a2ab9f45 +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py310h2372a71_0.conda#f6703fa0214a00bf49d1bef6dc7672d0 +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.3-pyhd8ed1ab_0.conda#e7d8df6509ba635247ff9aea31134262 +https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-3.21.12-hfc55251_2.conda#e3a7d4ba09b8dc939b98fef55f539220 +https://conda.anaconda.org/conda-forge/linux-64/libuv-1.46.0-hd590300_0.conda#d23c76f7e6dcd6243d1b6ef5e62d17d2 +https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda#cc47e1facc155f91abd89b11e48e72ff +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda#d66573916ffcf376178462f1b61c941e +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.5-h232c23b_0.conda#c442ebfda7a475f5e78f1c8e45f1e919 +https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.9.3-default_h554bfaf_1009.conda#f36ddc11ca46958197a45effdd286e45 +https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.11.0-h00ab1b0_1.conda#4531d2927578e7e254ff3bcf6457518c +https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.2.1-h84fe81f_16997.conda#a7ce56d5757f5b57e7daabe703ade5bb +https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda#425fce3b531bed6ec3c74fab3e5f0a1c +https://conda.anaconda.org/conda-forge/linux-64/sleef-3.5.1-h9b69904_2.tar.bz2#6e016cf4c525d04a7bd038cee53ad3fd +https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-h59595ed_1.conda#e358c7c5f6824c272b5034b3816438a7 +https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h9458935_0.conda#4c28f3210b30250037a4a627eeee9e0f +https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-hfe3b2da_0.conda#289c71e83dc0daa7d4c81f04180778ca +https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.2-py310h3ec546c_1.tar.bz2#73f6fa50c32ddd985cf5fba7b890a75c +https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_0.conda#dbf6e2d89137da32fa6670f3bffc024e +https://conda.anaconda.org/conda-forge/noarch/sympy-1.12-pypyh9d50eac_103.conda#2f7d6347d7acf6edf1ac7f2189f44c8f +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.5.0-pyha770c72_0.conda#43e7d9e50261fb11deb76e17d8431aac +https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.0.0-cpu_mkl_py310h402c8e3_101.conda#b351ffe4cd1b8337abfa88833cf60f25 +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.1-py310h2372a71_1.conda#bb010e368de4940771368bc3dc4c63e7 +https://conda.anaconda.org/conda-forge/noarch/accelerate-0.21.0-pyhd8ed1ab_0.conda#172fa1bba08cd6b431a1739090ab0ffc +https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.1-py310h2372a71_0.conda#f20cd4d9c1f4a8377d0818c819918bbb +https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2#d1e1eb7e21a9e2c74279d87dafb68156 +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.5.0-hd8ed1ab_0.conda#b3c594fde1a80a1fc3eb9cc4a5dfe392 +https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda#3ce482ec3066e6d809dbbb1d1679f215 +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.0.5-py310h2372a71_0.conda#d4c91d19e4f2f18b64753ac660edad79 +https://conda.anaconda.org/conda-forge/noarch/idna-3.6-pyhd8ed1ab_0.conda#1a76f09108576397c41c0b0c5bd84134 +https://conda.anaconda.org/conda-forge/linux-64/yarl-1.9.4-py310h2372a71_0.conda#4ad35c8f6a64a6ab708780dad603aef4 +https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.9.3-py310h2372a71_0.conda#7125fe11f08cdc41de9734dfb2ffd35b +https://conda.anaconda.org/conda-forge/noarch/aioitertools-0.11.0-pyhd8ed1ab_0.tar.bz2#59c40397276a286241c65faec5e1be3c +https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_0.tar.bz2#2cfa3e1cf3fb51bb9b17acc5b5e9ea11 +https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda#2cf4264fffb9e6eff6031c5b6884d61c +https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.0.9-py310hd8f1fbe_9.conda#e2047ad2af52c01845f58b580c6cbd5c +https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025 +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.18-pyhd8ed1ab_0.conda#bf61cfd2a7f212efba378167a07d4a6a +https://conda.anaconda.org/conda-forge/noarch/botocore-1.34.51-pyge310_1234567_0.conda#f8980578a765dd28417953dddfefe5bc +https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py310h2372a71_0.conda#d9dc9c45bdc2b38403e6b388581e92f0 +https://conda.anaconda.org/conda-forge/noarch/aiobotocore-2.12.1-pyhd8ed1ab_0.conda#045560daef58c75a759c2638fbdb5c6a +https://conda.anaconda.org/conda-forge/noarch/aiofiles-22.1.0-pyhd8ed1ab_0.tar.bz2#a88c206fdb78e34adb1c4081f5f838dd +https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8 +https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.11-hd590300_1.conda#0bb492cca54017ea314b809b1ee3a176 +https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda#2e4d6bc0b14e10f895fc6791a7d9b26a +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.10.0-pyha770c72_0.conda#ae2ad334f34040e147cc5824b450463b +https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.3.0-pyhd8ed1ab_0.conda#18850e65ca439066484607b26ed09ecd +https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda#405678b942f2481cecdb3e010f4925d9 +https://conda.anaconda.org/conda-forge/linux-64/pyrsistent-0.20.0-py310h2372a71_0.conda#e7f8dc8c62e136573c84116a5e743aed +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.17.3-pyhd8ed1ab_0.conda#723268a468177cd44568eb8f794e0d80 +https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda#98206ea9954216ee7540f0c773f2104d +https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3-pyhd8ed1ab_0.conda#d3076b483092a435832603243567bc31 +https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.4-py310hcc13569_0.conda#410f7e83992a591e492c25049a859254 +https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.1-pyhd8ed1ab_0.conda#2fcb582444635e2c402e8569bb94e039 +https://conda.anaconda.org/conda-forge/noarch/altair-5.2.0-pyhd8ed1ab_0.conda#2521e261fff0b285be099322cf557a7c +https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.10.0-pyhd8ed1ab_0.conda#2d52125a7fe49248ce5e883fed6c935a +https://conda.anaconda.org/conda-forge/noarch/boto3-1.34.51-pyhd8ed1ab_0.conda#bd19311f73611626b31afc608af438cd +https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda#3d081de3a6ea9f894bbb585e8e3a4dcb +https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda#8d652ea2ee8eaee02ed8dc820bc794aa +https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda#490730480d76cf9c8f8f2849719c6e2b +https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda#7b517e7a6f0790337906c055aa97ca49 +https://conda.anaconda.org/conda-forge/noarch/certifi-2024.2.2-pyhd8ed1ab_0.conda#0876280e409658fc6f9e75d035960333 +https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2#b21ed0883505ba1910994f1df031a428 +https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2#914d6646c4dbb1fd3ff539830a12fd71 +https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2#9f765cbfab6870c8435b9eefecd7a1f4 +https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2#b748fbf7060927a6e82df7cb5ee8f097 +https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.4-pyhd8ed1ab_0.conda#20f047662cf4fa8b97836111df87dbb4 +https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda#9f359af5a886fd6ca6b2b6ea02e58332 +https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.10.0-hd8ed1ab_0.conda#c063ddbb9908499fd4f20b31dc67065a +https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.2-pyhd8ed1ab_0.conda#af5fa2d2186003472e766a23c46cae04 +https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda#948d84721b578d426294e17a02e24cbb +https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.1-py310hc6cd4ac_0.conda#1ea80564b80390fa25da16e4211eb801 +https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364 +https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094 +https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda#81a3be0b2023e1ea8555781f0ad904a2 +https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2#b21613793fcc81d944c76c9f2864a7de +https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263 +https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda#629f3203c99b32e0988910c93e77f3b6 +https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761 +https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda#68f0738df502a14213624b288c60c9ad +https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.42-pyha770c72_0.conda#0bf64bf10eee21f46ac83c161917fa86 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.17.2-pyhd8ed1ab_0.conda#140a7f159396547e9799aa98f9f0742e +https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda#5f25798dcefd8252ce5f9dc494d5f571 +https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda#e16be50e378d8a4533b989035b196ab8 +https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2#6784285c7e55cb7212efabc79e4c2883 +https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda#e7df0fdd404616638df5ece6e69ba7af +https://conda.anaconda.org/conda-forge/noarch/ipython-8.22.2-pyh707e725_0.conda#f0abe827c8a7c6d91bccdf90cb1fbee3 +https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.2.0-pyhd8ed1ab_0.conda#a0bc3eec34b0fab84be6b2da94e98e20 +https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.7.2-py310hff52083_0.conda#cb92c27600d5716fd526a206aa43342c +https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2#c3788462a6fbddafdb413a9f9053e58d +https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h59595ed_1.conda#7fc9d3288d2420bb3637647621018000 +https://conda.anaconda.org/conda-forge/linux-64/pyzmq-25.1.2-py310h795f18f_0.conda#fa09f98f3acfd3f5de30bd2d27d5cb7f +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4-py310h2372a71_0.conda#48f39c24349d9ae5c8e8873c42fb6170 +https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.1-pyhd8ed1ab_0.conda#c03972cfce69ad913d520c652e5ed908 +https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda#6598c056f64dc8800d40add25e4e2c34 +https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.3-pyhd33586a_0.conda#e0deff12c601ce5cb7476f93718f3168 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py310h2fee648_0.conda#45846a970e71ac98fd327da5d40a0a2c +https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py310h2372a71_4.conda#68ee85860502d53c8cbfa0e4cef0f6cb +https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda#3afef1f55a1366b4d3b6a0d92e2235e4 +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_0.tar.bz2#642d35437078749ef23a5dca2c9bb1f3 +https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.8.19.20240311-pyhd8ed1ab_0.conda#bd1f4958ce0d78874e98f6b28e3da15e +https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda#b77d8c2313158e6e461ca0efb1c2c508 +https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2#4cb68948e0b8429534380243d063a27a +https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-2.4-py310hff52083_3.conda#08ec1463dbc5c806a32fc431874032ca +https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2#fed45fc5ea0813240707998abe49f520 +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_0.conda#0944dc65cb4a9b5b68522c3bb585d41c +https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda#166212fe82dad8735550030488a01d03 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.17.3-pyhd8ed1ab_0.conda#7a709748e93f0b2c33d6b5b676b6d9d0 +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.6.3-pyhd8ed1ab_1.conda#2ac0d00a0fb3f1a4c81c460ba56bb23b +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_0.conda#219b3833aa8ed91d47d1be6ca03f30be +https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda#3f144b2c34f8cb5a9abd9ed23a39c561 +https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda#332493000404d8411859539a5a630865 +https://conda.anaconda.org/conda-forge/noarch/setuptools-69.2.0-pyhd8ed1ab_0.conda#da214ecd521a720a9d521c68047682dc +https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda#daf5160ff9cde3a468556965329085b9 +https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda#0ed9d7c0e9afa7c025807a9a8136ea3e +https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 +https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda#afcd1b53bcac8844540358e33f33d28f +https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda#5cbee699846772cc939bef23a0d524ed +https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.19.1-pyhd8ed1ab_0.conda#4d3ceee3af4b0f9a1f48f57176bf8625 +https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.2-pyhd8ed1ab_0.conda#b019696a453a799ba5301a6fdbb23589 +https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda#15b51397e0fe8ea7d7da60d83eb76ebc +https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9 +https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.2-pyhd8ed1ab_0.conda#5ab3248dd05c543dc631276455ef6a54 +https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2#eb67e3cace64c66233e2d35949e20f92 +https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda#24fba5a9d161ad8103d4e84c0e1a3ed4 +https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda#9a19b94034dd3abb2b348c8b93388035 +https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyh41d4057_0.conda#ada5a17adcd10be4fc7e37e4166ba0e2 +https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.7.0-pyhd8ed1ab_0.conda#50ad31e07d706aae88b14a4ac9c73f23 +https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.10.0-pyhd8ed1ab_0.conda#016d56f5d81b9364d1da5f4895a2a9f8 +https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.4-pyhd8ed1ab_0.conda#91f93e1ebf6535be518715432d89fd92 +https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda#9669586875baeced8fc30c0826c3270e +https://conda.anaconda.org/conda-forge/noarch/json5-0.9.22-pyhd8ed1ab_0.conda#2fa51897d3aee2fe1636b98d9a6236dc +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda#7f4a9e3fcff3f6356ae99244a014da6a +https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda#a30144e4156cdbb236f99ebb49828f8b +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.24.0-pyhd8ed1ab_0.conda#327bfe1c99154f02259d29810bd70afc +https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda#3d85618e2c97ab896b5b5e298d32b5b3 +https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.1.4-pyhd8ed1ab_0.conda#5af1ffec7c245d1ab2bf0cec0148a4c3 +https://conda.anaconda.org/conda-forge/noarch/amazon-codewhisperer-jupyterlab-ext-2.0.1-pyhd8ed1ab_0.conda#ab9bb3e630d872e9d38c8c18a0cba7b4 +https://conda.anaconda.org/conda-forge/noarch/aws-embedded-metrics-3.2.0-pyhd8ed1ab_0.conda#e1c511655b6e9eb0265c9715c7fa410f +https://conda.anaconda.org/conda-forge/noarch/croniter-1.4.1-pyhd8ed1ab_0.conda#7a4568626f8d6e7c63dcb25d5501a967 +https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.6.0-pyh1a96a4e_0.conda#50ea2067ec92dfcc38b4f07992d7e235 +https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.1.12.2-ha770c72_0.conda#4f04ceee8d953367da7de726af233303 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.2-pyhd8ed1ab_0.conda#7a0bfebd69213722427cb61b077b4187 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.2-pyhd8ed1ab_0.conda#e14e35cc4a5c90694bb41c5317b576a8 +https://conda.anaconda.org/conda-forge/linux-64/pydantic-1.10.13-py310h2372a71_1.conda#cc014fc24717772959bf4fb4c7e66057 +https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.3-py310hc6cd4ac_0.conda#fb478fd83c001cbf8ab01c29b857262e +https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-1.4.49-py310h2372a71_1.conda#cdeaf46006791202a7597bf2a0e6ad9e +https://conda.anaconda.org/conda-forge/noarch/jupyter_scheduler-2.5.1-pyha770c72_0.conda#3d250834fde789b6cb96dc11a43d1df2 +https://conda.anaconda.org/conda-forge/noarch/jupyter-scheduler-2.5.1-hd8ed1ab_0.conda#bb6463ad5d244321f64a231ba9b6cf2a +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-jupyter-scheduler-3.0.7-pyhd8ed1ab_1.conda#ee635c11a576839138a93fc46e0f389b +https://conda.anaconda.org/conda-forge/linux-64/cryptography-42.0.5-py310h75e40e8_0.conda#47e6ea7109182e9e48f8c5839f1bded7 +https://conda.anaconda.org/conda-forge/noarch/tenacity-8.2.3-pyhd8ed1ab_0.conda#1482e77f87c6a702a7e05ef22c9b197b +https://conda.anaconda.org/conda-forge/noarch/pyathena-3.3.0-pyhd8ed1ab_0.conda#b96ed30b70ce32b4b88cf63cc8bc9e86 +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-4.9.4-py310hcfd0673_0.conda#d6df7beac08573177dd9a6a560d1d180 +https://conda.anaconda.org/conda-forge/noarch/asn1crypto-1.5.1-pyhd8ed1ab_0.tar.bz2#f3f2ab3ce28979a24d1a988ba211eb9b +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.0-pyhd8ed1ab_0.conda#4501c96a5e9f18239ae6e5944604d493 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-execution-0.1.2-pyhd8ed1ab_0.conda#a16fa2f5c791f94b459acd5c34ab8670 +https://conda.anaconda.org/conda-forge/noarch/sqlparse-0.4.4-pyhd8ed1ab_0.conda#2e2f31b3b1c866c29636377e14f8c4c6 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-magic-0.1.0-pyhd8ed1ab_0.conda#4fd1875033a6ca132d227f3587415fd5 +https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_0.conda#4c33109f652b5d8c995ab243436c9370 +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.3-pyhd8ed1ab_0.conda#6618ce22c81277d6ebaa45364c9d6b76 +https://conda.anaconda.org/conda-forge/linux-64/ansi2html-1.9.1-py310hff52083_0.conda#2213ea76fd340e7c848c1be0cbdfc579 +https://conda.anaconda.org/conda-forge/noarch/textwrap3-0.9.2-py_0.tar.bz2#1f84e74e9dbe2e5ae38c58496bffaca8 +https://conda.anaconda.org/conda-forge/noarch/ansiwrap-0.8.4-py_0.tar.bz2#f09557e2a7cbd2470a2ab6353000cebd +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.5.0-h27087fc_0.tar.bz2#a08150fd2298460cd1fcccf626305642 +https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.3-pyhd8ed1ab_0.conda#192278292e20704f663b9c766909d67b +https://conda.anaconda.org/conda-forge/linux-64/astroid-3.0.3-py310hff52083_0.conda#7d18b84331cda8271c9ed67d1ca05d47 +https://conda.anaconda.org/conda-forge/noarch/astunparse-1.6.3-pyhd8ed1ab_0.tar.bz2#000b6f68a0bfaba800ced7500c11780f +https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.43-hcad00b1_0.conda#8292dea9e022d9610a11fce5e0896ed8 +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.0-hf2295e7_0.conda#6c0d5a4f5292e54bf9b8dc14ee7df448 +https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-hd4edc92_1.tar.bz2#6c72ec3e660a51736913ef6ea68c454b +https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2#d9c69a24ad678ffce24c6543a0176b00 +https://conda.anaconda.org/conda-forge/noarch/autogluon.common-0.8.2-pyhd8ed1ab_4.conda#e24166dee3b1430877a324715caf8f5d +https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.0-py310hd41b1e2_0.conda#85d2aaa7af046528d339da1e813c3a9f +https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda#5cd86562580f274031ede6aa6aa24441 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_9.conda#61641e239f96eae2b8492dc7e755828c +https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.0.9-h166bdaf_9.conda#081aa22f4581c08e4372b0b6c2f8478e +https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.0.9-h166bdaf_9.conda#1f0a03af852a9659ed2bf08f2f1704fd +https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_9.conda#d47dee1856d9cb955b8076eeff304a5b +https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_9.conda#4601544b4982ba1861fa9b9c607b2c06 +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-15.1.0-py310h2372a71_0.conda#72637c58d36d9475fda24700c9796f19 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.49.0-py310h2372a71_0.conda#e61ae80fde506b70a88e5e06376d2068 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda#009981dd9cfcaa4dbfa25ffaed86bcae +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py310hd41b1e2_1.conda#b8d67603d43b23ce7e988a5d81a7ab79 +https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-2.1.5.1-hd590300_1.conda#323e90742f0f48fc22bea908735f55e6 +https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2#76bbff344f0134279f225174e9064c8f +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.18-h0b41bf4_0.conda#6aa9c9de5542ecb07fdda9ca626252d8 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.3.1-hd590300_0.conda#82bf6f63eb15ef719b556b63feec3a77 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.5.1-h8b53f26_1.conda#5b09e13d732dda1a2bc9adc711164f4d +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-haa2dc70_1.conda#980d8aca0bc23ca73fa8caa3e7c84c28 +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda#2c80dc38fface310c9bd81b17037fee5 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.15-h0b41bf4_0.conda#33277193f5b92bad9fdd230eb700929c +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.0-hfec8fc6_2.conda#5ce6a42505c6e9e6151c54c3ec8d68ea +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.5.0-py310h582fbeb_1.conda#cf62f6cff3536eafaaa0c740b0bf7465 +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda#b9a4dacf97241704529131a0dfc0494f +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.3-py310h62c0568_0.conda#4a7296c0273eb01dfbed728dd6a6725a +https://conda.anaconda.org/conda-forge/noarch/joblib-1.3.2-pyhd8ed1ab_0.conda#4da50d410f553db77e62ab62ffaa1abc +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.11.4-py310hb13e2d6_0.conda#f0063b2885bfae11324a00a693f88781 +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.3.0-pyhc1e730c_0.conda#698d2d2b621640bddb9191f132967c9f +https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.4.1.post1-py310h1fdf081_0.conda#2706ad1a5f6cbad8b57d4094889d1e33 +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2#3faab06a954c2a04039983f2c4a50d99 +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.2-pyhd8ed1ab_0.conda#2b8dfb969f984497f3f98409a9545776 +https://conda.anaconda.org/conda-forge/linux-64/autogluon.core-0.8.2-light_py310h2d11d36_6.conda#9de8e45568202a91466af4d849c7e919 +https://conda.anaconda.org/conda-forge/noarch/autogluon.features-0.8.2-pyhd8ed1ab_3.conda#c827eccfb0ddb1484d0e00f45242b8f8 +https://conda.anaconda.org/conda-forge/linux-64/chardet-5.2.0-py310hff52083_1.conda#a677136a83b823803d2f92045f885be2 +https://conda.anaconda.org/conda-forge/noarch/binaryornot-0.4.4-py_1.tar.bz2#a556fa60840fcb9dd739d186bfd252f7 +https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda#f3ad426304898027fc619827ff428eca +https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_1.conda#ba8aba332d8868897ce44ad74015a7fe +https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_0.conda#4b11845622b3c3178c0e989235b53975 +https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda#776a8dd9e824f77abac30e6ef43a8f7a +https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda#93a8e71256479c62074356ef6ebf501b +https://conda.anaconda.org/conda-forge/noarch/rich-13.7.1-pyhd8ed1ab_0.conda#ba445bf767ae6f0d959ff2b40c20912b +https://conda.anaconda.org/conda-forge/noarch/cookiecutter-2.6.0-pyhca7485f_0.conda#d6260b53b9db90017321af0b45cc00da +https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda#78745f157d56877a2c6e7b386f66f3e2 +https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.21.4-pyhd8ed1ab_0.conda#d47cf217a7bcc3a03dd1c6169c3f0f98 +https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py310h2372a71_0.conda#efdca5c3783dae00552f389bd7b56c3d +https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.0-hd590300_0.conda#71b89db63b5b504e7afc8ad901172e1e +https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.1-hc309b26_1.conda#cc09293a2c2b7fd77aff284f370c12c0 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-h4d4d85c_2.conda#9ca99452635fe03eb5fa937f5ae604b0 +https://conda.anaconda.org/conda-forge/linux-64/s2n-1.3.49-h06160fa_0.conda#1d78349eb26366ecc034a4afe70a8534 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.32-he9a53bd_1.conda#8a24e5820f4a0ffd2ed9c4722cd5d7ca +https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.7.11-h00aa349_4.conda#cb932dff7328ff620ce8059c9968b095 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-h4d4d85c_1.conda#eba092fc6de212a01de0065f38fe8bbb +https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.3-h28f7589_1.conda#97503d3e565004697f1651753aa95b9e +https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.17-h4d4d85c_1.conda#30f9df85ce23cd14faa9a4dfa50cca2b +https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.3.1-h2e3709c_4.conda#2cf21b1cbc1c096a28ffa2892257a2c1 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.9.3-hb447be9_1.conda#c520669eb0be9269a5f0d8ef62531882 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.14-hf3aad02_1.conda#a968ffa7e9fe0c257628033d393e512f +https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.21.0-hb942446_5.conda#07d92ed5403ad7b5c66ffd7d5b8f7e57 +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.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.2-h659d440_0.conda#cd95826dbd331ed1be26bdf401432844 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.27.0-hd590300_0.conda#f6afff0e9ee08d2f1b897881a4f38cdb +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.58.0-h47da74e_1.conda#700ac6ea6d53d5510591c4344d5c989a +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda#1f5a58e686b13bcfde88b93f547d23fe +https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.5.0-hca28451_0.conda#7144d5a828e2cae218e0e3c98d8a0aeb +https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.10.57-h85b1a90_19.conda#0605d3d60857fc07bd6a11e878fe0f08 +https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-he1b5a44_1004.tar.bz2#cddaf2c63ea4a5901cf09524c490ecdc +https://conda.anaconda.org/conda-forge/linux-64/glog-0.6.0-h6f12383_0.tar.bz2#b31f3565cb84435407594e548a2fb7b2 +https://conda.anaconda.org/conda-forge/linux-64/libabseil-20230125.3-cxx17_h59595ed_0.conda#d1db1b8be7c3a8983dcbbbfe4f0765de +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/re2-2023.03.02-h8c504da_0.conda#206f8fa808748f6e90599c3368a1114e +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.conda#68c34ec6149623be41a1933ab996a209 +https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.54.3-hb20ce57_0.conda#7af7c59ab24db007dfd82e0a3a343f66 +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.12.0-hac9eb74_1.conda#0dee716254497604762957076ac76540 +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.18.1-h8fd135c_2.conda#bbf65f7688512872f063810623b755dc +https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2#ede4266dc02e875fe1ea77b25dd43747 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda#318b08df404f9c9be5712aaa5a6f0bb0 +https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.10-h9fff704_0.conda#e6d228cd0bb74a51dd18f5bfce0b4115 +https://conda.anaconda.org/conda-forge/linux-64/orc-1.9.0-h2f23424_1.conda#9571eb3eb0f7fe8b59956a7786babbcd +https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.16-h0b41bf4_1.conda#28bfe2cb11357ccc5be21101a6b7ce86 +https://conda.anaconda.org/conda-forge/linux-64/rdma-core-28.9-h59595ed_1.conda#aeffb7c06b5f65e55e6c637408dc4100 +https://conda.anaconda.org/conda-forge/linux-64/ucx-1.14.1-h64cca9d_5.conda#39aa3b356d10d7e5add0c540945a0944 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-12.0.1-hb87d912_8_cpu.conda#3f3b11398fe79b578e3c44dd00a44e4a +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-12.0.1-py310h0576679_8_cpu.conda#27f55ccfd038d6665facb04a0aa572c5 +https://conda.anaconda.org/conda-forge/noarch/pyarrow-hotfix-0.6-pyhd8ed1ab_0.conda#ccc06e6ef2064ae129fab3286299abda +https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda#f08fb5c89edfc4aadee1c81d4cfb1fa1 +https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.4.1-py310h2372a71_0.conda#b631b889b0b4bc2fca7b8b977ca484b2 +https://conda.anaconda.org/conda-forge/noarch/datasets-2.18.0-pyhd8ed1ab_0.conda#3482c9b417757df305ff4e3a7e4b7c10 +https://conda.anaconda.org/conda-forge/noarch/responses-0.18.0-pyhd8ed1ab_0.tar.bz2#a10d30e613a2a1a78a89ceadf3832e7c +https://conda.anaconda.org/conda-forge/noarch/evaluate-0.4.1-pyhd8ed1ab_0.conda#ea228540526db4dde8ad8f2309bc1d40 +https://conda.anaconda.org/conda-forge/noarch/gdown-5.1.0-pyhd8ed1ab_0.conda#6f880647c0270648f710f334c60bc76c +https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.1.99-h180e1df_0.conda#056064bd3ef47439e3e78fac28449fbf +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.1.99-py310hebdb9f0_0.conda#b3a5908ac3912b26d6a8b77faebe6eca +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.1.99-h180e1df_0.conda#c67cc412366709c1c3225f19f8aed63b +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.1.99-hff52083_0.conda#578969452de13e4ad69edf18ee2b3d5a +https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d +https://conda.anaconda.org/conda-forge/linux-64/regex-2023.12.25-py310h2372a71_0.conda#4a9ba4e7af60356e63b38a6d419acad6 +https://conda.anaconda.org/conda-forge/noarch/sacremoses-0.0.53-pyhd8ed1ab_0.tar.bz2#76c3c384fe0941f1b08193736e8e277a +https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.2-py310hcb5633a_0.conda#a1e978544ef765ef9ac2f2320e43bacd +https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.13.3-py310he1f1126_0.conda#ea2281fe0bf70c1c83393565342a8a8c +https://conda.anaconda.org/conda-forge/noarch/transformers-4.31.0-pyhd8ed1ab_0.conda#8cccf394a00fbfef2f3d6028422ae5cc +https://conda.anaconda.org/conda-forge/noarch/nlpaug-1.1.11-pyhd8ed1ab_1.conda#4e231f0fa7db9388cf4c8539d623ac62 +https://conda.anaconda.org/conda-forge/noarch/nltk-3.8.1-pyhd8ed1ab_0.conda#518c769ca4273480a99be6e559a26192 +https://conda.anaconda.org/conda-forge/noarch/typish-1.9.3-pyhd8ed1ab_0.tar.bz2#81b3f3101aa2af117924d908a1b33c67 +https://conda.anaconda.org/conda-forge/noarch/nptyping-2.4.1-pyhd8ed1ab_0.tar.bz2#7929b4ae7565a66f0fab4b70cfb90594 +https://conda.anaconda.org/conda-forge/noarch/omegaconf-2.2.3-pyhd8ed1ab_0.conda#cebc9f0fc6eebdcc368bb30ba30f2fd5 +https://conda.anaconda.org/conda-forge/noarch/markdown-3.5.2-pyhd8ed1ab_0.conda#db7b48fa4eeb0c21b2f3f5b1f7d9ebcf +https://conda.anaconda.org/conda-forge/noarch/ordered-set-4.1.0-pyhd8ed1ab_0.tar.bz2#9a8714decb3967b290263817e876d8a9 +https://conda.anaconda.org/conda-forge/noarch/model-index-0.1.11-pyhd8ed1ab_0.conda#6aecca21351e44095ffd2901ee46337a +https://conda.anaconda.org/conda-forge/noarch/wheel-0.42.0-pyhd8ed1ab_0.conda#1cdea58981c5cbc17b51973bcaddcea7 +https://conda.anaconda.org/conda-forge/noarch/pip-23.3.2-pyhd8ed1ab_0.conda#8591c748f98dcc02253003533bc2e4b1 +https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2#4759805cce2d914c38472f70bf4d8bcb +https://conda.anaconda.org/conda-forge/noarch/openmim-0.3.7-pyhd8ed1ab_0.conda#e081b8fa91b884435725f0caa13866ff +https://conda.anaconda.org/conda-forge/linux-64/protobuf-4.21.12-py310heca2aa9_0.conda#90bb7e1b729c4b50272cf78be97ab912 +https://conda.anaconda.org/conda-forge/noarch/pytesseract-0.3.10-pyhd8ed1ab_0.tar.bz2#04f4becceb0c032c5dbdae6ad18bd95e +https://conda.anaconda.org/conda-forge/noarch/lightning-utilities-0.10.1-pyhd8ed1ab_0.conda#4132ed16f8074bc111d477c52508fda4 +https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.0.3-pyhd8ed1ab_0.conda#4e8849ba2fa06393b7ab5a50c6a4256c +https://conda.anaconda.org/conda-forge/noarch/pytorch-lightning-2.0.9-pyhd8ed1ab_0.conda#3e96ed529412338e38af9004e22267de +https://conda.anaconda.org/conda-forge/noarch/pytorch-metric-learning-1.7.3-pyhd8ed1ab_0.conda#139aa590e345e10f4572812a329806f4 +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.2.1-pyhd8ed1ab_0.conda#b325bfc4cff7d7f8a868f1f7ecc4ed16 +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.3-py310h2372a71_0.conda#21362970a6fea90ca507c253c20465f2 +https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 +https://conda.anaconda.org/conda-forge/noarch/partd-1.4.1-pyhd8ed1ab_0.conda#acf4b7c0bcd5fa3b0e05801c4d2accd6 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.3.0-pyhd8ed1ab_0.conda#b6c573c271bf4c062873d7f3df97c3ba +https://conda.anaconda.org/conda-forge/noarch/imageio-2.34.0-pyh4b66e23_0.conda#b8853659d596f967c661f544dd89ede7 +https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.4.1-py310h1f7b6fc_1.conda#be6f0382440ccbf9fb01bb19ab1f1fc0 +https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.5-h0f2a231_0.conda#009521b7ed97cca25f8f997f9e745976 +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.0.7-h0b41bf4_0.conda#49e8329110001f04923fe7e864990b0c +https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.13.2-hb4ffafa_0.conda#976aaf1afd331ed7346d649da5c5c1ee +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.1-h0b41bf4_3.conda#96f3b11872ef6fad973eac856cd2624f +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.2-h59595ed_1.conda#127b0be54c1c90760d7fe02ea7a56426 +https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda#418c6ca5929a611cbd69204907a83995 +https://conda.anaconda.org/conda-forge/linux-64/libavif-0.11.1-h8182462_2.conda#41c399ed4c439e37b844c24ab5621b5a +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-h59595ed_0.conda#fd486bffbf0d6841cf1456a8f2e3a995 +https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2023.8.12-py310hc929067_0.conda#61caf809753610c4c87d583765b1d478 +https://conda.anaconda.org/conda-forge/noarch/tifffile-2024.2.12-pyhd8ed1ab_0.conda#d5c8bef52be4e70c48b1400eec3eecc8 +https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.19.3-py310h769672d_2.tar.bz2#c0391107b0cd0010708d6969ed759e8b +https://conda.anaconda.org/conda-forge/noarch/seqeval-1.2.2-pyhd3deb0d_0.tar.bz2#d4436c8a8b9fb6d60fe4e7b9f097f9bb +https://conda.anaconda.org/conda-forge/noarch/cachetools-5.3.3-pyhd8ed1ab_0.conda#cd4c26c702a9bcdc70ff05b609ddacbe +https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.5.1-pyhd8ed1ab_0.conda#fb1a800972b072aa4d16450983c81418 +https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.3.0-pyhd8ed1ab_0.conda#26db749166cdca55e5ef1ffdc7767d0e +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda#b50aec2c744a5c493c09cce9e2e7533e +https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_0.tar.bz2#caabbeaa83928d0c3e3949261daa18eb +https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2#03bf410858b2cefc267316408a77c436 +https://conda.anaconda.org/conda-forge/noarch/google-auth-2.28.2-pyhca7485f_0.conda#f8879cf0e5b8f7761d01bce40ce7c089 +https://conda.anaconda.org/conda-forge/noarch/blinker-1.7.0-pyhd8ed1ab_0.conda#550da20b2c2e38be9cc44bb819fda5d5 +https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_1.conda#74f76d4868dbba5870f2cf1d9b12d8f3 +https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2#8f882b197fd9c4941a787926baea4868 +https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.4.0-pyhd8ed1ab_0.conda#a55b220de8970208f583e38639cfbecc +https://conda.anaconda.org/conda-forge/noarch/google-auth-oauthlib-1.0.0-pyhd8ed1ab_1.conda#569e62e95b01b53e4ec7d9abe83b7385 +https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.54.3-py310heca2aa9_0.conda#7c82ea96968976ee2eb66a52f2decd8e +https://conda.anaconda.org/conda-forge/linux-64/tensorboard-data-server-0.7.0-py310h75e40e8_1.conda#e562478facfa960813945204273ecac5 +https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.0.1-pyhd8ed1ab_0.conda#af8d825d93dbe6331ee6d61c69869ca0 +https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.12.3-pyhd8ed1ab_0.conda#429d39f86cef8d0859d639804ae67aaf +https://conda.anaconda.org/conda-forge/linux-64/torchvision-0.15.2-cpu_py310hb9e6163_1.conda#952305ae6b751a80284e8d4c9115ed4b +https://conda.anaconda.org/conda-forge/noarch/timm-0.9.16-pyhd8ed1ab_0.conda#bc15401d946adb3fbce34c4ba351dd20 +https://conda.anaconda.org/conda-forge/noarch/autogluon.multimodal-0.8.2-pyha770c72_5.conda#a8ca42e2b4ee0fd6dce729bc226dd0cc +https://conda.anaconda.org/conda-forge/noarch/plotly-5.19.0-pyhd8ed1ab_0.conda#669cd7065794633b9e64e6a9612ec700 +https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda#e7ba12deb7020dd080c6c70e7b6f6a3d +https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda#53fb86322bdb89496d7579fe3f02fd61 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda#0f69b688f52ff6da70bccb7ff7001d1d +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_1.conda#6185f640c43843e5ad6fd1c5372c3f80 +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/pixman-0.43.2-h59595ed_0.conda#71004cbf7924e19c02746ccde9fd7123 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda#b462a33c0be1421532f28bfe8f4a7514 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda#93ee23f12bc2e684548181256edd2cf6 +https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2#4b230e8381279d76131116660f5a241a +https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda#bce9f945da8ad2ae9b1d7165a64d0f87 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2#b4a4381d54784606820704f7b5f05a15 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.7-h8ee46fc_0.conda#49e482d882669206653b095f5206c05b +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda#82b6df12252e6f32402b96dacc656fec +https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2#06feff3d2634e3097ce2fe681474b534 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda#ed67c36f215b310412b2af935bf3e530 +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-h3faef2a_0.conda#f907bb958910dc404647326ca80c263e +https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h6b639ba_2.conda#ee8220db21db8094998005990418fe5b +https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h58526e2_1001.tar.bz2#8c54672728e8ec6aa6db90cf2806d220 +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.3.0-h3d44ed6_0.conda#5a6f6c00ef982a9bc83558d9ac8f64a0 +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.52.1-ha41ecd1_0.conda#5c0cc002bf4eaa56448b0729efd6e96c +https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h280cfa0_4.conda#410f86e58e880dcc7b0e910a8e89c05c +https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda#4d8df0b0db060d33c9a702ada998a8fe +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.3.1-hbf2b3c1_0.conda#4963f3f12db45a576f2b8fbe9a0b8569 +https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h74d50f4_7.conda#3453ac94a99ad9daf17e8a313d274567 +https://conda.anaconda.org/conda-forge/linux-64/gettext-0.21.1-h27087fc_0.tar.bz2#14947d8770185e5153fdd04d4673ed37 +https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.56.3-he3f83f7_1.conda#03bd1ddcc942867a19528877143b9852 +https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.7-h27087fc_0.conda#f204c8ba400ec475452737094fb81d52 +https://conda.anaconda.org/conda-forge/linux-64/graphviz-8.1.0-h28d9a01_0.conda#33628e0e3de7afd2c8172f76439894cb +https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.20.1-pyh22cad53_0.tar.bz2#196447bc6fd769c3eb2d51de1aa866a5 +https://conda.anaconda.org/conda-forge/linux-64/catboost-1.2.3-py310hff52083_2.conda#e063c808181593406d4d3d321ee7ffff +https://conda.anaconda.org/conda-forge/noarch/fastcore-1.5.29-pyhd8ed1ab_0.conda#155c898255baddd6b2cb95894791eeca +https://conda.anaconda.org/conda-forge/noarch/fastprogress-1.0.3-pyhd8ed1ab_0.tar.bz2#1690639d3647fde6edf4f00c8f87c263 +https://conda.anaconda.org/conda-forge/noarch/fastdownload-0.0.7-pyhd8ed1ab_0.conda#29c29999a420c2d28c3a46b3eadb9373 +https://conda.anaconda.org/conda-forge/linux-64/catalogue-2.0.10-py310hff52083_0.conda#a20390cd5f5fe4d8c5f6f2e7fa6c54cf +https://conda.anaconda.org/conda-forge/linux-64/cymem-2.0.8-py310hc6cd4ac_1.conda#8e4dada89998e0cb4f97b835dff6dc7e +https://conda.anaconda.org/conda-forge/noarch/langcodes-3.3.0-pyhd8ed1ab_0.tar.bz2#aacac9c3804912c38087d1c295708493 +https://conda.anaconda.org/conda-forge/linux-64/murmurhash-1.0.10-py310hc6cd4ac_1.conda#2b0c4b4532c601ece4537cc7f3558464 +https://conda.anaconda.org/conda-forge/noarch/smart_open-5.2.1-pyhd8ed1ab_0.tar.bz2#c7a838c38e38c82edde371a9054e6c92 +https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda#d08db09a552699ee9e7eec56b4eb3899 +https://conda.anaconda.org/conda-forge/noarch/typer-0.9.0-pyhd8ed1ab_0.conda#5030a13b2fe5e143d5956d4943d3018f +https://conda.anaconda.org/conda-forge/noarch/pathy-0.10.2-pyhd8ed1ab_0.conda#69d84b5c17aea4d7350f3536bcde7296 +https://conda.anaconda.org/conda-forge/linux-64/preshed-3.0.9-py310hc6cd4ac_1.conda#a2a27c2eafd1e280555ae954df088fc3 +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/srsly-2.4.8-py310hc6cd4ac_1.conda#7cd9d4be6f55ccb53cbd7125f2e6a0fb +https://conda.anaconda.org/conda-forge/linux-64/confection-0.1.4-py310h17c5347_0.conda#72b63825959fc040cab8ed0f12f2040e +https://conda.anaconda.org/conda-forge/linux-64/cython-blis-0.7.10-py310h1f7b6fc_2.conda#6a0165d9e76c443ed66d2e8b733aa133 +https://conda.anaconda.org/conda-forge/linux-64/wasabi-1.1.2-py310hff52083_0.conda#8ed9f04ed8e1373063cd03b9d5c86ce3 +https://conda.anaconda.org/conda-forge/linux-64/thinc-8.2.2-py310hcb52e73_0.conda#550b37537f05740f1c9a38d63d843b3c +https://conda.anaconda.org/conda-forge/noarch/cloudpathlib-0.16.0-pyhd8ed1ab_0.conda#8d75941f621306e58b7642394a8bad87 +https://conda.anaconda.org/conda-forge/noarch/weasel-0.3.4-pyhd8ed1ab_0.conda#a53c82e61a1173c887e84fc50842eec4 +https://conda.anaconda.org/conda-forge/linux-64/spacy-3.7.2-py310hcb52e73_0.conda#c966d5a09c130d0bcfce4126643ddc74 +https://conda.anaconda.org/conda-forge/noarch/fastai-2.7.14-pyhd8ed1ab_0.conda#9854ef355cc4bd1e2aac40998f721fed +https://conda.anaconda.org/conda-forge/linux-64/lightgbm-3.3.5-py310heca2aa9_0.conda#d2595ddab22cbca7409b28e3105afd0a +https://conda.anaconda.org/conda-forge/linux-64/libxgboost-1.7.6-cpu_h6728c87_6.conda#9183d0551aa5e5be36c670e701b287a3 +https://conda.anaconda.org/conda-forge/linux-64/py-xgboost-1.7.6-cpu_py310h78d450f_6.conda#dcc61476de611ac5673698495b607109 +https://conda.anaconda.org/conda-forge/linux-64/xgboost-1.7.6-cpu_py310h78d450f_6.conda#061a099093fd2a97ae506f65dc87baf2 +https://conda.anaconda.org/conda-forge/noarch/autogluon.tabular-0.8.2-pyha770c72_4.conda#17fad1cdb563ddad16ab0ba4c085bcb3 +https://conda.anaconda.org/conda-forge/noarch/gluonts-0.13.7-pyhd8ed1ab_0.conda#1684b578508d9918b2dcadd4c365c61a +https://conda.anaconda.org/conda-forge/linux-64/libllvm14-14.0.6-hcd5def8_4.conda#73301c133ded2bf71906aa2104edae8b +https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.42.0-py310h1b8f574_1.conda#e2a5e9f92629c8e4c8611883a35745b4 +https://conda.anaconda.org/conda-forge/linux-64/numba-0.59.0-py310h7dc5dd1_1.conda#966bc2bc095723310d746106e7c91791 +https://conda.anaconda.org/conda-forge/noarch/window-ops-0.0.15-pyhd8ed1ab_0.conda#b5ffd7d8295d4eda512216e23cf75a0f +https://conda.anaconda.org/conda-forge/noarch/mlforecast-0.7.3-pyhd8ed1ab_0.conda#7a2b34b4c9bff2545200b3746da70f11 +https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.6-pyhd8ed1ab_0.conda#a5b55d1cb110cdcedc748b5c3e16e687 +https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.1-py310h1f7b6fc_0.conda#d98c3749dd466513dd921f5818f4b001 +https://conda.anaconda.org/conda-forge/noarch/statsforecast-1.4.0-pyhd8ed1ab_0.conda#aa803f915587fe4306dfe0234215caa9 +https://conda.anaconda.org/conda-forge/linux-64/ujson-5.9.0-py310hc6cd4ac_0.conda#cab4b543b897dcf548edb3018fe45f9e +https://conda.anaconda.org/conda-forge/noarch/autogluon.timeseries-0.8.2-pyhd8ed1ab_4.conda#a64157275daf72a557fe4a9d843a9e1d +https://conda.anaconda.org/conda-forge/noarch/autogluon-0.8.2-pyhd8ed1ab_4.conda#7ff9ac51e09bd5991970a7df53b4bee6 +https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.11.1-pyhd8ed1ab_0.conda#29ff12b36df16bb66fdccd4206aaebfb +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.10-pyhd8ed1ab_0.conda#16b73b2c4ff7dda8bbecf88aadfe2027 +https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.10-pyhd8ed1ab_0.conda#521f489e3babeddeec638c2add7e9e64 +https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.2-pyhd8ed1ab_0.conda#67f86478c78637f68c1f3858973021f2 +https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.42-hd8ed1ab_0.conda#85a2189ecd2fcdd86e92b2d4ea8fe461 +https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_0.conda#7cf6f52a66f8e3cd9d8b6c231262dcab +https://conda.anaconda.org/conda-forge/noarch/notebook-7.1.1-pyhd8ed1ab_0.conda#f1a93f00b030dbede427001862c2854b +https://conda.anaconda.org/conda-forge/noarch/qtpy-2.4.1-pyhd8ed1ab_0.conda#7f391bd70d2abfb70f304ba5aa4e1261 +https://conda.anaconda.org/conda-forge/noarch/qtconsole-base-5.5.1-pyha770c72_0.conda#5528a3eda283b421055c89bface19a1c +https://conda.anaconda.org/conda-forge/noarch/jupyter-1.0.0-pyhd8ed1ab_10.conda#056b8cc3d9b03f54fc49e6d70d7dc359 +https://conda.anaconda.org/conda-forge/noarch/mock-5.1.0-pyhd8ed1ab_0.conda#926c67c0310094cf421ad13f7d3f38e5 +https://conda.anaconda.org/conda-forge/noarch/nose-1.3.7-py_1006.tar.bz2#382019d5f8e9362ef6f60a8d4e7bce8f +https://conda.anaconda.org/conda-forge/noarch/hdijupyterutils-0.21.0-pyh1a96a4e_0.conda#4db6232a9b934edc1c1e2f7b7d5a5d40 +https://conda.anaconda.org/conda-forge/noarch/autovizwidget-0.21.0-pyh1a96a4e_0.conda#7db56991c3c823ddb394ed85df9b54f5 +https://conda.anaconda.org/conda-forge/noarch/aws-glue-sessions-1.0.4-pyhd8ed1ab_0.conda#169c4c0a396d83164215f54024031ec8 +https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.1.2-py310hcb5633a_0.conda#6dd3d49f65ceb05dbd527a5b6301611b +https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda#4eccaeba205f0aed9ac3a9ea58568ca3 +https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda#17064acba08d3686f1135b5ec1b32b12 +https://conda.anaconda.org/conda-forge/linux-64/black-24.2.0-py310hff52083_0.conda#92bb721ab7aca4e9ac80d07ca0f3fe5c +https://conda.anaconda.org/conda-forge/noarch/boltons-23.1.1-pyhd8ed1ab_0.conda#56febe65315cc388a5d20adf2b39a74d +https://conda.anaconda.org/conda-forge/linux-64/fmt-10.2.1-h00ab1b0_0.conda#35ef8bc24bd34074ebae3c943d551728 +https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h516909a_1000.tar.bz2#bb14fcb13341b81d5eb386423b9d2bac +https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.7.2-h2aa1ff5_1.conda#3bf887827d1968275978361a6e405e4f +https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.28-hfc55251_0.conda#66d4f5d8256542d9ebfa341d690c5e03 +https://conda.anaconda.org/conda-forge/linux-64/reproc-14.2.4.post0-hd590300_1.conda#82ca53502dfd5a64a80dee76dae14685 +https://conda.anaconda.org/conda-forge/linux-64/reproc-cpp-14.2.4.post0-h59595ed_1.conda#715e1d720ec1a03715bebd237972fca5 +https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h59595ed_0.conda#965eaacd7c18eb8361fd12bb9e7a57d7 +https://conda.anaconda.org/conda-forge/linux-64/libmamba-1.5.7-had39da4_0.conda#9fff450354fbcd1510ef178730732241 +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.7-py310h39ff949_0.conda#58d84efb37d517c64f4e48f75fd6180d +https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-24.1.0-pyhd8ed1ab_0.conda#304dc78ad6e52e0fd663df1d484c1531 +https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.22.0-py310h1275a96_0.conda#54698ba13cd3494547b289cd86a2176a +https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.9.0-pyhd8ed1ab_0.conda#38253361efb303deead3eab39ae9269b +https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.2.0-pyh38be061_0.conda#8a3ae7f6318376aa08ea753367bb7dd6 +https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_0.conda#bbdb409974cd6cb30071b1d978302726 +https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_0.conda#bfdb7c5c6ad1077c82a69a8642c87aff +https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.0.2-py310hff52083_0.conda#4837faab0d3e665df57fef662148c6a3 +https://conda.anaconda.org/conda-forge/noarch/pluggy-1.4.0-pyhd8ed1ab_0.conda#139e9feb65187e916162917bb2484976 +https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py310h2372a71_0.conda#0adaac9a86d59adae2bc86b3cdef2df1 +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py310h2372a71_0.conda#dcf6d2535586c77b31425ed835610c54 +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.6-py310h2372a71_0.conda#50b7d9b39099cdbabf65bf27df73a793 +https://conda.anaconda.org/conda-forge/noarch/truststore-0.8.0-pyhd8ed1ab_0.conda#08316d001eca8854392cf2837828ea11 +https://conda.anaconda.org/conda-forge/linux-64/conda-23.11.0-py310hff52083_1.conda#d5278ac990c67d5ed51584998aa16c5a +https://conda.anaconda.org/conda-forge/noarch/contextlib2-21.6.0-pyhd8ed1ab_0.tar.bz2#5b26a831440be04c39531a8ce20f5d71 +https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.4-h7f98852_1002.tar.bz2#e728e874159b042d92b90238a3cb0dc2 +https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.27-h54b06d7_7.conda#dce22f70b4e5a407ce88f2be046f4ceb +https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.1.2-pyhd8ed1ab_0.tar.bz2#3c3de74912f11d2b590184f03c7cd09b +https://conda.anaconda.org/conda-forge/noarch/flask-3.0.2-pyhd8ed1ab_0.conda#7f88df670921cc31c309719e30c22021 +https://conda.anaconda.org/conda-forge/noarch/retrying-1.3.3-py_2.tar.bz2#a11f356d6f93b74b4a84e9501afd48b4 +https://conda.anaconda.org/conda-forge/noarch/dash-2.16.1-pyhd8ed1ab_0.conda#016bd4f61878a57f19c8cd744708a1f1 +https://conda.anaconda.org/conda-forge/noarch/marshmallow-3.21.1-pyhd8ed1ab_0.conda#ae303aa7dc100bc3bc01b5a3b7ca3567 +https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_0.conda#9e924b76b91908a17e28a19a0ab88687 +https://conda.anaconda.org/conda-forge/noarch/dataclasses-json-0.6.4-pyhd8ed1ab_0.conda#1190a6456351690603b2d64d1cbf5b4a +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d +https://conda.anaconda.org/conda-forge/noarch/deepmerge-1.1.1-pyhd8ed1ab_0.conda#d91c3d8ac3f2ab36ca4ea32ac42f731e +https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.7-py310hd41b1e2_0.conda#dc5263dcaa1347e5a456ead3537be27d +https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2#6d6552722448103793743dabfbda532d +https://conda.anaconda.org/conda-forge/noarch/tblib-2.0.0-pyhd8ed1ab_0.conda#f5580336fe091d46f9a2ea97da044550 +https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda#cf30c2c15b82aacb07f9c09e28ff2275 +https://conda.anaconda.org/conda-forge/noarch/distributed-2024.3.0-pyhd8ed1ab_0.conda#e4736ce580a5b289f7412f14ae8df42a +https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.5.0-py310h2372a71_3.conda#a29a0825809cd3a780097472be176618 +https://conda.anaconda.org/conda-forge/noarch/paramiko-3.4.0-pyhd8ed1ab_0.conda#a5e792523b028b06d7ce6e65a6cd4a33 +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.0.0-pyhd8ed1ab_0.conda#aec5f308cb9055e83c59afecd5fcb58a +https://conda.anaconda.org/conda-forge/noarch/docstring-to-markdown-0.15-pyhd8ed1ab_0.conda#a3a1e6af2926a3affcd6f2072871f551 +https://conda.anaconda.org/conda-forge/linux-64/libfaiss-1.7.4-hf47d654_0_cpu.conda#8fd132db65c8d51caea2ae7cde4b450c +https://conda.anaconda.org/conda-forge/linux-64/libfaiss-avx2-1.7.4-h1234567_0_cpu.conda#7eb943c067a63c4d8af526c2df9f2c1b +https://conda.anaconda.org/conda-forge/linux-64/faiss-1.7.4-py310h9ed8947_0_cpu.conda#99665c710087f7a964915b5ea0097465 +https://conda.anaconda.org/conda-forge/linux-64/faiss-cpu-1.7.4-h718b53a_0.conda#7a9e6f72c36ff5a5eeb61660fd6fdf8d +https://conda.anaconda.org/conda-forge/noarch/starlette-0.27.0-pyhd8ed1ab_0.conda#6facb6fc201d334257db8004439705d3 +https://conda.anaconda.org/conda-forge/noarch/fastapi-0.103.2-pyhd8ed1ab_0.conda#fb243b6796ab7d64b14e00c279620c04 +https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_0.tar.bz2#34fc335fc50eef0b5ea708f2b5f54e0c +https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.2.0-pyhd8ed1ab_0.conda#0cf7fef6aa123df28adb21a590065e3d +https://conda.anaconda.org/conda-forge/noarch/flake8-7.0.0-pyhd8ed1ab_0.conda#15bc58c860fc0a9abc26ec902df35252 +https://conda.anaconda.org/conda-forge/linux-64/flatbuffers-23.5.26-h59595ed_1.conda#913a1c6fd00b66f33392a129e835ceca +https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_0.conda#650a7807e689642dddd3590eb817beed +https://conda.anaconda.org/conda-forge/noarch/gast-0.4.0-pyh9f0ad1d_0.tar.bz2#42323c77b73462199fca93bc8ac9279d +https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2#62f26a3d1387acee31322208f0cfa3e0 +https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda#623b19f616f2ca0c261441067e18ae40 +https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.42-pyhd8ed1ab_0.conda#6bc8e496351bafd761c0922c3ebd989a +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.80.0-hde27a5a_0.conda#072608f7b71755993a294c3cdf909fa6 +https://conda.anaconda.org/conda-forge/linux-64/glib-2.80.0-hf2295e7_0.conda#56a4c2ed7723cf0847752f74dba1929f +https://conda.anaconda.org/conda-forge/noarch/google-pasta-0.2.0-pyh8c360ce_0.tar.bz2#26e27d7d3d7fe2336b543dd8e0f12cbf +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.22.9-h98fc4e7_0.conda#bcc7157b06fce7f5e055402a8135dfd8 +https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2#6e8cc2173440d77708196c5b93771680 +https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f +https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 +https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.22.9-h8e1006c_0.conda#614b81f8ed66c56b640faee7076ad14a +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_h4f84152_100.conda#d471a5c3abc984b662d9bae3bb7fd8a5 +https://conda.anaconda.org/conda-forge/linux-64/h5py-3.10.0-nompi_py310h65828d5_101.conda#44c185c5b133ad6d1d449839407aa863 +https://conda.anaconda.org/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_0.conda#1d25ed2b95b92b026aaa795eabec8d91 +https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.3.2-py310hcc13569_0.conda#1ad84020b1ab816d7ab3f3d0859faf40 +https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.4.14-cpu_py310h67d73b5_1.conda#392c325994aa96727edd0069a0620e31 +https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.3.0-pyhc1e730c_2.conda#7a94ac68b892daa9f17ae8a52b31ed81 +https://conda.anaconda.org/conda-forge/noarch/opt-einsum-3.3.0-hd8ed1ab_2.conda#ab262acd95cb73f3ed9426cc4204ac3a +https://conda.anaconda.org/conda-forge/noarch/jax-0.4.20-pyhd8ed1ab_0.conda#5abbd950bd427bc9d929e35ecbf814d1 +https://conda.anaconda.org/conda-forge/noarch/ply-3.11-py_1.tar.bz2#7205635cd71531943440fbfe3b6b5727 +https://conda.anaconda.org/conda-forge/noarch/jsonpath-ng-1.6.1-pyhd8ed1ab_0.conda#a698a41f5b52fe96049fd8c926ac3086 +https://conda.anaconda.org/conda-forge/linux-64/orjson-3.9.15-py310hcb5633a_0.conda#da1b180ccf1dce5d87d145ad2fc14e5a +https://conda.anaconda.org/conda-forge/noarch/langsmith-0.1.24-pyhd8ed1ab_0.conda#f3926a68f089b1a38c1f540944f9ee0a +https://conda.anaconda.org/conda-forge/noarch/langchain-core-0.1.31-pyhd8ed1ab_0.conda#3bfc5b4af9975e867d8e272fe5836d2f +https://conda.anaconda.org/conda-forge/noarch/langchain-community-0.0.28-pyhd8ed1ab_0.conda#d7e8f72c5e422b78b3d5f7a7aecbfae9 +https://conda.anaconda.org/conda-forge/noarch/langchain-0.1.9-pyhd8ed1ab_0.conda#2ad37682610ac2643b46e4cc0215f410 +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-magics-2.11.0-pyhd8ed1ab_0.conda#aee09f3966655f81d05fcfb5bae3612d +https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.5.2-py310h47bb294_0.conda#a83ae186d0a4b78c98b32781d7c15d48 +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-2.11.0-pyhd8ed1ab_0.conda#e8ab7975630aff4624d3ed1fa32ac552 +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-pyh5bfe37b_1.conda#11ca195fc8a16770661a387bcce27c36 +https://conda.anaconda.org/conda-forge/noarch/simpervisor-1.0.0-pyhd8ed1ab_0.conda#1f6df17b16d6295a484d59e844fef6ee +https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.1.2-pyhd8ed1ab_0.conda#3671520b52215a5a084de08003e6d8cd +https://conda.anaconda.org/conda-forge/noarch/nbdime-4.0.1-pyhd8ed1ab_0.conda#dd76d44a144499f8ff3254fd20cdb7a2 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-git-0.50.0-pyhd8ed1ab_1.conda#5020cacc18e3d5f62a81513f26ac2cac +https://conda.anaconda.org/conda-forge/noarch/keras-2.12.0-pyhd8ed1ab_0.conda#e6e18b33e8d62200099f2eed98a263b6 +https://conda.anaconda.org/conda-forge/noarch/keras-preprocessing-1.1.2-pyhd8ed1ab_0.tar.bz2#a79b00989a0d89791021902f37fe2f9e +https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2#a8832b479f93521a9e7b5b743803be51 +https://conda.anaconda.org/conda-forge/linux-64/libcap-2.69-h0f662aa_0.conda#25cb5999faa414e5ccb2c1388f62d3d5 +https://conda.anaconda.org/conda-forge/linux-64/libllvm15-15.0.7-hb3ce162_4.conda#8a35df3cbc0c8b12cc8af9473ae75eef +https://conda.anaconda.org/conda-forge/linux-64/libclang13-15.0.7-default_ha2b6cf4_4.conda#898e0dd993afbed0d871b60c2eb33b83 +https://conda.anaconda.org/conda-forge/linux-64/libclang-15.0.7-default_hb11cfb5_4.conda#c90f4cbb57839c98fef8f830e4b9972f +https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda#d4529f4dff3057982a7617c7ac58fde3 +https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda#ee48bf17cc83a00f59ca1494d5646869 +https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.48-h71f35ed_0.conda#4d18d86916705d352d5f4adfb7f0edd3 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.10.3-hd590300_0.conda#32d16ad533c59bb0a3c5ffaf16110829 +https://conda.anaconda.org/conda-forge/linux-64/libpq-15.6-h088ca5b_0.conda#99dca02fb74a8dfa3653c6673674f90c +https://conda.anaconda.org/conda-forge/linux-64/libsecret-0.18.8-h329b89f_2.tar.bz2#9d6698e3c9585a75156d86f7ef229093 +https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.4-h59595ed_0.conda#3f1017b4141e943d9bc8739237f749e8 +https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda#ef1910918dd895516a769ed36b5b3a4e +https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-255-h3516f8a_1.conda#3366af27f0b593544a6cd453c7932ac5 +https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.41-hd590300_0.conda#81f740407b45e3f9047b3174fa94eb9e +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.6.0-hd429924_1.conda#1dbcc04604fdf1e526e6d1b0b6938396 +https://conda.anaconda.org/conda-forge/linux-64/sip-6.7.12-py310hc6cd4ac_0.conda#68d5bfccaba2d89a7812098dd3966d9b +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.12.2-py310hc6cd4ac_5.conda#ef5333594a958b25912002886b82b253 +https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.33-hf1915f5_6.conda#80bf3b277c120dd294b51d404b931a75 +https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.33-hca2cd23_6.conda#e87530d1b12dd7f4e0f856dc07358d60 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda#da0ec11a6454ae19bff5b02ed881a2b1 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.98-h1d7d5a4_0.conda#54b56c2fdf973656b748e0378900ec13 +https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-16.1-hb77b528_5.conda#ac902ff3c1c6d750dd0dfc93a974ab74 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.0-hd590300_1.conda#9bfac7ccd94d54fd21a0501296d60424 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-h8ee46fc_1.conda#9d7bcddf49cbf727730af10e71022c73 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.0-h8ee46fc_1.conda#632413adcd8bc16b515cab87a2932913 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.9-hd590300_1.conda#e995b155d938b6779da6ace6c6b13816 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.1-h8ee46fc_1.conda#90108a432fb5c6150ccfee3f03388656 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xf86vidmodeproto-2.3.1-h7f98852_1002.tar.bz2#3ceea9668625c18f19530de98b15d5b0 +https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.8-hc47bfe8_16.conda#a8dd2dfcd570e3965c73be6c5e03e74f +https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.9-py310h04931ad_5.conda#f4fe7a6e3d7c78c9de048ea9dda21690 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.8.3-py310hff52083_0.conda#e91d183a307d7bd667003291f690cbb0 +https://conda.anaconda.org/conda-forge/linux-64/nodejs-18.19.0-hb753e55_0.conda#0b4a67051e3b3812818ccf2f4ee2fd4e +https://conda.anaconda.org/conda-forge/noarch/papermill-2.5.0-pyhd8ed1ab_0.conda#e6e69b90afd3d0597da8f1f74cc4bd58 +https://conda.anaconda.org/conda-forge/noarch/pox-0.3.4-pyhd8ed1ab_0.conda#d5502ff0ec33b87f7ab7bc373d0e42ff +https://conda.anaconda.org/conda-forge/noarch/ppft-1.7.6.8-pyhd8ed1ab_0.conda#a104e8b98901dc1bc0b916f7e18b5e39 +https://conda.anaconda.org/conda-forge/noarch/pathos-0.3.2-pyhd8ed1ab_1.conda#22ed208c1b54e7c2ec6616665fba6b0f +https://conda.anaconda.org/conda-forge/noarch/pure-sasl-0.6.2-pyhd8ed1ab_0.tar.bz2#ac695eecf21ab48093bc33fd60b4102d +https://conda.anaconda.org/conda-forge/linux-64/py-xgboost-cpu-1.7.6-py310h78d450f_6.conda#6c53cd648ba083e1bc7ea5dac8ec1e2c +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_0.conda#7e23a61a7fbaedfef6eb0e1ac775c8e5 +https://conda.anaconda.org/conda-forge/linux-64/thrift-0.19.0-py310hc6cd4ac_1.conda#2e0bde59a8aa215c7402c181c20c9605 +https://conda.anaconda.org/conda-forge/noarch/thrift_sasl-0.4.3-pyhd8ed1ab_2.tar.bz2#0340a97c4990a5bb5ecf1a27fef9f9c3 +https://conda.anaconda.org/conda-forge/noarch/pyhive-0.7.0-pyhd8ed1ab_0.conda#a39884e69ebf0c6454a1f8bac6f8361b +https://conda.anaconda.org/conda-forge/linux-64/pykrb5-0.5.1-py310h98feede_1.conda#0329fda0ebbccee7b3e9dbf4a377d0ce +https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.4-pyha770c72_0.conda#37c47ea93ef00dd80d880fc4ba21256a +https://conda.anaconda.org/conda-forge/noarch/pylint-3.0.4-pyhd8ed1ab_0.conda#d536ee47166d8984c6acd8114ac26cf1 +https://conda.anaconda.org/conda-forge/linux-64/pyspnego-0.9.1-py310h2372a71_2.conda#0a99339b277686c7d824abf9de396901 +https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-24.3.7-pyh59ac667_0.conda#24c1a37849fcd4c74923a38b029b208f +https://conda.anaconda.org/conda-forge/linux-64/python-gssapi-1.8.3-py310h98feede_0.conda#a5ea028f63386c53a2b8ff4d09065259 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-jsonrpc-1.1.2-pyhd8ed1ab_0.conda#ff30dbdb341a54947c4fa183900380b7 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-base-1.10.1-pyhd8ed1ab_0.conda#1371f9394b20fd1fe7419a2aa9b38888 +https://conda.anaconda.org/conda-forge/noarch/pytoolconfig-1.2.5-pyhd8ed1ab_0.conda#2d6bdf5a69cfcd1fcc7f2b900cb4082f +https://conda.anaconda.org/conda-forge/noarch/rope-1.12.0-pyhd8ed1ab_0.conda#5b17bee6351fbe4ae28da178866b2c73 +https://conda.anaconda.org/conda-forge/noarch/whatthepatch-1.0.5-pyhd8ed1ab_0.conda#e62ea65e1979c18c4c9034567e7105c5 +https://conda.anaconda.org/conda-forge/noarch/yapf-0.40.1-pyhd8ed1ab_0.conda#f269942e802d5e148632143d4c37acc9 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-1.10.1-pyhd8ed1ab_0.conda#15b849d7f03b7580a88a3f887db5ad40 +https://conda.anaconda.org/conda-forge/noarch/requests-kerberos-0.14.0-pyh707e725_1.conda#411293bff0dc86f9f9bc0c0e1f227623 +https://conda.anaconda.org/conda-forge/linux-64/ripgrep-14.1.0-he8a937b_0.conda#5a476f7033a8a1b9175626b5ebf86d1d +https://conda.anaconda.org/conda-forge/linux-64/sagemaker-code-editor-1.0.0-hcb28a07_0.conda#f53005657267d6b1233c2852fcb84707 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-headless-execution-driver-0.0.12-pyhd8ed1ab_0.conda#fe8919032eb413e76a7802f013a536ee +https://conda.anaconda.org/conda-forge/linux-64/y-py-0.6.2-py310hcb5633a_0.conda#892e912e08ba834aa77ff25f983a4e9e +https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.8.4-pyhd8ed1ab_0.conda#464806d1a3b2c6a88102844c12934038 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-common-0.1.12-pyhd8ed1ab_0.conda#5e9db875cf08e9773aba4176e5c0edbb +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-emr-extension-0.1.9-pyhd8ed1ab_0.conda#589f97989a6db8b2f21a53881fdd1d97 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-0.2.0-pyhd8ed1ab_0.conda#9331340b5a844f5ac2c74eda353aa23e +https://conda.anaconda.org/conda-forge/noarch/sagemaker-kernel-wrapper-0.0.2-pyhd8ed1ab_0.conda#99480997ca2429b75169c896cc988cdb +https://conda.anaconda.org/conda-forge/noarch/schema-0.7.5-pyhd8ed1ab_1.conda#750d2ce4311d1502b51ad814407f043d +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.212.0-pyhd8ed1ab_0.conda#eb07d50e30f7b423929f9081118d3979 +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.0.21-pyhd8ed1ab_0.conda#fa0e9b0ca6c3e96d350711b6dbddaeb6 +https://conda.anaconda.org/conda-forge/linux-64/sasl-0.3.1-py310hd8f1fbe_2.tar.bz2#9b15d1759c99ad57ae43080cfca56d73 +https://conda.anaconda.org/conda-forge/linux-64/supervisor-4.2.5-py310hff52083_2.conda#7fe7fa4d80a99dc44ba15ef3e82707af +https://conda.anaconda.org/conda-forge/noarch/termcolor-2.4.0-pyhd8ed1ab_0.conda#a5033708ad9283907c3b1bc1f90d0d0d +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-base-2.12.1-cpu_py310h91b7bb3_1.conda#3133c1f0d7fba203c6af92843b7a6b8a +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-estimator-2.12.1-cpu_py310haacee6a_1.conda#23ed9579748a885ae9e52ae809ccae6a +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-2.12.1-cpu_py310hd1aba9c_1.conda#79f37d0e1a7badce42c40f869ac4ce3a +https://conda.anaconda.org/conda-forge/linux-64/uvicorn-0.28.0-py310hff52083_0.conda#b9bc890a3389cf5b42a0a5428719cdd0 diff --git a/build_artifacts/v1/v1.6/v1.6.0/dirs/etc/code-editor/code_editor_machine_settings.json b/build_artifacts/v1/v1.6/v1.6.0/dirs/etc/code-editor/code_editor_machine_settings.json new file mode 100644 index 00000000..a391da92 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.0/dirs/etc/code-editor/code_editor_machine_settings.json @@ -0,0 +1,4 @@ +{ + "python.terminal.activateEnvironment": false, + "python.defaultInterpreterPath": "/opt/conda/bin/python" +} \ No newline at end of file diff --git a/build_artifacts/v1/v1.6/v1.6.0/dirs/etc/code-editor/extensions.txt b/build_artifacts/v1/v1.6/v1.6.0/dirs/etc/code-editor/extensions.txt new file mode 100644 index 00000000..ee18444b --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.0/dirs/etc/code-editor/extensions.txt @@ -0,0 +1,3 @@ +https://open-vsx.org/api/ms-toolsai/jupyter/2023.9.100/file/ms-toolsai.jupyter-2023.9.100.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/1.99.0/file/amazonwebservices.aws-toolkit-vscode-1.99.0.vsix \ No newline at end of file diff --git a/build_artifacts/v1/v1.6/v1.6.0/dirs/etc/conda/.condarc b/build_artifacts/v1/v1.6/v1.6.0/dirs/etc/conda/.condarc new file mode 100644 index 00000000..c3616df5 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.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/v1/v1.6/v1.6.0/dirs/etc/jupyter/jupyter_server_config.py b/build_artifacts/v1/v1.6/v1.6.0/dirs/etc/jupyter/jupyter_server_config.py new file mode 100644 index 00000000..e05997f2 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.0/dirs/etc/jupyter/jupyter_server_config.py @@ -0,0 +1,16 @@ +# 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 diff --git a/build_artifacts/v1/v1.6/v1.6.0/dirs/etc/supervisor/conf.d/supervisord-code-editor.conf b/build_artifacts/v1/v1.6/v1.6.0/dirs/etc/supervisor/conf.d/supervisord-code-editor.conf new file mode 100644 index 00000000..cac5669b --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.0/dirs/etc/supervisor/conf.d/supervisord-code-editor.conf @@ -0,0 +1,11 @@ +[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 +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/v1/v1.6/v1.6.0/dirs/etc/supervisor/conf.d/supervisord-common.conf b/build_artifacts/v1/v1.6/v1.6.0/dirs/etc/supervisor/conf.d/supervisord-common.conf new file mode 100644 index 00000000..27820d4c --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.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/v1/v1.6/v1.6.0/dirs/etc/supervisor/conf.d/supervisord-jupyter-lab.conf b/build_artifacts/v1/v1.6/v1.6.0/dirs/etc/supervisor/conf.d/supervisord-jupyter-lab.conf new file mode 100644 index 00000000..5694ac11 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.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/v1/v1.6/v1.6.0/dirs/etc/supervisor/conf.d/supervisord.conf b/build_artifacts/v1/v1.6/v1.6.0/dirs/etc/supervisor/conf.d/supervisord.conf new file mode 100644 index 00000000..686f4a5c --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.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/v1/v1.6/v1.6.0/dirs/usr/local/bin/entrypoint-code-editor b/build_artifacts/v1/v1.6/v1.6.0/dirs/usr/local/bin/entrypoint-code-editor new file mode 100755 index 00000000..677c9803 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.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 \ No newline at end of file diff --git a/build_artifacts/v1/v1.6/v1.6.0/dirs/usr/local/bin/entrypoint-jupyter-server b/build_artifacts/v1/v1.6/v1.6.0/dirs/usr/local/bin/entrypoint-jupyter-server new file mode 100755 index 00000000..ceda89d0 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.0/dirs/usr/local/bin/entrypoint-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)" + +# 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:]') + +# 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/v1/v1.6/v1.6.0/dirs/usr/local/bin/restart-jupyter-server b/build_artifacts/v1/v1.6/v1.6.0/dirs/usr/local/bin/restart-jupyter-server new file mode 100755 index 00000000..6f2af98d --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.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/v1/v1.6/v1.6.0/dirs/usr/local/bin/start-code-editor b/build_artifacts/v1/v1.6/v1.6.0/dirs/usr/local/bin/start-code-editor new file mode 100755 index 00000000..bc97106c --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.0/dirs/usr/local/bin/start-code-editor @@ -0,0 +1,25 @@ +#!/bin/bash +set -e + +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. 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 /opt/amazon/sagemaker/sagemaker-code-editor-server-data \ + --extensions-dir /opt/amazon/sagemaker/sagemaker-code-editor-server-data/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/v1/v1.6/v1.6.0/dirs/usr/local/bin/start-jupyter-server b/build_artifacts/v1/v1.6/v1.6.0/dirs/usr/local/bin/start-jupyter-server new file mode 100755 index 00000000..377a86d4 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.0/dirs/usr/local/bin/start-jupyter-server @@ -0,0 +1,35 @@ +#!/bin/bash +set -e + +eval "$(micromamba shell hook --shell=bash)" + +# Activate conda environment 'base', which is the default environment for Cosmos +micromamba activate base + +# Start Jupyter server in rtc mode for shared spaces +if [ -n "$SAGEMAKER_APP_TYPE_LOWERCASE" ] && [ "$SAGEMAKER_SPACE_TYPE_LOWERCASE" == "shared" ]; then + # 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/v1/v1.6/v1.6.0/gpu.additional_packages_env.in b/build_artifacts/v1/v1.6/v1.6.0/gpu.additional_packages_env.in new file mode 100644 index 00000000..d84fe408 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.0/gpu.additional_packages_env.in @@ -0,0 +1,3 @@ +conda-forge::sagemaker-code-editor[version='>=1.0.0'] +conda-forge::amazon_sagemaker_sql_editor[version='>=0.1.0,<2'] +conda-forge::amazon-sagemaker-sql-magic[version='>=0.1.0,<2'] diff --git a/build_artifacts/v1/v1.6/v1.6.0/gpu.arg_based_env.in b/build_artifacts/v1/v1.6/v1.6.0/gpu.arg_based_env.in new file mode 100644 index 00000000..51cba0a9 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.0/gpu.arg_based_env.in @@ -0,0 +1 @@ +conda-forge::cudatoolkit=$CUDA_MAJOR_MINOR_VERSION diff --git a/build_artifacts/v1/v1.6/v1.6.0/gpu.env.in b/build_artifacts/v1/v1.6/v1.6.0/gpu.env.in new file mode 100644 index 00000000..ed7b3746 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.0/gpu.env.in @@ -0,0 +1,51 @@ +# This file is auto-generated. +conda-forge::sagemaker-code-editor +conda-forge::amazon_sagemaker_sql_editor +conda-forge::amazon-sagemaker-sql-magic +conda-forge::langchain[version='>=0.1.9,<1.0.0'] +conda-forge::fastapi[version='>=0.103.2,<1.0.0'] +conda-forge::uvicorn[version='>=0.27.1,<1.0.0'] +conda-forge::pytorch-gpu[version='>=2.0.0,<3.0.0'] +conda-forge::tensorflow[version='>=2.12.1,<3.0.0'] +conda-forge::python[version='>=3.10.13,<3.11.0'] +conda-forge::pip[version='>=23.3.2,<24.0.0'] +conda-forge::torchvision[version='>=0.15.2,<1.0.0'] +conda-forge::numpy[version='>=1.26.4,<2.0.0'] +conda-forge::pandas[version='>=2.1.4,<3.0.0'] +conda-forge::scikit-learn[version='>=1.4.1.post1,<2.0.0'] +conda-forge::jinja2[version='>=3.1.3,<4.0.0'] +conda-forge::matplotlib[version='>=3.8.3,<4.0.0'] +conda-forge::sagemaker-headless-execution-driver[version='>=0.0.12,<1.0.0'] +conda-forge::ipython[version='>=8.21.0,<9.0.0'] +conda-forge::scipy[version='>=1.11.4,<2.0.0'] +conda-forge::keras[version='>=2.12.0,<3.0.0'] +conda-forge::py-xgboost-gpu[version='>=1.7.6,<2.0.0'] +conda-forge::jupyterlab[version='>=4.1.2,<5.0.0'] +conda-forge::ipywidgets[version='>=8.1.2,<9.0.0'] +conda-forge::conda[version='>=23.11.0,<24.0.0'] +conda-forge::boto3[version='>=1.28.64,<2.0.0'] +conda-forge::sagemaker-python-sdk[version='>=2.198.1,<3.0.0'] +conda-forge::supervisor[version='>=4.2.5,<5.0.0'] +conda-forge::autogluon[version='>=0.8.2,<1.0.0'] +conda-forge::aws-glue-sessions[version='>=1.0.4,<2.0.0'] +conda-forge::sagemaker-kernel-wrapper[version='>=0.0.2,<1.0.0'] +conda-forge::jupyter-ai[version='>=2.9.1,<3.0.0'] +conda-forge::jupyter-scheduler[version='>=2.5.1,<3.0.0'] +conda-forge::nodejs[version='>=18.18.2,<19.0.0'] +conda-forge::jupyter-lsp[version='>=2.2.3,<3.0.0'] +conda-forge::jupyterlab-lsp[version='>=5.0.3,<6.0.0'] +conda-forge::python-lsp-server[version='>=1.10.0,<2.0.0'] +conda-forge::notebook[version='>=7.1.1,<8.0.0'] +conda-forge::altair[version='>=5.2.0,<6.0.0'] +conda-forge::sagemaker-studio-analytics-extension[version='>=0.0.21,<1.0.0'] +conda-forge::jupyter-dash[version='>=0.4.2,<1.0.0'] +conda-forge::sagemaker-jupyterlab-extension[version='>=0.2.0,<1.0.0'] +conda-forge::sagemaker-jupyterlab-emr-extension[version='>=0.1.9,<1.0.0'] +conda-forge::amazon-sagemaker-jupyter-scheduler[version='>=3.0.7,<4.0.0'] +conda-forge::jupyter-server-proxy[version='>=4.1.0,<5.0.0'] +conda-forge::amazon-codewhisperer-jupyterlab-ext[version='>=2.0.1,<3.0.0'] +conda-forge::jupyterlab-git[version='>=0.50.0,<1.0.0'] +conda-forge::sasl[version='>=0.3.1,<1.0.0'] +conda-forge::thrift_sasl[version='>=0.4.3,<1.0.0'] +conda-forge::pyhive[version='>=0.7.0,<1.0.0'] +conda-forge::python-gssapi[version='>=1.8.3,<2.0.0'] diff --git a/build_artifacts/v1/v1.6/v1.6.0/gpu.env.out b/build_artifacts/v1/v1.6/v1.6.0/gpu.env.out new file mode 100644 index 00000000..b9aba45c --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.0/gpu.env.out @@ -0,0 +1,671 @@ +# 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/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_5.conda#d4ff227c46917d3b4565302a2bbb276b +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda#f36c115f1ee199da648e0597ec2047ad +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_5.conda#f6f6600d18a4047b54f803cf708b868a +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.5-hfc55251_0.conda#04b88013080254850d6c01ed54810589 +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-17.0.6-h4dfa4b3_0.conda#c1665f9c1c9f6c93d8b4e492a6a39056 +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#562b26ba2e19059551a811e72ab7f793 +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/bzip2-1.0.8-hd590300_5.conda#69b8b6202a07720f448be700e300ccf4 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda#7aca3059a1729aa76c597603f10b0dd3 +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3 +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda#30fd6e37fe21f86f4bd26d6ee73eeec7 +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.45.2-h2797004_0.conda#866983a220e27a80cb75e85cb30466a1 +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.4-h59595ed_2.conda#7dbaa197d7ba6032caf7ae7f32c1efa0 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.2.2-hbcca054_0.conda#2f4327a1cbe7f022401b236e915a5fef +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.2.1-hd590300_0.conda#51a753e64a3027bd7e23a189b1f6e91e +https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4 +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-2024a-h0c530f3_0.conda#161081fc7cec0bfda0d86d7cb595f8d8 +https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0 +https://conda.anaconda.org/conda-forge/linux-64/python-3.10.13-hd12c33a_1_cpython.conda#ed38140af93f81319ebc472fbcf16cca +https://conda.anaconda.org/conda-forge/noarch/absl-py-2.1.0-pyhd8ed1ab_0.conda#035d1d58677c13ec93122d9eb6b8803b +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_5.conda#7a6bd7a12a4bd359e2afe6c0fa1acace +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_5.conda#e73e9cfd1191783392131e6238bdb3e9 +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.25-pthreads_h413a1c8_0.conda#d172b34a443b95f86089e8229ddc9a17 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-20_linux64_openblas.conda#2b7bb4f7562c8cf334fc2e20c2d28abc +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-20_linux64_openblas.conda#36d486d72ab64ffea932329a1d3729a3 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-20_linux64_openblas.conda#6fabc51f5e647d09cc010c40061557e0 +https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.10-4_cp310.conda#26322ec5d7712c3ded99dd656142b8ce +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py310hb13e2d6_0.conda#6593de64c935768b6bad3e19b3e978be +https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda#79002079284aa895f883c6b7f3f88fd6 +https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.8-py310h2372a71_0.conda#bd19b3096442ea342c4a5208379660b1 +https://conda.anaconda.org/conda-forge/linux-64/cudatoolkit-11.8.0-h4ba93d1_13.conda#eb43f5f1f16e2fad2eba22219c3e499b +https://conda.anaconda.org/conda-forge/noarch/cuda-version-11.8-h70ddcb2_3.conda#670f0e1593b8c1d84f57ad5fe5256799 +https://conda.anaconda.org/conda-forge/linux-64/cudnn-8.9.7.29-hbc23b4c_3.conda#4a2d5fab2871d95544de4e1752948d0f +https://conda.anaconda.org/conda-forge/noarch/filelock-3.13.1-pyhd8ed1ab_0.conda#0c1729b74a8152fde6a38ba0a2ab9f45 +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py310h2372a71_0.conda#f6703fa0214a00bf49d1bef6dc7672d0 +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.3-pyhd8ed1ab_0.conda#e7d8df6509ba635247ff9aea31134262 +https://conda.anaconda.org/conda-forge/linux-64/libmagma-2.7.1-hc72dce7_6.conda#afd44491bd564d8dd6cda5d9aecaa452 +https://conda.anaconda.org/conda-forge/linux-64/libmagma_sparse-2.7.1-h8354cda_6.conda#5e835e8d48283880ea6ef11920c7fb14 +https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-3.21.12-hfc55251_2.conda#e3a7d4ba09b8dc939b98fef55f539220 +https://conda.anaconda.org/conda-forge/linux-64/magma-2.7.1-ha770c72_6.conda#f8ffd335f311e9749428727752e815bb +https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda#cc47e1facc155f91abd89b11e48e72ff +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda#d66573916ffcf376178462f1b61c941e +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.5-h232c23b_0.conda#c442ebfda7a475f5e78f1c8e45f1e919 +https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.9.3-default_h554bfaf_1009.conda#f36ddc11ca46958197a45effdd286e45 +https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.11.0-h00ab1b0_1.conda#4531d2927578e7e254ff3bcf6457518c +https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.2.1-h84fe81f_16997.conda#a7ce56d5757f5b57e7daabe703ade5bb +https://conda.anaconda.org/conda-forge/linux-64/nccl-2.20.5.1-h6103f9b_0.conda#bedb0b33c5e3e6fbd4dce4f6f07fea72 +https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda#425fce3b531bed6ec3c74fab3e5f0a1c +https://conda.anaconda.org/conda-forge/linux-64/sleef-3.5.1-h9b69904_2.tar.bz2#6e016cf4c525d04a7bd038cee53ad3fd +https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-h59595ed_1.conda#e358c7c5f6824c272b5034b3816438a7 +https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h9458935_0.conda#4c28f3210b30250037a4a627eeee9e0f +https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-hfe3b2da_0.conda#289c71e83dc0daa7d4c81f04180778ca +https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.2-py310h3ec546c_1.tar.bz2#73f6fa50c32ddd985cf5fba7b890a75c +https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_0.conda#dbf6e2d89137da32fa6670f3bffc024e +https://conda.anaconda.org/conda-forge/noarch/sympy-1.12-pypyh9d50eac_103.conda#2f7d6347d7acf6edf1ac7f2189f44c8f +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.5.0-pyha770c72_0.conda#43e7d9e50261fb11deb76e17d8431aac +https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.0.0-cuda112py310he33e0d6_200.conda#87729716665c9fa180d7e42fde5c53ab +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.1-py310h2372a71_1.conda#bb010e368de4940771368bc3dc4c63e7 +https://conda.anaconda.org/conda-forge/noarch/accelerate-0.21.0-pyhd8ed1ab_0.conda#172fa1bba08cd6b431a1739090ab0ffc +https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.1-py310h2372a71_0.conda#f20cd4d9c1f4a8377d0818c819918bbb +https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2#d1e1eb7e21a9e2c74279d87dafb68156 +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.5.0-hd8ed1ab_0.conda#b3c594fde1a80a1fc3eb9cc4a5dfe392 +https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda#3ce482ec3066e6d809dbbb1d1679f215 +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.0.5-py310h2372a71_0.conda#d4c91d19e4f2f18b64753ac660edad79 +https://conda.anaconda.org/conda-forge/noarch/idna-3.6-pyhd8ed1ab_0.conda#1a76f09108576397c41c0b0c5bd84134 +https://conda.anaconda.org/conda-forge/linux-64/yarl-1.9.4-py310h2372a71_0.conda#4ad35c8f6a64a6ab708780dad603aef4 +https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.9.3-py310h2372a71_0.conda#7125fe11f08cdc41de9734dfb2ffd35b +https://conda.anaconda.org/conda-forge/noarch/aioitertools-0.11.0-pyhd8ed1ab_0.tar.bz2#59c40397276a286241c65faec5e1be3c +https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_0.tar.bz2#2cfa3e1cf3fb51bb9b17acc5b5e9ea11 +https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda#2cf4264fffb9e6eff6031c5b6884d61c +https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.0.9-py310hd8f1fbe_9.conda#e2047ad2af52c01845f58b580c6cbd5c +https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025 +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.18-pyhd8ed1ab_0.conda#bf61cfd2a7f212efba378167a07d4a6a +https://conda.anaconda.org/conda-forge/noarch/botocore-1.34.51-pyge310_1234567_0.conda#f8980578a765dd28417953dddfefe5bc +https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py310h2372a71_0.conda#d9dc9c45bdc2b38403e6b388581e92f0 +https://conda.anaconda.org/conda-forge/noarch/aiobotocore-2.12.1-pyhd8ed1ab_0.conda#045560daef58c75a759c2638fbdb5c6a +https://conda.anaconda.org/conda-forge/noarch/aiofiles-22.1.0-pyhd8ed1ab_0.tar.bz2#a88c206fdb78e34adb1c4081f5f838dd +https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8 +https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.11-hd590300_1.conda#0bb492cca54017ea314b809b1ee3a176 +https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda#2e4d6bc0b14e10f895fc6791a7d9b26a +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.10.0-pyha770c72_0.conda#ae2ad334f34040e147cc5824b450463b +https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.3.0-pyhd8ed1ab_0.conda#18850e65ca439066484607b26ed09ecd +https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda#405678b942f2481cecdb3e010f4925d9 +https://conda.anaconda.org/conda-forge/linux-64/pyrsistent-0.20.0-py310h2372a71_0.conda#e7f8dc8c62e136573c84116a5e743aed +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.17.3-pyhd8ed1ab_0.conda#723268a468177cd44568eb8f794e0d80 +https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda#98206ea9954216ee7540f0c773f2104d +https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3-pyhd8ed1ab_0.conda#d3076b483092a435832603243567bc31 +https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.4-py310hcc13569_0.conda#410f7e83992a591e492c25049a859254 +https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.1-pyhd8ed1ab_0.conda#2fcb582444635e2c402e8569bb94e039 +https://conda.anaconda.org/conda-forge/noarch/altair-5.2.0-pyhd8ed1ab_0.conda#2521e261fff0b285be099322cf557a7c +https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.10.0-pyhd8ed1ab_0.conda#2d52125a7fe49248ce5e883fed6c935a +https://conda.anaconda.org/conda-forge/noarch/boto3-1.34.51-pyhd8ed1ab_0.conda#bd19311f73611626b31afc608af438cd +https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda#3d081de3a6ea9f894bbb585e8e3a4dcb +https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda#8d652ea2ee8eaee02ed8dc820bc794aa +https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda#490730480d76cf9c8f8f2849719c6e2b +https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda#7b517e7a6f0790337906c055aa97ca49 +https://conda.anaconda.org/conda-forge/noarch/certifi-2024.2.2-pyhd8ed1ab_0.conda#0876280e409658fc6f9e75d035960333 +https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2#b21ed0883505ba1910994f1df031a428 +https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2#914d6646c4dbb1fd3ff539830a12fd71 +https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2#9f765cbfab6870c8435b9eefecd7a1f4 +https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2#b748fbf7060927a6e82df7cb5ee8f097 +https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.4-pyhd8ed1ab_0.conda#20f047662cf4fa8b97836111df87dbb4 +https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda#9f359af5a886fd6ca6b2b6ea02e58332 +https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.10.0-hd8ed1ab_0.conda#c063ddbb9908499fd4f20b31dc67065a +https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.2-pyhd8ed1ab_0.conda#af5fa2d2186003472e766a23c46cae04 +https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda#948d84721b578d426294e17a02e24cbb +https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.1-py310hc6cd4ac_0.conda#1ea80564b80390fa25da16e4211eb801 +https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364 +https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094 +https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda#81a3be0b2023e1ea8555781f0ad904a2 +https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2#b21613793fcc81d944c76c9f2864a7de +https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263 +https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda#629f3203c99b32e0988910c93e77f3b6 +https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761 +https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda#68f0738df502a14213624b288c60c9ad +https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.42-pyha770c72_0.conda#0bf64bf10eee21f46ac83c161917fa86 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.17.2-pyhd8ed1ab_0.conda#140a7f159396547e9799aa98f9f0742e +https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda#5f25798dcefd8252ce5f9dc494d5f571 +https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda#e16be50e378d8a4533b989035b196ab8 +https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2#6784285c7e55cb7212efabc79e4c2883 +https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda#e7df0fdd404616638df5ece6e69ba7af +https://conda.anaconda.org/conda-forge/noarch/ipython-8.22.2-pyh707e725_0.conda#f0abe827c8a7c6d91bccdf90cb1fbee3 +https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.2.0-pyhd8ed1ab_0.conda#a0bc3eec34b0fab84be6b2da94e98e20 +https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.7.2-py310hff52083_0.conda#cb92c27600d5716fd526a206aa43342c +https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2#c3788462a6fbddafdb413a9f9053e58d +https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h59595ed_1.conda#7fc9d3288d2420bb3637647621018000 +https://conda.anaconda.org/conda-forge/linux-64/pyzmq-25.1.2-py310h795f18f_0.conda#fa09f98f3acfd3f5de30bd2d27d5cb7f +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4-py310h2372a71_0.conda#48f39c24349d9ae5c8e8873c42fb6170 +https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.1-pyhd8ed1ab_0.conda#c03972cfce69ad913d520c652e5ed908 +https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda#6598c056f64dc8800d40add25e4e2c34 +https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.3-pyhd33586a_0.conda#e0deff12c601ce5cb7476f93718f3168 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py310h2fee648_0.conda#45846a970e71ac98fd327da5d40a0a2c +https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py310h2372a71_4.conda#68ee85860502d53c8cbfa0e4cef0f6cb +https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda#3afef1f55a1366b4d3b6a0d92e2235e4 +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_0.tar.bz2#642d35437078749ef23a5dca2c9bb1f3 +https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.8.19.20240311-pyhd8ed1ab_0.conda#bd1f4958ce0d78874e98f6b28e3da15e +https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda#b77d8c2313158e6e461ca0efb1c2c508 +https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2#4cb68948e0b8429534380243d063a27a +https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-2.4-py310hff52083_3.conda#08ec1463dbc5c806a32fc431874032ca +https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2#fed45fc5ea0813240707998abe49f520 +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_0.conda#0944dc65cb4a9b5b68522c3bb585d41c +https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda#166212fe82dad8735550030488a01d03 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.17.3-pyhd8ed1ab_0.conda#7a709748e93f0b2c33d6b5b676b6d9d0 +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.6.3-pyhd8ed1ab_1.conda#2ac0d00a0fb3f1a4c81c460ba56bb23b +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_0.conda#219b3833aa8ed91d47d1be6ca03f30be +https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda#3f144b2c34f8cb5a9abd9ed23a39c561 +https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda#332493000404d8411859539a5a630865 +https://conda.anaconda.org/conda-forge/noarch/setuptools-69.2.0-pyhd8ed1ab_0.conda#da214ecd521a720a9d521c68047682dc +https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda#daf5160ff9cde3a468556965329085b9 +https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda#0ed9d7c0e9afa7c025807a9a8136ea3e +https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 +https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda#afcd1b53bcac8844540358e33f33d28f +https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda#5cbee699846772cc939bef23a0d524ed +https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.19.1-pyhd8ed1ab_0.conda#4d3ceee3af4b0f9a1f48f57176bf8625 +https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.2-pyhd8ed1ab_0.conda#b019696a453a799ba5301a6fdbb23589 +https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda#15b51397e0fe8ea7d7da60d83eb76ebc +https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9 +https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.2-pyhd8ed1ab_0.conda#5ab3248dd05c543dc631276455ef6a54 +https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2#eb67e3cace64c66233e2d35949e20f92 +https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda#24fba5a9d161ad8103d4e84c0e1a3ed4 +https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda#9a19b94034dd3abb2b348c8b93388035 +https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyh41d4057_0.conda#ada5a17adcd10be4fc7e37e4166ba0e2 +https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.7.0-pyhd8ed1ab_0.conda#50ad31e07d706aae88b14a4ac9c73f23 +https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.10.0-pyhd8ed1ab_0.conda#016d56f5d81b9364d1da5f4895a2a9f8 +https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.4-pyhd8ed1ab_0.conda#91f93e1ebf6535be518715432d89fd92 +https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda#9669586875baeced8fc30c0826c3270e +https://conda.anaconda.org/conda-forge/noarch/json5-0.9.22-pyhd8ed1ab_0.conda#2fa51897d3aee2fe1636b98d9a6236dc +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda#7f4a9e3fcff3f6356ae99244a014da6a +https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda#a30144e4156cdbb236f99ebb49828f8b +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.24.0-pyhd8ed1ab_0.conda#327bfe1c99154f02259d29810bd70afc +https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda#3d85618e2c97ab896b5b5e298d32b5b3 +https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.1.4-pyhd8ed1ab_0.conda#5af1ffec7c245d1ab2bf0cec0148a4c3 +https://conda.anaconda.org/conda-forge/noarch/amazon-codewhisperer-jupyterlab-ext-2.0.1-pyhd8ed1ab_0.conda#ab9bb3e630d872e9d38c8c18a0cba7b4 +https://conda.anaconda.org/conda-forge/noarch/aws-embedded-metrics-3.2.0-pyhd8ed1ab_0.conda#e1c511655b6e9eb0265c9715c7fa410f +https://conda.anaconda.org/conda-forge/noarch/croniter-1.4.1-pyhd8ed1ab_0.conda#7a4568626f8d6e7c63dcb25d5501a967 +https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.6.0-pyh1a96a4e_0.conda#50ea2067ec92dfcc38b4f07992d7e235 +https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.1.12.2-ha770c72_0.conda#4f04ceee8d953367da7de726af233303 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.2-pyhd8ed1ab_0.conda#7a0bfebd69213722427cb61b077b4187 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.2-pyhd8ed1ab_0.conda#e14e35cc4a5c90694bb41c5317b576a8 +https://conda.anaconda.org/conda-forge/linux-64/pydantic-1.10.13-py310h2372a71_1.conda#cc014fc24717772959bf4fb4c7e66057 +https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.3-py310hc6cd4ac_0.conda#fb478fd83c001cbf8ab01c29b857262e +https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-1.4.49-py310h2372a71_1.conda#cdeaf46006791202a7597bf2a0e6ad9e +https://conda.anaconda.org/conda-forge/noarch/jupyter_scheduler-2.5.1-pyha770c72_0.conda#3d250834fde789b6cb96dc11a43d1df2 +https://conda.anaconda.org/conda-forge/noarch/jupyter-scheduler-2.5.1-hd8ed1ab_0.conda#bb6463ad5d244321f64a231ba9b6cf2a +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-jupyter-scheduler-3.0.7-pyhd8ed1ab_1.conda#ee635c11a576839138a93fc46e0f389b +https://conda.anaconda.org/conda-forge/linux-64/cryptography-42.0.5-py310h75e40e8_0.conda#47e6ea7109182e9e48f8c5839f1bded7 +https://conda.anaconda.org/conda-forge/noarch/tenacity-8.2.3-pyhd8ed1ab_0.conda#1482e77f87c6a702a7e05ef22c9b197b +https://conda.anaconda.org/conda-forge/noarch/pyathena-3.3.0-pyhd8ed1ab_0.conda#b96ed30b70ce32b4b88cf63cc8bc9e86 +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-4.9.4-py310hcfd0673_0.conda#d6df7beac08573177dd9a6a560d1d180 +https://conda.anaconda.org/conda-forge/noarch/asn1crypto-1.5.1-pyhd8ed1ab_0.tar.bz2#f3f2ab3ce28979a24d1a988ba211eb9b +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.0-pyhd8ed1ab_0.conda#4501c96a5e9f18239ae6e5944604d493 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-execution-0.1.2-pyhd8ed1ab_0.conda#a16fa2f5c791f94b459acd5c34ab8670 +https://conda.anaconda.org/conda-forge/noarch/sqlparse-0.4.4-pyhd8ed1ab_0.conda#2e2f31b3b1c866c29636377e14f8c4c6 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-magic-0.1.0-pyhd8ed1ab_0.conda#4fd1875033a6ca132d227f3587415fd5 +https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_0.conda#4c33109f652b5d8c995ab243436c9370 +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.3-pyhd8ed1ab_0.conda#6618ce22c81277d6ebaa45364c9d6b76 +https://conda.anaconda.org/conda-forge/linux-64/ansi2html-1.9.1-py310hff52083_0.conda#2213ea76fd340e7c848c1be0cbdfc579 +https://conda.anaconda.org/conda-forge/noarch/textwrap3-0.9.2-py_0.tar.bz2#1f84e74e9dbe2e5ae38c58496bffaca8 +https://conda.anaconda.org/conda-forge/noarch/ansiwrap-0.8.4-py_0.tar.bz2#f09557e2a7cbd2470a2ab6353000cebd +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.5.0-h27087fc_0.tar.bz2#a08150fd2298460cd1fcccf626305642 +https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.3-pyhd8ed1ab_0.conda#192278292e20704f663b9c766909d67b +https://conda.anaconda.org/conda-forge/linux-64/astroid-3.0.3-py310hff52083_0.conda#7d18b84331cda8271c9ed67d1ca05d47 +https://conda.anaconda.org/conda-forge/noarch/astunparse-1.6.3-pyhd8ed1ab_0.tar.bz2#000b6f68a0bfaba800ced7500c11780f +https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.43-hcad00b1_0.conda#8292dea9e022d9610a11fce5e0896ed8 +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.0-hf2295e7_0.conda#6c0d5a4f5292e54bf9b8dc14ee7df448 +https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-hd4edc92_1.tar.bz2#6c72ec3e660a51736913ef6ea68c454b +https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2#d9c69a24ad678ffce24c6543a0176b00 +https://conda.anaconda.org/conda-forge/noarch/autogluon.common-0.8.2-pyhd8ed1ab_4.conda#e24166dee3b1430877a324715caf8f5d +https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.0-py310hd41b1e2_0.conda#85d2aaa7af046528d339da1e813c3a9f +https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda#5cd86562580f274031ede6aa6aa24441 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_9.conda#61641e239f96eae2b8492dc7e755828c +https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.0.9-h166bdaf_9.conda#081aa22f4581c08e4372b0b6c2f8478e +https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.0.9-h166bdaf_9.conda#1f0a03af852a9659ed2bf08f2f1704fd +https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_9.conda#d47dee1856d9cb955b8076eeff304a5b +https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_9.conda#4601544b4982ba1861fa9b9c607b2c06 +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-15.1.0-py310h2372a71_0.conda#72637c58d36d9475fda24700c9796f19 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.49.0-py310h2372a71_0.conda#e61ae80fde506b70a88e5e06376d2068 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda#009981dd9cfcaa4dbfa25ffaed86bcae +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py310hd41b1e2_1.conda#b8d67603d43b23ce7e988a5d81a7ab79 +https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-2.1.5.1-hd590300_1.conda#323e90742f0f48fc22bea908735f55e6 +https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2#76bbff344f0134279f225174e9064c8f +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.18-h0b41bf4_0.conda#6aa9c9de5542ecb07fdda9ca626252d8 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.3.1-hd590300_0.conda#82bf6f63eb15ef719b556b63feec3a77 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.5.1-h8b53f26_1.conda#5b09e13d732dda1a2bc9adc711164f4d +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-haa2dc70_1.conda#980d8aca0bc23ca73fa8caa3e7c84c28 +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda#2c80dc38fface310c9bd81b17037fee5 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.15-h0b41bf4_0.conda#33277193f5b92bad9fdd230eb700929c +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.0-hfec8fc6_2.conda#5ce6a42505c6e9e6151c54c3ec8d68ea +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.5.0-py310h582fbeb_1.conda#cf62f6cff3536eafaaa0c740b0bf7465 +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda#b9a4dacf97241704529131a0dfc0494f +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.3-py310h62c0568_0.conda#4a7296c0273eb01dfbed728dd6a6725a +https://conda.anaconda.org/conda-forge/noarch/joblib-1.3.2-pyhd8ed1ab_0.conda#4da50d410f553db77e62ab62ffaa1abc +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.11.4-py310hb13e2d6_0.conda#f0063b2885bfae11324a00a693f88781 +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.3.0-pyhc1e730c_0.conda#698d2d2b621640bddb9191f132967c9f +https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.4.1.post1-py310h1fdf081_0.conda#2706ad1a5f6cbad8b57d4094889d1e33 +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2#3faab06a954c2a04039983f2c4a50d99 +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.2-pyhd8ed1ab_0.conda#2b8dfb969f984497f3f98409a9545776 +https://conda.anaconda.org/conda-forge/linux-64/autogluon.core-0.8.2-light_py310h2d11d36_6.conda#9de8e45568202a91466af4d849c7e919 +https://conda.anaconda.org/conda-forge/noarch/autogluon.features-0.8.2-pyhd8ed1ab_3.conda#c827eccfb0ddb1484d0e00f45242b8f8 +https://conda.anaconda.org/conda-forge/linux-64/chardet-5.2.0-py310hff52083_1.conda#a677136a83b823803d2f92045f885be2 +https://conda.anaconda.org/conda-forge/noarch/binaryornot-0.4.4-py_1.tar.bz2#a556fa60840fcb9dd739d186bfd252f7 +https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda#f3ad426304898027fc619827ff428eca +https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_1.conda#ba8aba332d8868897ce44ad74015a7fe +https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_0.conda#4b11845622b3c3178c0e989235b53975 +https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda#776a8dd9e824f77abac30e6ef43a8f7a +https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda#93a8e71256479c62074356ef6ebf501b +https://conda.anaconda.org/conda-forge/noarch/rich-13.7.1-pyhd8ed1ab_0.conda#ba445bf767ae6f0d959ff2b40c20912b +https://conda.anaconda.org/conda-forge/noarch/cookiecutter-2.6.0-pyhca7485f_0.conda#d6260b53b9db90017321af0b45cc00da +https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda#78745f157d56877a2c6e7b386f66f3e2 +https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.21.4-pyhd8ed1ab_0.conda#d47cf217a7bcc3a03dd1c6169c3f0f98 +https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py310h2372a71_0.conda#efdca5c3783dae00552f389bd7b56c3d +https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.0-hd590300_0.conda#71b89db63b5b504e7afc8ad901172e1e +https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.1-hc309b26_1.conda#cc09293a2c2b7fd77aff284f370c12c0 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-h4d4d85c_2.conda#9ca99452635fe03eb5fa937f5ae604b0 +https://conda.anaconda.org/conda-forge/linux-64/s2n-1.3.49-h06160fa_0.conda#1d78349eb26366ecc034a4afe70a8534 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.32-he9a53bd_1.conda#8a24e5820f4a0ffd2ed9c4722cd5d7ca +https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.7.11-h00aa349_4.conda#cb932dff7328ff620ce8059c9968b095 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-h4d4d85c_1.conda#eba092fc6de212a01de0065f38fe8bbb +https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.3-h28f7589_1.conda#97503d3e565004697f1651753aa95b9e +https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.17-h4d4d85c_1.conda#30f9df85ce23cd14faa9a4dfa50cca2b +https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.3.1-h2e3709c_4.conda#2cf21b1cbc1c096a28ffa2892257a2c1 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.9.3-hb447be9_1.conda#c520669eb0be9269a5f0d8ef62531882 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.14-hf3aad02_1.conda#a968ffa7e9fe0c257628033d393e512f +https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.21.0-hb942446_5.conda#07d92ed5403ad7b5c66ffd7d5b8f7e57 +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.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.2-h659d440_0.conda#cd95826dbd331ed1be26bdf401432844 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.27.0-hd590300_0.conda#f6afff0e9ee08d2f1b897881a4f38cdb +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.58.0-h47da74e_1.conda#700ac6ea6d53d5510591c4344d5c989a +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda#1f5a58e686b13bcfde88b93f547d23fe +https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.5.0-hca28451_0.conda#7144d5a828e2cae218e0e3c98d8a0aeb +https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.10.57-h85b1a90_19.conda#0605d3d60857fc07bd6a11e878fe0f08 +https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-he1b5a44_1004.tar.bz2#cddaf2c63ea4a5901cf09524c490ecdc +https://conda.anaconda.org/conda-forge/linux-64/glog-0.6.0-h6f12383_0.tar.bz2#b31f3565cb84435407594e548a2fb7b2 +https://conda.anaconda.org/conda-forge/linux-64/libabseil-20230125.3-cxx17_h59595ed_0.conda#d1db1b8be7c3a8983dcbbbfe4f0765de +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/re2-2023.03.02-h8c504da_0.conda#206f8fa808748f6e90599c3368a1114e +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.conda#68c34ec6149623be41a1933ab996a209 +https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.54.3-hb20ce57_0.conda#7af7c59ab24db007dfd82e0a3a343f66 +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.12.0-hac9eb74_1.conda#0dee716254497604762957076ac76540 +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.18.1-h8fd135c_2.conda#bbf65f7688512872f063810623b755dc +https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2#ede4266dc02e875fe1ea77b25dd43747 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda#318b08df404f9c9be5712aaa5a6f0bb0 +https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.10-h9fff704_0.conda#e6d228cd0bb74a51dd18f5bfce0b4115 +https://conda.anaconda.org/conda-forge/linux-64/orc-1.9.0-h2f23424_1.conda#9571eb3eb0f7fe8b59956a7786babbcd +https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.16-h0b41bf4_1.conda#28bfe2cb11357ccc5be21101a6b7ce86 +https://conda.anaconda.org/conda-forge/linux-64/rdma-core-28.9-h59595ed_1.conda#aeffb7c06b5f65e55e6c637408dc4100 +https://conda.anaconda.org/conda-forge/linux-64/ucx-1.14.1-h64cca9d_5.conda#39aa3b356d10d7e5add0c540945a0944 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-12.0.1-hb87d912_8_cpu.conda#3f3b11398fe79b578e3c44dd00a44e4a +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-12.0.1-py310h0576679_8_cpu.conda#27f55ccfd038d6665facb04a0aa572c5 +https://conda.anaconda.org/conda-forge/noarch/pyarrow-hotfix-0.6-pyhd8ed1ab_0.conda#ccc06e6ef2064ae129fab3286299abda +https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda#f08fb5c89edfc4aadee1c81d4cfb1fa1 +https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.4.1-py310h2372a71_0.conda#b631b889b0b4bc2fca7b8b977ca484b2 +https://conda.anaconda.org/conda-forge/noarch/datasets-2.18.0-pyhd8ed1ab_0.conda#3482c9b417757df305ff4e3a7e4b7c10 +https://conda.anaconda.org/conda-forge/noarch/responses-0.18.0-pyhd8ed1ab_0.tar.bz2#a10d30e613a2a1a78a89ceadf3832e7c +https://conda.anaconda.org/conda-forge/noarch/evaluate-0.4.1-pyhd8ed1ab_0.conda#ea228540526db4dde8ad8f2309bc1d40 +https://conda.anaconda.org/conda-forge/noarch/gdown-5.1.0-pyhd8ed1ab_0.conda#6f880647c0270648f710f334c60bc76c +https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.1.99-h180e1df_0.conda#056064bd3ef47439e3e78fac28449fbf +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.1.99-py310hebdb9f0_0.conda#b3a5908ac3912b26d6a8b77faebe6eca +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.1.99-h180e1df_0.conda#c67cc412366709c1c3225f19f8aed63b +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.1.99-hff52083_0.conda#578969452de13e4ad69edf18ee2b3d5a +https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d +https://conda.anaconda.org/conda-forge/linux-64/regex-2023.12.25-py310h2372a71_0.conda#4a9ba4e7af60356e63b38a6d419acad6 +https://conda.anaconda.org/conda-forge/noarch/sacremoses-0.0.53-pyhd8ed1ab_0.tar.bz2#76c3c384fe0941f1b08193736e8e277a +https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.2-py310hcb5633a_0.conda#a1e978544ef765ef9ac2f2320e43bacd +https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.13.3-py310he1f1126_0.conda#ea2281fe0bf70c1c83393565342a8a8c +https://conda.anaconda.org/conda-forge/noarch/transformers-4.31.0-pyhd8ed1ab_0.conda#8cccf394a00fbfef2f3d6028422ae5cc +https://conda.anaconda.org/conda-forge/noarch/nlpaug-1.1.11-pyhd8ed1ab_1.conda#4e231f0fa7db9388cf4c8539d623ac62 +https://conda.anaconda.org/conda-forge/noarch/nltk-3.8.1-pyhd8ed1ab_0.conda#518c769ca4273480a99be6e559a26192 +https://conda.anaconda.org/conda-forge/noarch/typish-1.9.3-pyhd8ed1ab_0.tar.bz2#81b3f3101aa2af117924d908a1b33c67 +https://conda.anaconda.org/conda-forge/noarch/nptyping-2.4.1-pyhd8ed1ab_0.tar.bz2#7929b4ae7565a66f0fab4b70cfb90594 +https://conda.anaconda.org/conda-forge/noarch/omegaconf-2.2.3-pyhd8ed1ab_0.conda#cebc9f0fc6eebdcc368bb30ba30f2fd5 +https://conda.anaconda.org/conda-forge/noarch/markdown-3.5.2-pyhd8ed1ab_0.conda#db7b48fa4eeb0c21b2f3f5b1f7d9ebcf +https://conda.anaconda.org/conda-forge/noarch/ordered-set-4.1.0-pyhd8ed1ab_0.tar.bz2#9a8714decb3967b290263817e876d8a9 +https://conda.anaconda.org/conda-forge/noarch/model-index-0.1.11-pyhd8ed1ab_0.conda#6aecca21351e44095ffd2901ee46337a +https://conda.anaconda.org/conda-forge/noarch/wheel-0.42.0-pyhd8ed1ab_0.conda#1cdea58981c5cbc17b51973bcaddcea7 +https://conda.anaconda.org/conda-forge/noarch/pip-23.3.2-pyhd8ed1ab_0.conda#8591c748f98dcc02253003533bc2e4b1 +https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2#4759805cce2d914c38472f70bf4d8bcb +https://conda.anaconda.org/conda-forge/noarch/openmim-0.3.7-pyhd8ed1ab_0.conda#e081b8fa91b884435725f0caa13866ff +https://conda.anaconda.org/conda-forge/linux-64/protobuf-4.21.12-py310heca2aa9_0.conda#90bb7e1b729c4b50272cf78be97ab912 +https://conda.anaconda.org/conda-forge/noarch/pytesseract-0.3.10-pyhd8ed1ab_0.tar.bz2#04f4becceb0c032c5dbdae6ad18bd95e +https://conda.anaconda.org/conda-forge/noarch/lightning-utilities-0.10.1-pyhd8ed1ab_0.conda#4132ed16f8074bc111d477c52508fda4 +https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.0.3-pyhd8ed1ab_0.conda#4e8849ba2fa06393b7ab5a50c6a4256c +https://conda.anaconda.org/conda-forge/noarch/pytorch-lightning-2.0.9-pyhd8ed1ab_0.conda#3e96ed529412338e38af9004e22267de +https://conda.anaconda.org/conda-forge/noarch/pytorch-metric-learning-1.7.3-pyhd8ed1ab_0.conda#139aa590e345e10f4572812a329806f4 +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.2.1-pyhd8ed1ab_0.conda#b325bfc4cff7d7f8a868f1f7ecc4ed16 +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.3-py310h2372a71_0.conda#21362970a6fea90ca507c253c20465f2 +https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 +https://conda.anaconda.org/conda-forge/noarch/partd-1.4.1-pyhd8ed1ab_0.conda#acf4b7c0bcd5fa3b0e05801c4d2accd6 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.3.0-pyhd8ed1ab_0.conda#b6c573c271bf4c062873d7f3df97c3ba +https://conda.anaconda.org/conda-forge/noarch/imageio-2.34.0-pyh4b66e23_0.conda#b8853659d596f967c661f544dd89ede7 +https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.4.1-py310h1f7b6fc_1.conda#be6f0382440ccbf9fb01bb19ab1f1fc0 +https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.5-h0f2a231_0.conda#009521b7ed97cca25f8f997f9e745976 +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.0.7-h0b41bf4_0.conda#49e8329110001f04923fe7e864990b0c +https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.13.2-hb4ffafa_0.conda#976aaf1afd331ed7346d649da5c5c1ee +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.1-h0b41bf4_3.conda#96f3b11872ef6fad973eac856cd2624f +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.2-h59595ed_1.conda#127b0be54c1c90760d7fe02ea7a56426 +https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda#418c6ca5929a611cbd69204907a83995 +https://conda.anaconda.org/conda-forge/linux-64/libavif-0.11.1-h8182462_2.conda#41c399ed4c439e37b844c24ab5621b5a +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-h59595ed_0.conda#fd486bffbf0d6841cf1456a8f2e3a995 +https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2023.8.12-py310hc929067_0.conda#61caf809753610c4c87d583765b1d478 +https://conda.anaconda.org/conda-forge/noarch/tifffile-2024.2.12-pyhd8ed1ab_0.conda#d5c8bef52be4e70c48b1400eec3eecc8 +https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.19.3-py310h769672d_2.tar.bz2#c0391107b0cd0010708d6969ed759e8b +https://conda.anaconda.org/conda-forge/noarch/seqeval-1.2.2-pyhd3deb0d_0.tar.bz2#d4436c8a8b9fb6d60fe4e7b9f097f9bb +https://conda.anaconda.org/conda-forge/noarch/cachetools-5.3.3-pyhd8ed1ab_0.conda#cd4c26c702a9bcdc70ff05b609ddacbe +https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.5.1-pyhd8ed1ab_0.conda#fb1a800972b072aa4d16450983c81418 +https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.3.0-pyhd8ed1ab_0.conda#26db749166cdca55e5ef1ffdc7767d0e +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda#b50aec2c744a5c493c09cce9e2e7533e +https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_0.tar.bz2#caabbeaa83928d0c3e3949261daa18eb +https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2#03bf410858b2cefc267316408a77c436 +https://conda.anaconda.org/conda-forge/noarch/google-auth-2.28.2-pyhca7485f_0.conda#f8879cf0e5b8f7761d01bce40ce7c089 +https://conda.anaconda.org/conda-forge/noarch/blinker-1.7.0-pyhd8ed1ab_0.conda#550da20b2c2e38be9cc44bb819fda5d5 +https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_1.conda#74f76d4868dbba5870f2cf1d9b12d8f3 +https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2#8f882b197fd9c4941a787926baea4868 +https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.4.0-pyhd8ed1ab_0.conda#a55b220de8970208f583e38639cfbecc +https://conda.anaconda.org/conda-forge/noarch/google-auth-oauthlib-1.0.0-pyhd8ed1ab_1.conda#569e62e95b01b53e4ec7d9abe83b7385 +https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.54.3-py310heca2aa9_0.conda#7c82ea96968976ee2eb66a52f2decd8e +https://conda.anaconda.org/conda-forge/linux-64/tensorboard-data-server-0.7.0-py310h75e40e8_1.conda#e562478facfa960813945204273ecac5 +https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.0.1-pyhd8ed1ab_0.conda#af8d825d93dbe6331ee6d61c69869ca0 +https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.12.3-pyhd8ed1ab_0.conda#429d39f86cef8d0859d639804ae67aaf +https://conda.anaconda.org/conda-forge/linux-64/torchvision-0.15.2-cuda112py310h0801bf5_1.conda#f5680c812c287a92c4390dc245df2e5d +https://conda.anaconda.org/conda-forge/noarch/timm-0.9.16-pyhd8ed1ab_0.conda#bc15401d946adb3fbce34c4ba351dd20 +https://conda.anaconda.org/conda-forge/noarch/autogluon.multimodal-0.8.2-pyha770c72_5.conda#a8ca42e2b4ee0fd6dce729bc226dd0cc +https://conda.anaconda.org/conda-forge/noarch/plotly-5.19.0-pyhd8ed1ab_0.conda#669cd7065794633b9e64e6a9612ec700 +https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda#e7ba12deb7020dd080c6c70e7b6f6a3d +https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda#53fb86322bdb89496d7579fe3f02fd61 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda#0f69b688f52ff6da70bccb7ff7001d1d +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_1.conda#6185f640c43843e5ad6fd1c5372c3f80 +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/pixman-0.43.2-h59595ed_0.conda#71004cbf7924e19c02746ccde9fd7123 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda#b462a33c0be1421532f28bfe8f4a7514 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda#93ee23f12bc2e684548181256edd2cf6 +https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2#4b230e8381279d76131116660f5a241a +https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda#bce9f945da8ad2ae9b1d7165a64d0f87 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2#b4a4381d54784606820704f7b5f05a15 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.7-h8ee46fc_0.conda#49e482d882669206653b095f5206c05b +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda#82b6df12252e6f32402b96dacc656fec +https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2#06feff3d2634e3097ce2fe681474b534 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda#ed67c36f215b310412b2af935bf3e530 +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-h3faef2a_0.conda#f907bb958910dc404647326ca80c263e +https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h6b639ba_2.conda#ee8220db21db8094998005990418fe5b +https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h58526e2_1001.tar.bz2#8c54672728e8ec6aa6db90cf2806d220 +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.3.0-h3d44ed6_0.conda#5a6f6c00ef982a9bc83558d9ac8f64a0 +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.52.1-ha41ecd1_0.conda#5c0cc002bf4eaa56448b0729efd6e96c +https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h280cfa0_4.conda#410f86e58e880dcc7b0e910a8e89c05c +https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda#4d8df0b0db060d33c9a702ada998a8fe +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.3.1-hbf2b3c1_0.conda#4963f3f12db45a576f2b8fbe9a0b8569 +https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h74d50f4_7.conda#3453ac94a99ad9daf17e8a313d274567 +https://conda.anaconda.org/conda-forge/linux-64/gettext-0.21.1-h27087fc_0.tar.bz2#14947d8770185e5153fdd04d4673ed37 +https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.56.3-he3f83f7_1.conda#03bd1ddcc942867a19528877143b9852 +https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.7-h27087fc_0.conda#f204c8ba400ec475452737094fb81d52 +https://conda.anaconda.org/conda-forge/linux-64/graphviz-8.1.0-h28d9a01_0.conda#33628e0e3de7afd2c8172f76439894cb +https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.20.1-pyh22cad53_0.tar.bz2#196447bc6fd769c3eb2d51de1aa866a5 +https://conda.anaconda.org/conda-forge/linux-64/catboost-1.2.3-py310hff52083_2.conda#e063c808181593406d4d3d321ee7ffff +https://conda.anaconda.org/conda-forge/noarch/fastcore-1.5.29-pyhd8ed1ab_0.conda#155c898255baddd6b2cb95894791eeca +https://conda.anaconda.org/conda-forge/noarch/fastprogress-1.0.3-pyhd8ed1ab_0.tar.bz2#1690639d3647fde6edf4f00c8f87c263 +https://conda.anaconda.org/conda-forge/noarch/fastdownload-0.0.7-pyhd8ed1ab_0.conda#29c29999a420c2d28c3a46b3eadb9373 +https://conda.anaconda.org/conda-forge/linux-64/catalogue-2.0.10-py310hff52083_0.conda#a20390cd5f5fe4d8c5f6f2e7fa6c54cf +https://conda.anaconda.org/conda-forge/linux-64/cymem-2.0.8-py310hc6cd4ac_1.conda#8e4dada89998e0cb4f97b835dff6dc7e +https://conda.anaconda.org/conda-forge/noarch/langcodes-3.3.0-pyhd8ed1ab_0.tar.bz2#aacac9c3804912c38087d1c295708493 +https://conda.anaconda.org/conda-forge/linux-64/murmurhash-1.0.10-py310hc6cd4ac_1.conda#2b0c4b4532c601ece4537cc7f3558464 +https://conda.anaconda.org/conda-forge/noarch/smart_open-5.2.1-pyhd8ed1ab_0.tar.bz2#c7a838c38e38c82edde371a9054e6c92 +https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda#d08db09a552699ee9e7eec56b4eb3899 +https://conda.anaconda.org/conda-forge/noarch/typer-0.9.0-pyhd8ed1ab_0.conda#5030a13b2fe5e143d5956d4943d3018f +https://conda.anaconda.org/conda-forge/noarch/pathy-0.10.2-pyhd8ed1ab_0.conda#69d84b5c17aea4d7350f3536bcde7296 +https://conda.anaconda.org/conda-forge/linux-64/preshed-3.0.9-py310hc6cd4ac_1.conda#a2a27c2eafd1e280555ae954df088fc3 +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/srsly-2.4.8-py310hc6cd4ac_1.conda#7cd9d4be6f55ccb53cbd7125f2e6a0fb +https://conda.anaconda.org/conda-forge/linux-64/confection-0.1.4-py310h17c5347_0.conda#72b63825959fc040cab8ed0f12f2040e +https://conda.anaconda.org/conda-forge/linux-64/cython-blis-0.7.10-py310h1f7b6fc_2.conda#6a0165d9e76c443ed66d2e8b733aa133 +https://conda.anaconda.org/conda-forge/linux-64/wasabi-1.1.2-py310hff52083_0.conda#8ed9f04ed8e1373063cd03b9d5c86ce3 +https://conda.anaconda.org/conda-forge/linux-64/thinc-8.2.2-py310hcb52e73_0.conda#550b37537f05740f1c9a38d63d843b3c +https://conda.anaconda.org/conda-forge/noarch/cloudpathlib-0.16.0-pyhd8ed1ab_0.conda#8d75941f621306e58b7642394a8bad87 +https://conda.anaconda.org/conda-forge/noarch/weasel-0.3.4-pyhd8ed1ab_0.conda#a53c82e61a1173c887e84fc50842eec4 +https://conda.anaconda.org/conda-forge/linux-64/spacy-3.7.2-py310hcb52e73_0.conda#c966d5a09c130d0bcfce4126643ddc74 +https://conda.anaconda.org/conda-forge/noarch/fastai-2.7.14-pyhd8ed1ab_0.conda#9854ef355cc4bd1e2aac40998f721fed +https://conda.anaconda.org/conda-forge/linux-64/lightgbm-3.3.5-py310heca2aa9_0.conda#d2595ddab22cbca7409b28e3105afd0a +https://conda.anaconda.org/conda-forge/linux-64/libxgboost-1.7.6-cuda118_hd3b444d_6.conda#78509401d0879ef5aac72b8d1e104493 +https://conda.anaconda.org/conda-forge/linux-64/py-xgboost-1.7.6-cuda118_py310h9840055_6.conda#1d3da6268c67fe8b84c32cd0dc174bb4 +https://conda.anaconda.org/conda-forge/linux-64/xgboost-1.7.6-cuda118_py310h9840055_6.conda#f6a6f34c91b92f72dfdb47d3c7efcbbe +https://conda.anaconda.org/conda-forge/noarch/autogluon.tabular-0.8.2-pyha770c72_4.conda#17fad1cdb563ddad16ab0ba4c085bcb3 +https://conda.anaconda.org/conda-forge/noarch/gluonts-0.13.7-pyhd8ed1ab_0.conda#1684b578508d9918b2dcadd4c365c61a +https://conda.anaconda.org/conda-forge/linux-64/libllvm14-14.0.6-hcd5def8_4.conda#73301c133ded2bf71906aa2104edae8b +https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.42.0-py310h1b8f574_1.conda#e2a5e9f92629c8e4c8611883a35745b4 +https://conda.anaconda.org/conda-forge/linux-64/numba-0.59.0-py310h7dc5dd1_1.conda#966bc2bc095723310d746106e7c91791 +https://conda.anaconda.org/conda-forge/noarch/window-ops-0.0.15-pyhd8ed1ab_0.conda#b5ffd7d8295d4eda512216e23cf75a0f +https://conda.anaconda.org/conda-forge/noarch/mlforecast-0.7.3-pyhd8ed1ab_0.conda#7a2b34b4c9bff2545200b3746da70f11 +https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.6-pyhd8ed1ab_0.conda#a5b55d1cb110cdcedc748b5c3e16e687 +https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.1-py310h1f7b6fc_0.conda#d98c3749dd466513dd921f5818f4b001 +https://conda.anaconda.org/conda-forge/noarch/statsforecast-1.4.0-pyhd8ed1ab_0.conda#aa803f915587fe4306dfe0234215caa9 +https://conda.anaconda.org/conda-forge/linux-64/ujson-5.9.0-py310hc6cd4ac_0.conda#cab4b543b897dcf548edb3018fe45f9e +https://conda.anaconda.org/conda-forge/noarch/autogluon.timeseries-0.8.2-pyhd8ed1ab_4.conda#a64157275daf72a557fe4a9d843a9e1d +https://conda.anaconda.org/conda-forge/noarch/autogluon-0.8.2-pyhd8ed1ab_4.conda#7ff9ac51e09bd5991970a7df53b4bee6 +https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.11.1-pyhd8ed1ab_0.conda#29ff12b36df16bb66fdccd4206aaebfb +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.10-pyhd8ed1ab_0.conda#16b73b2c4ff7dda8bbecf88aadfe2027 +https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.10-pyhd8ed1ab_0.conda#521f489e3babeddeec638c2add7e9e64 +https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.2-pyhd8ed1ab_0.conda#67f86478c78637f68c1f3858973021f2 +https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.42-hd8ed1ab_0.conda#85a2189ecd2fcdd86e92b2d4ea8fe461 +https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_0.conda#7cf6f52a66f8e3cd9d8b6c231262dcab +https://conda.anaconda.org/conda-forge/noarch/notebook-7.1.1-pyhd8ed1ab_0.conda#f1a93f00b030dbede427001862c2854b +https://conda.anaconda.org/conda-forge/noarch/qtpy-2.4.1-pyhd8ed1ab_0.conda#7f391bd70d2abfb70f304ba5aa4e1261 +https://conda.anaconda.org/conda-forge/noarch/qtconsole-base-5.5.1-pyha770c72_0.conda#5528a3eda283b421055c89bface19a1c +https://conda.anaconda.org/conda-forge/noarch/jupyter-1.0.0-pyhd8ed1ab_10.conda#056b8cc3d9b03f54fc49e6d70d7dc359 +https://conda.anaconda.org/conda-forge/noarch/mock-5.1.0-pyhd8ed1ab_0.conda#926c67c0310094cf421ad13f7d3f38e5 +https://conda.anaconda.org/conda-forge/noarch/nose-1.3.7-py_1006.tar.bz2#382019d5f8e9362ef6f60a8d4e7bce8f +https://conda.anaconda.org/conda-forge/noarch/hdijupyterutils-0.21.0-pyh1a96a4e_0.conda#4db6232a9b934edc1c1e2f7b7d5a5d40 +https://conda.anaconda.org/conda-forge/noarch/autovizwidget-0.21.0-pyh1a96a4e_0.conda#7db56991c3c823ddb394ed85df9b54f5 +https://conda.anaconda.org/conda-forge/noarch/aws-glue-sessions-1.0.4-pyhd8ed1ab_0.conda#169c4c0a396d83164215f54024031ec8 +https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.1.2-py310hcb5633a_0.conda#6dd3d49f65ceb05dbd527a5b6301611b +https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda#4eccaeba205f0aed9ac3a9ea58568ca3 +https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda#17064acba08d3686f1135b5ec1b32b12 +https://conda.anaconda.org/conda-forge/linux-64/black-24.2.0-py310hff52083_0.conda#92bb721ab7aca4e9ac80d07ca0f3fe5c +https://conda.anaconda.org/conda-forge/noarch/boltons-23.1.1-pyhd8ed1ab_0.conda#56febe65315cc388a5d20adf2b39a74d +https://conda.anaconda.org/conda-forge/linux-64/fmt-10.2.1-h00ab1b0_0.conda#35ef8bc24bd34074ebae3c943d551728 +https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h516909a_1000.tar.bz2#bb14fcb13341b81d5eb386423b9d2bac +https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.7.2-h2aa1ff5_1.conda#3bf887827d1968275978361a6e405e4f +https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.28-hfc55251_0.conda#66d4f5d8256542d9ebfa341d690c5e03 +https://conda.anaconda.org/conda-forge/linux-64/reproc-14.2.4.post0-hd590300_1.conda#82ca53502dfd5a64a80dee76dae14685 +https://conda.anaconda.org/conda-forge/linux-64/reproc-cpp-14.2.4.post0-h59595ed_1.conda#715e1d720ec1a03715bebd237972fca5 +https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h59595ed_0.conda#965eaacd7c18eb8361fd12bb9e7a57d7 +https://conda.anaconda.org/conda-forge/linux-64/libmamba-1.5.7-had39da4_0.conda#9fff450354fbcd1510ef178730732241 +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.7-py310h39ff949_0.conda#58d84efb37d517c64f4e48f75fd6180d +https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-24.1.0-pyhd8ed1ab_0.conda#304dc78ad6e52e0fd663df1d484c1531 +https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.22.0-py310h1275a96_0.conda#54698ba13cd3494547b289cd86a2176a +https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.9.0-pyhd8ed1ab_0.conda#38253361efb303deead3eab39ae9269b +https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.2.0-pyh38be061_0.conda#8a3ae7f6318376aa08ea753367bb7dd6 +https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_0.conda#bbdb409974cd6cb30071b1d978302726 +https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_0.conda#bfdb7c5c6ad1077c82a69a8642c87aff +https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.0.2-py310hff52083_0.conda#4837faab0d3e665df57fef662148c6a3 +https://conda.anaconda.org/conda-forge/noarch/pluggy-1.4.0-pyhd8ed1ab_0.conda#139e9feb65187e916162917bb2484976 +https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py310h2372a71_0.conda#0adaac9a86d59adae2bc86b3cdef2df1 +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py310h2372a71_0.conda#dcf6d2535586c77b31425ed835610c54 +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.6-py310h2372a71_0.conda#50b7d9b39099cdbabf65bf27df73a793 +https://conda.anaconda.org/conda-forge/noarch/truststore-0.8.0-pyhd8ed1ab_0.conda#08316d001eca8854392cf2837828ea11 +https://conda.anaconda.org/conda-forge/linux-64/conda-23.11.0-py310hff52083_1.conda#d5278ac990c67d5ed51584998aa16c5a +https://conda.anaconda.org/conda-forge/noarch/contextlib2-21.6.0-pyhd8ed1ab_0.tar.bz2#5b26a831440be04c39531a8ce20f5d71 +https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.4-h7f98852_1002.tar.bz2#e728e874159b042d92b90238a3cb0dc2 +https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.27-h54b06d7_7.conda#dce22f70b4e5a407ce88f2be046f4ceb +https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.1.2-pyhd8ed1ab_0.tar.bz2#3c3de74912f11d2b590184f03c7cd09b +https://conda.anaconda.org/conda-forge/noarch/flask-3.0.2-pyhd8ed1ab_0.conda#7f88df670921cc31c309719e30c22021 +https://conda.anaconda.org/conda-forge/noarch/retrying-1.3.3-py_2.tar.bz2#a11f356d6f93b74b4a84e9501afd48b4 +https://conda.anaconda.org/conda-forge/noarch/dash-2.16.1-pyhd8ed1ab_0.conda#016bd4f61878a57f19c8cd744708a1f1 +https://conda.anaconda.org/conda-forge/noarch/marshmallow-3.21.1-pyhd8ed1ab_0.conda#ae303aa7dc100bc3bc01b5a3b7ca3567 +https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_0.conda#9e924b76b91908a17e28a19a0ab88687 +https://conda.anaconda.org/conda-forge/noarch/dataclasses-json-0.6.4-pyhd8ed1ab_0.conda#1190a6456351690603b2d64d1cbf5b4a +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d +https://conda.anaconda.org/conda-forge/noarch/deepmerge-1.1.1-pyhd8ed1ab_0.conda#d91c3d8ac3f2ab36ca4ea32ac42f731e +https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.7-py310hd41b1e2_0.conda#dc5263dcaa1347e5a456ead3537be27d +https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2#6d6552722448103793743dabfbda532d +https://conda.anaconda.org/conda-forge/noarch/tblib-2.0.0-pyhd8ed1ab_0.conda#f5580336fe091d46f9a2ea97da044550 +https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda#cf30c2c15b82aacb07f9c09e28ff2275 +https://conda.anaconda.org/conda-forge/noarch/distributed-2024.3.0-pyhd8ed1ab_0.conda#e4736ce580a5b289f7412f14ae8df42a +https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.5.0-py310h2372a71_3.conda#a29a0825809cd3a780097472be176618 +https://conda.anaconda.org/conda-forge/noarch/paramiko-3.4.0-pyhd8ed1ab_0.conda#a5e792523b028b06d7ce6e65a6cd4a33 +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.0.0-pyhd8ed1ab_0.conda#aec5f308cb9055e83c59afecd5fcb58a +https://conda.anaconda.org/conda-forge/noarch/docstring-to-markdown-0.15-pyhd8ed1ab_0.conda#a3a1e6af2926a3affcd6f2072871f551 +https://conda.anaconda.org/conda-forge/linux-64/libfaiss-1.7.4-hf47d654_0_cpu.conda#8fd132db65c8d51caea2ae7cde4b450c +https://conda.anaconda.org/conda-forge/linux-64/libfaiss-avx2-1.7.4-h1234567_0_cpu.conda#7eb943c067a63c4d8af526c2df9f2c1b +https://conda.anaconda.org/conda-forge/linux-64/faiss-1.7.4-py310h9ed8947_0_cpu.conda#99665c710087f7a964915b5ea0097465 +https://conda.anaconda.org/conda-forge/linux-64/faiss-cpu-1.7.4-h718b53a_0.conda#7a9e6f72c36ff5a5eeb61660fd6fdf8d +https://conda.anaconda.org/conda-forge/noarch/starlette-0.27.0-pyhd8ed1ab_0.conda#6facb6fc201d334257db8004439705d3 +https://conda.anaconda.org/conda-forge/noarch/fastapi-0.103.2-pyhd8ed1ab_0.conda#fb243b6796ab7d64b14e00c279620c04 +https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_0.tar.bz2#34fc335fc50eef0b5ea708f2b5f54e0c +https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.2.0-pyhd8ed1ab_0.conda#0cf7fef6aa123df28adb21a590065e3d +https://conda.anaconda.org/conda-forge/noarch/flake8-7.0.0-pyhd8ed1ab_0.conda#15bc58c860fc0a9abc26ec902df35252 +https://conda.anaconda.org/conda-forge/linux-64/flatbuffers-23.5.26-h59595ed_1.conda#913a1c6fd00b66f33392a129e835ceca +https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_0.conda#650a7807e689642dddd3590eb817beed +https://conda.anaconda.org/conda-forge/noarch/gast-0.4.0-pyh9f0ad1d_0.tar.bz2#42323c77b73462199fca93bc8ac9279d +https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2#62f26a3d1387acee31322208f0cfa3e0 +https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda#623b19f616f2ca0c261441067e18ae40 +https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.42-pyhd8ed1ab_0.conda#6bc8e496351bafd761c0922c3ebd989a +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.80.0-hde27a5a_0.conda#072608f7b71755993a294c3cdf909fa6 +https://conda.anaconda.org/conda-forge/linux-64/glib-2.80.0-hf2295e7_0.conda#56a4c2ed7723cf0847752f74dba1929f +https://conda.anaconda.org/conda-forge/noarch/google-pasta-0.2.0-pyh8c360ce_0.tar.bz2#26e27d7d3d7fe2336b543dd8e0f12cbf +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.22.9-h98fc4e7_0.conda#bcc7157b06fce7f5e055402a8135dfd8 +https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2#6e8cc2173440d77708196c5b93771680 +https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f +https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 +https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.22.9-h8e1006c_0.conda#614b81f8ed66c56b640faee7076ad14a +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_h4f84152_100.conda#d471a5c3abc984b662d9bae3bb7fd8a5 +https://conda.anaconda.org/conda-forge/linux-64/h5py-3.10.0-nompi_py310h65828d5_101.conda#44c185c5b133ad6d1d449839407aa863 +https://conda.anaconda.org/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_0.conda#1d25ed2b95b92b026aaa795eabec8d91 +https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.3.2-py310hcc13569_0.conda#1ad84020b1ab816d7ab3f3d0859faf40 +https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.4.14-cpu_py310h67d73b5_1.conda#392c325994aa96727edd0069a0620e31 +https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.3.0-pyhc1e730c_2.conda#7a94ac68b892daa9f17ae8a52b31ed81 +https://conda.anaconda.org/conda-forge/noarch/opt-einsum-3.3.0-hd8ed1ab_2.conda#ab262acd95cb73f3ed9426cc4204ac3a +https://conda.anaconda.org/conda-forge/noarch/jax-0.4.20-pyhd8ed1ab_0.conda#5abbd950bd427bc9d929e35ecbf814d1 +https://conda.anaconda.org/conda-forge/noarch/ply-3.11-py_1.tar.bz2#7205635cd71531943440fbfe3b6b5727 +https://conda.anaconda.org/conda-forge/noarch/jsonpath-ng-1.6.1-pyhd8ed1ab_0.conda#a698a41f5b52fe96049fd8c926ac3086 +https://conda.anaconda.org/conda-forge/linux-64/orjson-3.9.15-py310hcb5633a_0.conda#da1b180ccf1dce5d87d145ad2fc14e5a +https://conda.anaconda.org/conda-forge/noarch/langsmith-0.1.24-pyhd8ed1ab_0.conda#f3926a68f089b1a38c1f540944f9ee0a +https://conda.anaconda.org/conda-forge/noarch/langchain-core-0.1.31-pyhd8ed1ab_0.conda#3bfc5b4af9975e867d8e272fe5836d2f +https://conda.anaconda.org/conda-forge/noarch/langchain-community-0.0.28-pyhd8ed1ab_0.conda#d7e8f72c5e422b78b3d5f7a7aecbfae9 +https://conda.anaconda.org/conda-forge/noarch/langchain-0.1.9-pyhd8ed1ab_0.conda#2ad37682610ac2643b46e4cc0215f410 +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-magics-2.11.0-pyhd8ed1ab_0.conda#aee09f3966655f81d05fcfb5bae3612d +https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.5.2-py310h47bb294_0.conda#a83ae186d0a4b78c98b32781d7c15d48 +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-2.11.0-pyhd8ed1ab_0.conda#e8ab7975630aff4624d3ed1fa32ac552 +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-pyh5bfe37b_1.conda#11ca195fc8a16770661a387bcce27c36 +https://conda.anaconda.org/conda-forge/noarch/simpervisor-1.0.0-pyhd8ed1ab_0.conda#1f6df17b16d6295a484d59e844fef6ee +https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.1.2-pyhd8ed1ab_0.conda#3671520b52215a5a084de08003e6d8cd +https://conda.anaconda.org/conda-forge/noarch/nbdime-4.0.1-pyhd8ed1ab_0.conda#dd76d44a144499f8ff3254fd20cdb7a2 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-git-0.50.0-pyhd8ed1ab_1.conda#5020cacc18e3d5f62a81513f26ac2cac +https://conda.anaconda.org/conda-forge/noarch/keras-2.12.0-pyhd8ed1ab_0.conda#e6e18b33e8d62200099f2eed98a263b6 +https://conda.anaconda.org/conda-forge/noarch/keras-preprocessing-1.1.2-pyhd8ed1ab_0.tar.bz2#a79b00989a0d89791021902f37fe2f9e +https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2#a8832b479f93521a9e7b5b743803be51 +https://conda.anaconda.org/conda-forge/linux-64/libcap-2.69-h0f662aa_0.conda#25cb5999faa414e5ccb2c1388f62d3d5 +https://conda.anaconda.org/conda-forge/linux-64/libllvm15-15.0.7-hb3ce162_4.conda#8a35df3cbc0c8b12cc8af9473ae75eef +https://conda.anaconda.org/conda-forge/linux-64/libclang13-15.0.7-default_ha2b6cf4_4.conda#898e0dd993afbed0d871b60c2eb33b83 +https://conda.anaconda.org/conda-forge/linux-64/libclang-15.0.7-default_hb11cfb5_4.conda#c90f4cbb57839c98fef8f830e4b9972f +https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda#d4529f4dff3057982a7617c7ac58fde3 +https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda#ee48bf17cc83a00f59ca1494d5646869 +https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.48-h71f35ed_0.conda#4d18d86916705d352d5f4adfb7f0edd3 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.10.3-hd590300_0.conda#32d16ad533c59bb0a3c5ffaf16110829 +https://conda.anaconda.org/conda-forge/linux-64/libpq-15.6-h088ca5b_0.conda#99dca02fb74a8dfa3653c6673674f90c +https://conda.anaconda.org/conda-forge/linux-64/libsecret-0.18.8-h329b89f_2.tar.bz2#9d6698e3c9585a75156d86f7ef229093 +https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.4-h59595ed_0.conda#3f1017b4141e943d9bc8739237f749e8 +https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda#ef1910918dd895516a769ed36b5b3a4e +https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-255-h3516f8a_1.conda#3366af27f0b593544a6cd453c7932ac5 +https://conda.anaconda.org/conda-forge/linux-64/libuv-1.46.0-hd590300_0.conda#d23c76f7e6dcd6243d1b6ef5e62d17d2 +https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.41-hd590300_0.conda#81f740407b45e3f9047b3174fa94eb9e +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.6.0-hd429924_1.conda#1dbcc04604fdf1e526e6d1b0b6938396 +https://conda.anaconda.org/conda-forge/linux-64/sip-6.7.12-py310hc6cd4ac_0.conda#68d5bfccaba2d89a7812098dd3966d9b +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.12.2-py310hc6cd4ac_5.conda#ef5333594a958b25912002886b82b253 +https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.33-hf1915f5_6.conda#80bf3b277c120dd294b51d404b931a75 +https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.33-hca2cd23_6.conda#e87530d1b12dd7f4e0f856dc07358d60 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda#da0ec11a6454ae19bff5b02ed881a2b1 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.98-h1d7d5a4_0.conda#54b56c2fdf973656b748e0378900ec13 +https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-16.1-hb77b528_5.conda#ac902ff3c1c6d750dd0dfc93a974ab74 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.0-hd590300_1.conda#9bfac7ccd94d54fd21a0501296d60424 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-h8ee46fc_1.conda#9d7bcddf49cbf727730af10e71022c73 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.0-h8ee46fc_1.conda#632413adcd8bc16b515cab87a2932913 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.9-hd590300_1.conda#e995b155d938b6779da6ace6c6b13816 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.1-h8ee46fc_1.conda#90108a432fb5c6150ccfee3f03388656 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xf86vidmodeproto-2.3.1-h7f98852_1002.tar.bz2#3ceea9668625c18f19530de98b15d5b0 +https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.8-hc47bfe8_16.conda#a8dd2dfcd570e3965c73be6c5e03e74f +https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.9-py310h04931ad_5.conda#f4fe7a6e3d7c78c9de048ea9dda21690 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.8.3-py310hff52083_0.conda#e91d183a307d7bd667003291f690cbb0 +https://conda.anaconda.org/conda-forge/linux-64/nodejs-18.19.0-hb753e55_0.conda#0b4a67051e3b3812818ccf2f4ee2fd4e +https://conda.anaconda.org/conda-forge/noarch/papermill-2.5.0-pyhd8ed1ab_0.conda#e6e69b90afd3d0597da8f1f74cc4bd58 +https://conda.anaconda.org/conda-forge/noarch/pox-0.3.4-pyhd8ed1ab_0.conda#d5502ff0ec33b87f7ab7bc373d0e42ff +https://conda.anaconda.org/conda-forge/noarch/ppft-1.7.6.8-pyhd8ed1ab_0.conda#a104e8b98901dc1bc0b916f7e18b5e39 +https://conda.anaconda.org/conda-forge/noarch/pathos-0.3.2-pyhd8ed1ab_1.conda#22ed208c1b54e7c2ec6616665fba6b0f +https://conda.anaconda.org/conda-forge/noarch/pure-sasl-0.6.2-pyhd8ed1ab_0.tar.bz2#ac695eecf21ab48093bc33fd60b4102d +https://conda.anaconda.org/conda-forge/linux-64/py-xgboost-gpu-1.7.6-py310h9840055_6.conda#f148fc36e36779537fd0845178f8a619 +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_0.conda#7e23a61a7fbaedfef6eb0e1ac775c8e5 +https://conda.anaconda.org/conda-forge/linux-64/thrift-0.19.0-py310hc6cd4ac_1.conda#2e0bde59a8aa215c7402c181c20c9605 +https://conda.anaconda.org/conda-forge/noarch/thrift_sasl-0.4.3-pyhd8ed1ab_2.tar.bz2#0340a97c4990a5bb5ecf1a27fef9f9c3 +https://conda.anaconda.org/conda-forge/noarch/pyhive-0.7.0-pyhd8ed1ab_0.conda#a39884e69ebf0c6454a1f8bac6f8361b +https://conda.anaconda.org/conda-forge/linux-64/pykrb5-0.5.1-py310h98feede_1.conda#0329fda0ebbccee7b3e9dbf4a377d0ce +https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.4-pyha770c72_0.conda#37c47ea93ef00dd80d880fc4ba21256a +https://conda.anaconda.org/conda-forge/noarch/pylint-3.0.4-pyhd8ed1ab_0.conda#d536ee47166d8984c6acd8114ac26cf1 +https://conda.anaconda.org/conda-forge/linux-64/pyspnego-0.9.1-py310h2372a71_2.conda#0a99339b277686c7d824abf9de396901 +https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-24.3.7-pyh59ac667_0.conda#24c1a37849fcd4c74923a38b029b208f +https://conda.anaconda.org/conda-forge/linux-64/python-gssapi-1.8.3-py310h98feede_0.conda#a5ea028f63386c53a2b8ff4d09065259 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-jsonrpc-1.1.2-pyhd8ed1ab_0.conda#ff30dbdb341a54947c4fa183900380b7 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-base-1.10.1-pyhd8ed1ab_0.conda#1371f9394b20fd1fe7419a2aa9b38888 +https://conda.anaconda.org/conda-forge/noarch/pytoolconfig-1.2.5-pyhd8ed1ab_0.conda#2d6bdf5a69cfcd1fcc7f2b900cb4082f +https://conda.anaconda.org/conda-forge/noarch/rope-1.12.0-pyhd8ed1ab_0.conda#5b17bee6351fbe4ae28da178866b2c73 +https://conda.anaconda.org/conda-forge/noarch/whatthepatch-1.0.5-pyhd8ed1ab_0.conda#e62ea65e1979c18c4c9034567e7105c5 +https://conda.anaconda.org/conda-forge/noarch/yapf-0.40.1-pyhd8ed1ab_0.conda#f269942e802d5e148632143d4c37acc9 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-1.10.1-pyhd8ed1ab_0.conda#15b849d7f03b7580a88a3f887db5ad40 +https://conda.anaconda.org/conda-forge/linux-64/pytorch-gpu-2.0.0-cuda112py310h9871d0b_200.conda#7d0ebb619bd0c1a451d167886d2cc904 +https://conda.anaconda.org/conda-forge/noarch/requests-kerberos-0.14.0-pyh707e725_1.conda#411293bff0dc86f9f9bc0c0e1f227623 +https://conda.anaconda.org/conda-forge/linux-64/ripgrep-14.1.0-he8a937b_0.conda#5a476f7033a8a1b9175626b5ebf86d1d +https://conda.anaconda.org/conda-forge/linux-64/sagemaker-code-editor-1.0.0-hcb28a07_0.conda#f53005657267d6b1233c2852fcb84707 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-headless-execution-driver-0.0.12-pyhd8ed1ab_0.conda#fe8919032eb413e76a7802f013a536ee +https://conda.anaconda.org/conda-forge/linux-64/y-py-0.6.2-py310hcb5633a_0.conda#892e912e08ba834aa77ff25f983a4e9e +https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.8.4-pyhd8ed1ab_0.conda#464806d1a3b2c6a88102844c12934038 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-common-0.1.12-pyhd8ed1ab_0.conda#5e9db875cf08e9773aba4176e5c0edbb +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-emr-extension-0.1.9-pyhd8ed1ab_0.conda#589f97989a6db8b2f21a53881fdd1d97 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-0.2.0-pyhd8ed1ab_0.conda#9331340b5a844f5ac2c74eda353aa23e +https://conda.anaconda.org/conda-forge/noarch/sagemaker-kernel-wrapper-0.0.2-pyhd8ed1ab_0.conda#99480997ca2429b75169c896cc988cdb +https://conda.anaconda.org/conda-forge/noarch/schema-0.7.5-pyhd8ed1ab_1.conda#750d2ce4311d1502b51ad814407f043d +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.212.0-pyhd8ed1ab_0.conda#eb07d50e30f7b423929f9081118d3979 +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.0.21-pyhd8ed1ab_0.conda#fa0e9b0ca6c3e96d350711b6dbddaeb6 +https://conda.anaconda.org/conda-forge/linux-64/sasl-0.3.1-py310hd8f1fbe_2.tar.bz2#9b15d1759c99ad57ae43080cfca56d73 +https://conda.anaconda.org/conda-forge/linux-64/supervisor-4.2.5-py310hff52083_2.conda#7fe7fa4d80a99dc44ba15ef3e82707af +https://conda.anaconda.org/conda-forge/noarch/termcolor-2.4.0-pyhd8ed1ab_0.conda#a5033708ad9283907c3b1bc1f90d0d0d +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-base-2.12.1-cuda112py310h1d65785_1.conda#4aa4b1fa72143cf84ff5776275f8b40d +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-estimator-2.12.1-cuda112py310ha5e6de5_1.conda#bb21f985bf64adc3751a3a1578a0a69e +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-2.12.1-cuda112py310h457873b_1.conda#eee4abf81acd7c5205f476838713cfba +https://conda.anaconda.org/conda-forge/linux-64/uvicorn-0.28.0-py310hff52083_0.conda#b9bc890a3389cf5b42a0a5428719cdd0 diff --git a/build_artifacts/v1/v1.6/v1.6.0/patch_glue_pyspark.json b/build_artifacts/v1/v1.6/v1.6.0/patch_glue_pyspark.json new file mode 100644 index 00000000..ab70fd8d --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.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 and Ray", + "env": {"request_origin": "SageMakerStudioPySparkNotebook", "glue_version": "3.0"}, + "language": "python" +} + diff --git a/build_artifacts/v1/v1.6/v1.6.0/patch_glue_spark.json b/build_artifacts/v1/v1.6/v1.6.0/patch_glue_spark.json new file mode 100644 index 00000000..1bd168e7 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.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/v1/v1.6/v1.6.0/source-version.txt b/build_artifacts/v1/v1.6/v1.6.0/source-version.txt new file mode 100644 index 00000000..a73b4325 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.0/source-version.txt @@ -0,0 +1 @@ +1.5.2 \ No newline at end of file diff --git a/build_artifacts/v1/v1.6/v1.6.1/CHANGELOG-cpu.md b/build_artifacts/v1/v1.6/v1.6.1/CHANGELOG-cpu.md new file mode 100644 index 00000000..6cecf401 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/CHANGELOG-cpu.md @@ -0,0 +1,10 @@ +# Change log: 1.6.1(cpu) + +## Upgrades: + +Package | Previous Version | Current Version +---|---|--- +python|3.10.13|3.10.14 +jupyterlab|4.1.4|4.1.5 +notebook|7.1.1|7.1.2 +uvicorn|0.28.0|0.28.1 diff --git a/build_artifacts/v1/v1.6/v1.6.1/CHANGELOG-gpu.md b/build_artifacts/v1/v1.6/v1.6.1/CHANGELOG-gpu.md new file mode 100644 index 00000000..ef64193b --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/CHANGELOG-gpu.md @@ -0,0 +1,9 @@ +# Change log: 1.6.1(gpu) + +## Upgrades: + +Package | Previous Version | Current Version +---|---|--- +jupyterlab|4.1.4|4.1.5 +notebook|7.1.1|7.1.2 +uvicorn|0.28.0|0.28.1 diff --git a/build_artifacts/v1/v1.6/v1.6.1/Dockerfile b/build_artifacts/v1/v1.6/v1.6.1/Dockerfile new file mode 100644 index 00000000..592f2d08 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/Dockerfile @@ -0,0 +1,182 @@ +ARG TAG_FOR_BASE_MICROMAMBA_IMAGE +FROM mambaorg/micromamba:$TAG_FOR_BASE_MICROMAMBA_IMAGE + +ARG CUDA_MAJOR_MINOR_VERSION='' +ARG ENV_IN_FILENAME +ARG ARG_BASED_ENV_IN_FILENAME + +ARG AMZN_BASE="/opt/amazon/sagemaker" +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 + +ENV SAGEMAKER_LOGGING_DIR="/var/log/sagemaker/" +ENV STUDIO_LOGGING_DIR="/var/log/studio/" +ENV EDITOR="nano" + +USER root +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 install -y --no-install-recommends sudo gettext-base wget curl unzip git rsync build-essential openssh-client nano cron less && \ + # 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 && \ + : +RUN echo "source /usr/local/bin/_activate_current_env.sh" | tee --append /etc/profile + +# CodeEditor - create server, user data dirs +RUN 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 + +# Merge in OS directory tree contents. +RUN 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 +RUN 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/ + +# Make sure that $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 + +ARG CONDA_OVERRIDE_CUDA=$CUDA_MAJOR_MINOR_VERSION +RUN micromamba install -y --name base --file /tmp/$ENV_IN_FILENAME && \ + micromamba clean --all --yes --force-pkgs-dirs && \ + rm -rf /tmp/*.in + + +ARG MAMBA_DOCKERFILE_ACTIVATE=1 +RUN sudo ln -s $(which python3) /usr/bin/python + +# Configure CodeEditor - Install extensions and set preferences +RUN \ + 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 + +# Install glue kernels, and move to shared directory +# Also patching base kernel so Studio background code doesn't start session silently +RUN 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" + + +# 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 +RUN 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* + +# 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} + +# Clean up CodeEditor artifacts +RUN rm -rf /etc/code-editor + +# Create supervisord runtime directory +RUN mkdir -p /var/run/supervisord && \ + chmod a+rw /var/run/supervisord + +USER $MAMBA_USER +ENV PATH="/opt/conda/bin:/opt/conda/condabin:$PATH" +WORKDIR "/home/${NB_USER}" + +# 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/ +RUN 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://www.openssl.org/source/openssl-$FIPS_VALIDATED_SSL.tar.gz > openssl-$FIPS_VALIDATED_SSL.tar.gz && \ + curl -L https://www.openssl.org/source/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 +RUN 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 +ENV OPENSSL_MODULES=/opt/conda/lib64/ossl-modules/ + +# Install Kerberos. +# Make sure no dependency is added/updated +RUN 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 +RUN 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 + +ENV SHELL=/bin/bash diff --git a/build_artifacts/v1/v1.6/v1.6.1/RELEASE.md b/build_artifacts/v1/v1.6/v1.6.1/RELEASE.md new file mode 100644 index 00000000..41bc60ba --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/RELEASE.md @@ -0,0 +1,56 @@ +# Release notes: 1.6.1 + +Package | gpu| cpu +---|---|--- +python|3.10.13|3.10.14 +numpy|1.26.4|1.26.4 +jinja2|3.1.3|3.1.3 +pandas|2.1.4|2.1.4 +altair|5.2.0|5.2.0 +boto3|1.34.51|1.34.51 +ipython|8.22.2|8.22.2 +jupyter-lsp|2.2.4|2.2.4 +jupyterlab|4.1.5|4.1.5 +amazon-codewhisperer-jupyterlab-ext|2.0.1|2.0.1 +jupyter-scheduler|2.5.1|2.5.1 +amazon-sagemaker-jupyter-scheduler|3.0.7|3.0.7 +amazon-sagemaker-sql-magic|0.1.0|0.1.0 +jupyterlab-lsp|5.0.3|5.0.3 +amazon_sagemaker_sql_editor|0.1.3|0.1.3 +scipy|1.11.4|1.11.4 +scikit-learn|1.4.1.post1|1.4.1.post1 +pip|23.3.2|23.3.2 +torchvision|0.15.2|0.15.2 +autogluon|0.8.2|0.8.2 +ipywidgets|8.1.2|8.1.2 +notebook|7.1.2|7.1.2 +aws-glue-sessions|1.0.4|1.0.4 +conda|23.11.0|23.11.0 +fastapi|0.103.2|0.103.2 +langchain|0.1.9|0.1.9 +jupyter-ai|2.11.0|2.11.0 +jupyter-dash|0.4.2|0.4.2 +jupyter-server-proxy|4.1.2|4.1.2 +jupyterlab-git|0.50.0|0.50.0 +keras|2.12.0|2.12.0 +matplotlib|3.8.3|3.8.3 +nodejs|18.19.0|18.19.0 +py-xgboost-gpu|1.7.6| +thrift_sasl|0.4.3|0.4.3 +pyhive|0.7.0|0.7.0 +python-gssapi|1.8.3|1.8.3 +python-lsp-server|1.10.1|1.10.1 +pytorch-gpu|2.0.0| +sagemaker-code-editor|1.0.0|1.0.0 +sagemaker-headless-execution-driver|0.0.12|0.0.12 +sagemaker-jupyterlab-emr-extension|0.1.9|0.1.9 +sagemaker-jupyterlab-extension|0.2.0|0.2.0 +sagemaker-kernel-wrapper|0.0.2|0.0.2 +sagemaker-python-sdk|2.212.0|2.212.0 +sagemaker-studio-analytics-extension|0.0.21|0.0.21 +sasl|0.3.1|0.3.1 +supervisor|4.2.5|4.2.5 +tensorflow|2.12.1|2.12.1 +uvicorn|0.28.1|0.28.1 +pytorch| |2.0.0 +py-xgboost-cpu| |1.7.6 diff --git a/build_artifacts/v1/v1.6/v1.6.1/cpu.env.in b/build_artifacts/v1/v1.6/v1.6.1/cpu.env.in new file mode 100644 index 00000000..40283676 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/cpu.env.in @@ -0,0 +1,51 @@ +# This file is auto-generated. +conda-forge::sagemaker-code-editor[version='>=1.0.0,<1.1.0'] +conda-forge::amazon_sagemaker_sql_editor[version='>=0.1.3,<0.2.0'] +conda-forge::amazon-sagemaker-sql-magic[version='>=0.1.0,<0.2.0'] +conda-forge::langchain[version='>=0.1.9,<0.2.0'] +conda-forge::fastapi[version='>=0.103.2,<0.104.0'] +conda-forge::uvicorn[version='>=0.28.0,<0.29.0'] +conda-forge::pytorch[version='>=2.0.0,<2.1.0'] +conda-forge::tensorflow[version='>=2.12.1,<2.13.0'] +conda-forge::python[version='>=3.10.13,<3.11.0'] +conda-forge::pip[version='>=23.3.2,<23.4.0'] +conda-forge::torchvision[version='>=0.15.2,<0.16.0'] +conda-forge::numpy[version='>=1.26.4,<1.27.0'] +conda-forge::pandas[version='>=2.1.4,<2.2.0'] +conda-forge::scikit-learn[version='>=1.4.1.post1,<1.5.0'] +conda-forge::jinja2[version='>=3.1.3,<3.2.0'] +conda-forge::matplotlib[version='>=3.8.3,<3.9.0'] +conda-forge::sagemaker-headless-execution-driver[version='>=0.0.12,<0.1.0'] +conda-forge::ipython[version='>=8.22.2,<8.23.0'] +conda-forge::scipy[version='>=1.11.4,<1.12.0'] +conda-forge::keras[version='>=2.12.0,<2.13.0'] +conda-forge::py-xgboost-cpu[version='>=1.7.6,<1.8.0'] +conda-forge::jupyterlab[version='>=4.1.4,<4.2.0'] +conda-forge::ipywidgets[version='>=8.1.2,<8.2.0'] +conda-forge::conda[version='>=23.11.0,<23.12.0'] +conda-forge::boto3[version='>=1.34.51,<1.35.0'] +conda-forge::sagemaker-python-sdk[version='>=2.212.0,<2.213.0'] +conda-forge::supervisor[version='>=4.2.5,<4.3.0'] +conda-forge::autogluon[version='>=0.8.2,<0.9.0'] +conda-forge::aws-glue-sessions[version='>=1.0.4,<1.1.0'] +conda-forge::sagemaker-kernel-wrapper[version='>=0.0.2,<0.1.0'] +conda-forge::jupyter-ai[version='>=2.11.0,<2.12.0'] +conda-forge::jupyter-scheduler[version='>=2.5.1,<2.6.0'] +conda-forge::nodejs[version='>=18.19.0,<18.20.0'] +conda-forge::jupyter-lsp[version='>=2.2.4,<2.3.0'] +conda-forge::jupyterlab-lsp[version='>=5.0.3,<5.1.0'] +conda-forge::python-lsp-server[version='>=1.10.1,<1.11.0'] +conda-forge::notebook[version='>=7.1.1,<7.2.0'] +conda-forge::altair[version='>=5.2.0,<5.3.0'] +conda-forge::sagemaker-studio-analytics-extension[version='>=0.0.21,<0.1.0'] +conda-forge::jupyter-dash[version='>=0.4.2,<0.5.0'] +conda-forge::sagemaker-jupyterlab-extension[version='>=0.2.0,<0.3.0'] +conda-forge::sagemaker-jupyterlab-emr-extension[version='>=0.1.9,<0.2.0'] +conda-forge::amazon-sagemaker-jupyter-scheduler[version='>=3.0.7,<3.1.0'] +conda-forge::jupyter-server-proxy[version='>=4.1.2,<4.2.0'] +conda-forge::amazon-codewhisperer-jupyterlab-ext[version='>=2.0.1,<2.1.0'] +conda-forge::jupyterlab-git[version='>=0.50.0,<0.51.0'] +conda-forge::sasl[version='>=0.3.1,<0.4.0'] +conda-forge::thrift_sasl[version='>=0.4.3,<0.5.0'] +conda-forge::pyhive[version='>=0.7.0,<0.8.0'] +conda-forge::python-gssapi[version='>=1.8.3,<1.9.0'] diff --git a/build_artifacts/v1/v1.6/v1.6.1/cpu.env.out b/build_artifacts/v1/v1.6/v1.6.1/cpu.env.out new file mode 100644 index 00000000..fbb0f6d0 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/cpu.env.out @@ -0,0 +1,662 @@ +# 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/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_5.conda#d4ff227c46917d3b4565302a2bbb276b +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda#f36c115f1ee199da648e0597ec2047ad +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_5.conda#f6f6600d18a4047b54f803cf708b868a +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.5-hfc55251_0.conda#04b88013080254850d6c01ed54810589 +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-18.1.1-h4dfa4b3_0.conda#89023cfc92c7e9dd2e822ebdb4f753b0 +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#562b26ba2e19059551a811e72ab7f793 +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/bzip2-1.0.8-hd590300_5.conda#69b8b6202a07720f448be700e300ccf4 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda#7aca3059a1729aa76c597603f10b0dd3 +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3 +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda#30fd6e37fe21f86f4bd26d6ee73eeec7 +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.45.2-h2797004_0.conda#866983a220e27a80cb75e85cb30466a1 +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.4.20240210-h59595ed_0.conda#97da8860a0da5413c7c98a3b3838a645 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.2.2-hbcca054_0.conda#2f4327a1cbe7f022401b236e915a5fef +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.2.1-hd590300_1.conda#9d731343cff6ee2e5a25c4a091bf8e2a +https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4 +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-2024a-h0c530f3_0.conda#161081fc7cec0bfda0d86d7cb595f8d8 +https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0 +https://conda.anaconda.org/conda-forge/linux-64/python-3.10.14-hd12c33a_0_cpython.conda#2b4ba962994e8bd4be9ff5b64b75aff2 +https://conda.anaconda.org/conda-forge/noarch/absl-py-2.1.0-pyhd8ed1ab_0.conda#035d1d58677c13ec93122d9eb6b8803b +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_5.conda#7a6bd7a12a4bd359e2afe6c0fa1acace +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_5.conda#e73e9cfd1191783392131e6238bdb3e9 +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.25-pthreads_h413a1c8_0.conda#d172b34a443b95f86089e8229ddc9a17 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-20_linux64_openblas.conda#2b7bb4f7562c8cf334fc2e20c2d28abc +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-20_linux64_openblas.conda#36d486d72ab64ffea932329a1d3729a3 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-20_linux64_openblas.conda#6fabc51f5e647d09cc010c40061557e0 +https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.10-4_cp310.conda#26322ec5d7712c3ded99dd656142b8ce +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py310hb13e2d6_0.conda#6593de64c935768b6bad3e19b3e978be +https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda#79002079284aa895f883c6b7f3f88fd6 +https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.8-py310h2372a71_0.conda#bd19b3096442ea342c4a5208379660b1 +https://conda.anaconda.org/conda-forge/noarch/filelock-3.13.1-pyhd8ed1ab_0.conda#0c1729b74a8152fde6a38ba0a2ab9f45 +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py310h2372a71_0.conda#f6703fa0214a00bf49d1bef6dc7672d0 +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.3-pyhd8ed1ab_0.conda#e7d8df6509ba635247ff9aea31134262 +https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-3.21.12-hfc55251_2.conda#e3a7d4ba09b8dc939b98fef55f539220 +https://conda.anaconda.org/conda-forge/linux-64/libuv-1.46.0-hd590300_0.conda#d23c76f7e6dcd6243d1b6ef5e62d17d2 +https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda#cc47e1facc155f91abd89b11e48e72ff +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda#d66573916ffcf376178462f1b61c941e +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.6-h232c23b_0.conda#d86653ff5ccb88bf7f13833fdd8789e0 +https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.9.3-default_h554bfaf_1009.conda#f36ddc11ca46958197a45effdd286e45 +https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.11.0-h00ab1b0_1.conda#4531d2927578e7e254ff3bcf6457518c +https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.2.1-h84fe81f_16997.conda#a7ce56d5757f5b57e7daabe703ade5bb +https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda#425fce3b531bed6ec3c74fab3e5f0a1c +https://conda.anaconda.org/conda-forge/linux-64/sleef-3.5.1-h9b69904_2.tar.bz2#6e016cf4c525d04a7bd038cee53ad3fd +https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-h59595ed_1.conda#e358c7c5f6824c272b5034b3816438a7 +https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h9458935_0.conda#4c28f3210b30250037a4a627eeee9e0f +https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-hfe3b2da_0.conda#289c71e83dc0daa7d4c81f04180778ca +https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.2-py310h3ec546c_1.tar.bz2#73f6fa50c32ddd985cf5fba7b890a75c +https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_0.conda#dbf6e2d89137da32fa6670f3bffc024e +https://conda.anaconda.org/conda-forge/noarch/sympy-1.12-pypyh9d50eac_103.conda#2f7d6347d7acf6edf1ac7f2189f44c8f +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.5.0-pyha770c72_0.conda#43e7d9e50261fb11deb76e17d8431aac +https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.0.0-cpu_mkl_py310h402c8e3_101.conda#b351ffe4cd1b8337abfa88833cf60f25 +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.1-py310h2372a71_1.conda#bb010e368de4940771368bc3dc4c63e7 +https://conda.anaconda.org/conda-forge/noarch/accelerate-0.21.0-pyhd8ed1ab_0.conda#172fa1bba08cd6b431a1739090ab0ffc +https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.1-py310h2372a71_0.conda#f20cd4d9c1f4a8377d0818c819918bbb +https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2#d1e1eb7e21a9e2c74279d87dafb68156 +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.5.0-hd8ed1ab_0.conda#b3c594fde1a80a1fc3eb9cc4a5dfe392 +https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda#3ce482ec3066e6d809dbbb1d1679f215 +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.0.5-py310h2372a71_0.conda#d4c91d19e4f2f18b64753ac660edad79 +https://conda.anaconda.org/conda-forge/noarch/idna-3.6-pyhd8ed1ab_0.conda#1a76f09108576397c41c0b0c5bd84134 +https://conda.anaconda.org/conda-forge/linux-64/yarl-1.9.4-py310h2372a71_0.conda#4ad35c8f6a64a6ab708780dad603aef4 +https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.9.3-py310h2372a71_1.conda#dd21c88dfec3253cb9888c0e93fa5cd1 +https://conda.anaconda.org/conda-forge/noarch/aioitertools-0.11.0-pyhd8ed1ab_0.tar.bz2#59c40397276a286241c65faec5e1be3c +https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_0.tar.bz2#2cfa3e1cf3fb51bb9b17acc5b5e9ea11 +https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda#2cf4264fffb9e6eff6031c5b6884d61c +https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.0.9-py310hd8f1fbe_9.conda#e2047ad2af52c01845f58b580c6cbd5c +https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025 +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.18-pyhd8ed1ab_0.conda#bf61cfd2a7f212efba378167a07d4a6a +https://conda.anaconda.org/conda-forge/noarch/botocore-1.34.51-pyge310_1234567_0.conda#f8980578a765dd28417953dddfefe5bc +https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py310h2372a71_0.conda#d9dc9c45bdc2b38403e6b388581e92f0 +https://conda.anaconda.org/conda-forge/noarch/aiobotocore-2.12.1-pyhd8ed1ab_0.conda#045560daef58c75a759c2638fbdb5c6a +https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8 +https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.11-hd590300_1.conda#0bb492cca54017ea314b809b1ee3a176 +https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda#2e4d6bc0b14e10f895fc6791a7d9b26a +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.10.0-pyha770c72_0.conda#ae2ad334f34040e147cc5824b450463b +https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.3.2-pyhd8ed1ab_0.conda#bb8086d3dd1b2cfeebd15f9a7e56f7bd +https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda#405678b942f2481cecdb3e010f4925d9 +https://conda.anaconda.org/conda-forge/linux-64/pyrsistent-0.20.0-py310h2372a71_0.conda#e7f8dc8c62e136573c84116a5e743aed +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.17.3-pyhd8ed1ab_0.conda#723268a468177cd44568eb8f794e0d80 +https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda#98206ea9954216ee7540f0c773f2104d +https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3-pyhd8ed1ab_0.conda#d3076b483092a435832603243567bc31 +https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.4-py310hcc13569_0.conda#410f7e83992a591e492c25049a859254 +https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.1-pyhd8ed1ab_0.conda#2fcb582444635e2c402e8569bb94e039 +https://conda.anaconda.org/conda-forge/noarch/altair-5.2.0-pyhd8ed1ab_1.conda#1aebb1cef46d9cb76e0d38eed822348a +https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.10.1-pyhd8ed1ab_0.conda#a41cafc1fb653ce0e48b9310226e90fd +https://conda.anaconda.org/conda-forge/noarch/boto3-1.34.51-pyhd8ed1ab_0.conda#bd19311f73611626b31afc608af438cd +https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda#3d081de3a6ea9f894bbb585e8e3a4dcb +https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda#8d652ea2ee8eaee02ed8dc820bc794aa +https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda#490730480d76cf9c8f8f2849719c6e2b +https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda#7b517e7a6f0790337906c055aa97ca49 +https://conda.anaconda.org/conda-forge/noarch/certifi-2024.2.2-pyhd8ed1ab_0.conda#0876280e409658fc6f9e75d035960333 +https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2#b21ed0883505ba1910994f1df031a428 +https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2#914d6646c4dbb1fd3ff539830a12fd71 +https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2#9f765cbfab6870c8435b9eefecd7a1f4 +https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2#b748fbf7060927a6e82df7cb5ee8f097 +https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.4-pyhd8ed1ab_0.conda#20f047662cf4fa8b97836111df87dbb4 +https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda#9f359af5a886fd6ca6b2b6ea02e58332 +https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.10.0-hd8ed1ab_0.conda#c063ddbb9908499fd4f20b31dc67065a +https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.2-pyhd8ed1ab_0.conda#af5fa2d2186003472e766a23c46cae04 +https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda#948d84721b578d426294e17a02e24cbb +https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.1-py310hc6cd4ac_0.conda#1ea80564b80390fa25da16e4211eb801 +https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364 +https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094 +https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda#81a3be0b2023e1ea8555781f0ad904a2 +https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2#b21613793fcc81d944c76c9f2864a7de +https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263 +https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda#629f3203c99b32e0988910c93e77f3b6 +https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761 +https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda#68f0738df502a14213624b288c60c9ad +https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.42-pyha770c72_0.conda#0bf64bf10eee21f46ac83c161917fa86 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.17.2-pyhd8ed1ab_0.conda#140a7f159396547e9799aa98f9f0742e +https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda#5f25798dcefd8252ce5f9dc494d5f571 +https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda#e16be50e378d8a4533b989035b196ab8 +https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2#6784285c7e55cb7212efabc79e4c2883 +https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda#e7df0fdd404616638df5ece6e69ba7af +https://conda.anaconda.org/conda-forge/noarch/ipython-8.22.2-pyh707e725_0.conda#f0abe827c8a7c6d91bccdf90cb1fbee3 +https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.2.0-pyhd8ed1ab_0.conda#a0bc3eec34b0fab84be6b2da94e98e20 +https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.7.2-py310hff52083_0.conda#cb92c27600d5716fd526a206aa43342c +https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2#c3788462a6fbddafdb413a9f9053e58d +https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h59595ed_1.conda#7fc9d3288d2420bb3637647621018000 +https://conda.anaconda.org/conda-forge/linux-64/pyzmq-25.1.2-py310h795f18f_0.conda#fa09f98f3acfd3f5de30bd2d27d5cb7f +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4-py310h2372a71_0.conda#48f39c24349d9ae5c8e8873c42fb6170 +https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.1-pyhd8ed1ab_0.conda#c03972cfce69ad913d520c652e5ed908 +https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda#6598c056f64dc8800d40add25e4e2c34 +https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.3-pyhd33586a_0.conda#e0deff12c601ce5cb7476f93718f3168 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py310h2fee648_0.conda#45846a970e71ac98fd327da5d40a0a2c +https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py310h2372a71_4.conda#68ee85860502d53c8cbfa0e4cef0f6cb +https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda#3afef1f55a1366b4d3b6a0d92e2235e4 +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_0.tar.bz2#642d35437078749ef23a5dca2c9bb1f3 +https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20240316-pyhd8ed1ab_0.conda#7831efa91d57475373ee52fb92e8d137 +https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda#b77d8c2313158e6e461ca0efb1c2c508 +https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2#4cb68948e0b8429534380243d063a27a +https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-2.4-py310hff52083_3.conda#08ec1463dbc5c806a32fc431874032ca +https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2#fed45fc5ea0813240707998abe49f520 +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_0.conda#0944dc65cb4a9b5b68522c3bb585d41c +https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda#166212fe82dad8735550030488a01d03 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.17.3-pyhd8ed1ab_0.conda#7a709748e93f0b2c33d6b5b676b6d9d0 +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.6.3-pyhd8ed1ab_1.conda#2ac0d00a0fb3f1a4c81c460ba56bb23b +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_0.conda#219b3833aa8ed91d47d1be6ca03f30be +https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda#3f144b2c34f8cb5a9abd9ed23a39c561 +https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda#332493000404d8411859539a5a630865 +https://conda.anaconda.org/conda-forge/noarch/setuptools-69.2.0-pyhd8ed1ab_0.conda#da214ecd521a720a9d521c68047682dc +https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda#daf5160ff9cde3a468556965329085b9 +https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda#0ed9d7c0e9afa7c025807a9a8136ea3e +https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 +https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda#afcd1b53bcac8844540358e33f33d28f +https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda#5cbee699846772cc939bef23a0d524ed +https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.19.1-pyhd8ed1ab_0.conda#4d3ceee3af4b0f9a1f48f57176bf8625 +https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.3-pyhd8ed1ab_0.conda#ca3d437c0ef2e87f63d085822c74c49a +https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda#15b51397e0fe8ea7d7da60d83eb76ebc +https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9 +https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.2-pyhd8ed1ab_0.conda#5ab3248dd05c543dc631276455ef6a54 +https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2#eb67e3cace64c66233e2d35949e20f92 +https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda#24fba5a9d161ad8103d4e84c0e1a3ed4 +https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda#9a19b94034dd3abb2b348c8b93388035 +https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyh41d4057_0.conda#ada5a17adcd10be4fc7e37e4166ba0e2 +https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.7.0-pyhd8ed1ab_0.conda#50ad31e07d706aae88b14a4ac9c73f23 +https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.10.0-pyhd8ed1ab_0.conda#016d56f5d81b9364d1da5f4895a2a9f8 +https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.4-pyhd8ed1ab_0.conda#91f93e1ebf6535be518715432d89fd92 +https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda#9669586875baeced8fc30c0826c3270e +https://conda.anaconda.org/conda-forge/noarch/json5-0.9.24-pyhd8ed1ab_0.conda#fc9780a517b51ea3798fc011c17ffd51 +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda#7f4a9e3fcff3f6356ae99244a014da6a +https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda#a30144e4156cdbb236f99ebb49828f8b +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.24.0-pyhd8ed1ab_0.conda#327bfe1c99154f02259d29810bd70afc +https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda#3d85618e2c97ab896b5b5e298d32b5b3 +https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.1.5-pyhd8ed1ab_0.conda#04b1ca9d7ac414b3f5c3fb16066c6861 +https://conda.anaconda.org/conda-forge/noarch/amazon-codewhisperer-jupyterlab-ext-2.0.1-pyhd8ed1ab_0.conda#ab9bb3e630d872e9d38c8c18a0cba7b4 +https://conda.anaconda.org/conda-forge/noarch/aws-embedded-metrics-3.2.0-pyhd8ed1ab_0.conda#e1c511655b6e9eb0265c9715c7fa410f +https://conda.anaconda.org/conda-forge/noarch/croniter-1.4.1-pyhd8ed1ab_0.conda#7a4568626f8d6e7c63dcb25d5501a967 +https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.6.0-pyh1a96a4e_0.conda#50ea2067ec92dfcc38b4f07992d7e235 +https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.1.12.3-ha770c72_0.conda#cdea66892b19a454f939487318b6c517 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.2-pyhd8ed1ab_0.conda#7a0bfebd69213722427cb61b077b4187 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.2-pyhd8ed1ab_0.conda#e14e35cc4a5c90694bb41c5317b576a8 +https://conda.anaconda.org/conda-forge/linux-64/pydantic-1.10.14-py310h2372a71_0.conda#6aca52bad315e6b841a32d6b3b0cdb82 +https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.3-py310hc6cd4ac_0.conda#fb478fd83c001cbf8ab01c29b857262e +https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-1.4.49-py310h2372a71_1.conda#cdeaf46006791202a7597bf2a0e6ad9e +https://conda.anaconda.org/conda-forge/noarch/jupyter_scheduler-2.5.1-pyha770c72_0.conda#3d250834fde789b6cb96dc11a43d1df2 +https://conda.anaconda.org/conda-forge/noarch/jupyter-scheduler-2.5.1-hd8ed1ab_0.conda#bb6463ad5d244321f64a231ba9b6cf2a +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-jupyter-scheduler-3.0.7-pyhd8ed1ab_1.conda#ee635c11a576839138a93fc46e0f389b +https://conda.anaconda.org/conda-forge/linux-64/cryptography-42.0.5-py310h75e40e8_0.conda#47e6ea7109182e9e48f8c5839f1bded7 +https://conda.anaconda.org/conda-forge/noarch/tenacity-8.2.3-pyhd8ed1ab_0.conda#1482e77f87c6a702a7e05ef22c9b197b +https://conda.anaconda.org/conda-forge/noarch/pyathena-3.5.1-pyhd8ed1ab_0.conda#1c302abfabf4d08375990de11ff98242 +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-4.9.4-py310hcfd0673_0.conda#d6df7beac08573177dd9a6a560d1d180 +https://conda.anaconda.org/conda-forge/noarch/asn1crypto-1.5.1-pyhd8ed1ab_0.tar.bz2#f3f2ab3ce28979a24d1a988ba211eb9b +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.0-pyhd8ed1ab_0.conda#4501c96a5e9f18239ae6e5944604d493 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-execution-0.1.2-pyhd8ed1ab_0.conda#a16fa2f5c791f94b459acd5c34ab8670 +https://conda.anaconda.org/conda-forge/noarch/sqlparse-0.4.4-pyhd8ed1ab_0.conda#2e2f31b3b1c866c29636377e14f8c4c6 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-magic-0.1.0-pyhd8ed1ab_0.conda#4fd1875033a6ca132d227f3587415fd5 +https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_0.conda#4c33109f652b5d8c995ab243436c9370 +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.3-pyhd8ed1ab_0.conda#6618ce22c81277d6ebaa45364c9d6b76 +https://conda.anaconda.org/conda-forge/linux-64/ansi2html-1.9.1-py310hff52083_0.conda#2213ea76fd340e7c848c1be0cbdfc579 +https://conda.anaconda.org/conda-forge/noarch/textwrap3-0.9.2-py_0.tar.bz2#1f84e74e9dbe2e5ae38c58496bffaca8 +https://conda.anaconda.org/conda-forge/noarch/ansiwrap-0.8.4-py_0.tar.bz2#f09557e2a7cbd2470a2ab6353000cebd +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.5.0-h27087fc_0.tar.bz2#a08150fd2298460cd1fcccf626305642 +https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.3-pyhd8ed1ab_0.conda#192278292e20704f663b9c766909d67b +https://conda.anaconda.org/conda-forge/linux-64/astroid-3.0.3-py310hff52083_0.conda#7d18b84331cda8271c9ed67d1ca05d47 +https://conda.anaconda.org/conda-forge/noarch/astunparse-1.6.3-pyhd8ed1ab_0.tar.bz2#000b6f68a0bfaba800ced7500c11780f +https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.43-hcad00b1_0.conda#8292dea9e022d9610a11fce5e0896ed8 +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.0-hf2295e7_1.conda#0725f6081030c29b109088639824ff90 +https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-hd4edc92_1.tar.bz2#6c72ec3e660a51736913ef6ea68c454b +https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2#d9c69a24ad678ffce24c6543a0176b00 +https://conda.anaconda.org/conda-forge/noarch/autogluon.common-0.8.2-pyhd8ed1ab_4.conda#e24166dee3b1430877a324715caf8f5d +https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.0-py310hd41b1e2_0.conda#85d2aaa7af046528d339da1e813c3a9f +https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda#5cd86562580f274031ede6aa6aa24441 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_9.conda#61641e239f96eae2b8492dc7e755828c +https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.0.9-h166bdaf_9.conda#081aa22f4581c08e4372b0b6c2f8478e +https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.0.9-h166bdaf_9.conda#1f0a03af852a9659ed2bf08f2f1704fd +https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_9.conda#d47dee1856d9cb955b8076eeff304a5b +https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_9.conda#4601544b4982ba1861fa9b9c607b2c06 +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-15.1.0-py310h2372a71_0.conda#72637c58d36d9475fda24700c9796f19 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.50.0-py310h2372a71_0.conda#85c48c98c9f2b72b384fb11c9004920b +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda#009981dd9cfcaa4dbfa25ffaed86bcae +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py310hd41b1e2_1.conda#b8d67603d43b23ce7e988a5d81a7ab79 +https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-2.1.5.1-hd590300_1.conda#323e90742f0f48fc22bea908735f55e6 +https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2#76bbff344f0134279f225174e9064c8f +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.18-h0b41bf4_0.conda#6aa9c9de5542ecb07fdda9ca626252d8 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.3.1-hd590300_0.conda#82bf6f63eb15ef719b556b63feec3a77 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.5.1-h8b53f26_1.conda#5b09e13d732dda1a2bc9adc711164f4d +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-haa2dc70_1.conda#980d8aca0bc23ca73fa8caa3e7c84c28 +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda#2c80dc38fface310c9bd81b17037fee5 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.15-h0b41bf4_0.conda#33277193f5b92bad9fdd230eb700929c +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.0-hfec8fc6_2.conda#5ce6a42505c6e9e6151c54c3ec8d68ea +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.5.0-py310h582fbeb_1.conda#cf62f6cff3536eafaaa0c740b0bf7465 +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda#b9a4dacf97241704529131a0dfc0494f +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.3-py310h62c0568_0.conda#4a7296c0273eb01dfbed728dd6a6725a +https://conda.anaconda.org/conda-forge/noarch/joblib-1.3.2-pyhd8ed1ab_0.conda#4da50d410f553db77e62ab62ffaa1abc +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.11.4-py310hb13e2d6_0.conda#f0063b2885bfae11324a00a693f88781 +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.3.0-pyhc1e730c_0.conda#698d2d2b621640bddb9191f132967c9f +https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.4.1.post1-py310h1fdf081_0.conda#2706ad1a5f6cbad8b57d4094889d1e33 +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2#3faab06a954c2a04039983f2c4a50d99 +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.2-pyhd8ed1ab_0.conda#2b8dfb969f984497f3f98409a9545776 +https://conda.anaconda.org/conda-forge/linux-64/autogluon.core-0.8.2-light_py310h2d11d36_6.conda#9de8e45568202a91466af4d849c7e919 +https://conda.anaconda.org/conda-forge/noarch/autogluon.features-0.8.2-pyhd8ed1ab_3.conda#c827eccfb0ddb1484d0e00f45242b8f8 +https://conda.anaconda.org/conda-forge/linux-64/chardet-5.2.0-py310hff52083_1.conda#a677136a83b823803d2f92045f885be2 +https://conda.anaconda.org/conda-forge/noarch/binaryornot-0.4.4-py_1.tar.bz2#a556fa60840fcb9dd739d186bfd252f7 +https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda#f3ad426304898027fc619827ff428eca +https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_1.conda#ba8aba332d8868897ce44ad74015a7fe +https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_0.conda#4b11845622b3c3178c0e989235b53975 +https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda#776a8dd9e824f77abac30e6ef43a8f7a +https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda#93a8e71256479c62074356ef6ebf501b +https://conda.anaconda.org/conda-forge/noarch/rich-13.7.1-pyhd8ed1ab_0.conda#ba445bf767ae6f0d959ff2b40c20912b +https://conda.anaconda.org/conda-forge/noarch/cookiecutter-2.6.0-pyhca7485f_0.conda#d6260b53b9db90017321af0b45cc00da +https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda#78745f157d56877a2c6e7b386f66f3e2 +https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.21.4-pyhd8ed1ab_0.conda#d47cf217a7bcc3a03dd1c6169c3f0f98 +https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py310h2372a71_0.conda#efdca5c3783dae00552f389bd7b56c3d +https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.0-hd590300_0.conda#71b89db63b5b504e7afc8ad901172e1e +https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.1-hc309b26_1.conda#cc09293a2c2b7fd77aff284f370c12c0 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-h4d4d85c_2.conda#9ca99452635fe03eb5fa937f5ae604b0 +https://conda.anaconda.org/conda-forge/linux-64/s2n-1.3.49-h06160fa_0.conda#1d78349eb26366ecc034a4afe70a8534 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.32-he9a53bd_1.conda#8a24e5820f4a0ffd2ed9c4722cd5d7ca +https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.7.11-h00aa349_4.conda#cb932dff7328ff620ce8059c9968b095 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-h4d4d85c_1.conda#eba092fc6de212a01de0065f38fe8bbb +https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.3-h28f7589_1.conda#97503d3e565004697f1651753aa95b9e +https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.17-h4d4d85c_1.conda#30f9df85ce23cd14faa9a4dfa50cca2b +https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.3.1-h2e3709c_4.conda#2cf21b1cbc1c096a28ffa2892257a2c1 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.9.3-hb447be9_1.conda#c520669eb0be9269a5f0d8ef62531882 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.14-hf3aad02_1.conda#a968ffa7e9fe0c257628033d393e512f +https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.21.0-hb942446_5.conda#07d92ed5403ad7b5c66ffd7d5b8f7e57 +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.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.2-h659d440_0.conda#cd95826dbd331ed1be26bdf401432844 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.27.0-hd590300_0.conda#f6afff0e9ee08d2f1b897881a4f38cdb +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.58.0-h47da74e_1.conda#700ac6ea6d53d5510591c4344d5c989a +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda#1f5a58e686b13bcfde88b93f547d23fe +https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.6.0-hca28451_0.conda#704739398d858872cb91610f49f0ef29 +https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.10.57-h85b1a90_19.conda#0605d3d60857fc07bd6a11e878fe0f08 +https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-he1b5a44_1004.tar.bz2#cddaf2c63ea4a5901cf09524c490ecdc +https://conda.anaconda.org/conda-forge/linux-64/glog-0.6.0-h6f12383_0.tar.bz2#b31f3565cb84435407594e548a2fb7b2 +https://conda.anaconda.org/conda-forge/linux-64/libabseil-20230125.3-cxx17_h59595ed_0.conda#d1db1b8be7c3a8983dcbbbfe4f0765de +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/re2-2023.03.02-h8c504da_0.conda#206f8fa808748f6e90599c3368a1114e +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.conda#68c34ec6149623be41a1933ab996a209 +https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.54.3-hb20ce57_0.conda#7af7c59ab24db007dfd82e0a3a343f66 +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.12.0-hac9eb74_1.conda#0dee716254497604762957076ac76540 +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.18.1-h8fd135c_2.conda#bbf65f7688512872f063810623b755dc +https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2#ede4266dc02e875fe1ea77b25dd43747 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda#318b08df404f9c9be5712aaa5a6f0bb0 +https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.10-h9fff704_0.conda#e6d228cd0bb74a51dd18f5bfce0b4115 +https://conda.anaconda.org/conda-forge/linux-64/orc-1.9.0-h2f23424_1.conda#9571eb3eb0f7fe8b59956a7786babbcd +https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-hd590300_0.conda#8feeecae73aeef0a2985af46b5a2c1df +https://conda.anaconda.org/conda-forge/linux-64/rdma-core-28.9-h59595ed_1.conda#aeffb7c06b5f65e55e6c637408dc4100 +https://conda.anaconda.org/conda-forge/linux-64/ucx-1.14.1-h64cca9d_5.conda#39aa3b356d10d7e5add0c540945a0944 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-12.0.1-hb87d912_8_cpu.conda#3f3b11398fe79b578e3c44dd00a44e4a +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-12.0.1-py310h0576679_8_cpu.conda#27f55ccfd038d6665facb04a0aa572c5 +https://conda.anaconda.org/conda-forge/noarch/pyarrow-hotfix-0.6-pyhd8ed1ab_0.conda#ccc06e6ef2064ae129fab3286299abda +https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda#f08fb5c89edfc4aadee1c81d4cfb1fa1 +https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.4.1-py310h2372a71_0.conda#b631b889b0b4bc2fca7b8b977ca484b2 +https://conda.anaconda.org/conda-forge/noarch/datasets-2.18.0-pyhd8ed1ab_0.conda#3482c9b417757df305ff4e3a7e4b7c10 +https://conda.anaconda.org/conda-forge/noarch/responses-0.18.0-pyhd8ed1ab_0.tar.bz2#a10d30e613a2a1a78a89ceadf3832e7c +https://conda.anaconda.org/conda-forge/noarch/evaluate-0.4.1-pyhd8ed1ab_0.conda#ea228540526db4dde8ad8f2309bc1d40 +https://conda.anaconda.org/conda-forge/noarch/gdown-5.1.0-pyhd8ed1ab_0.conda#6f880647c0270648f710f334c60bc76c +https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.1.99-h180e1df_0.conda#056064bd3ef47439e3e78fac28449fbf +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.1.99-py310hebdb9f0_0.conda#b3a5908ac3912b26d6a8b77faebe6eca +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.1.99-h180e1df_0.conda#c67cc412366709c1c3225f19f8aed63b +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.1.99-hff52083_0.conda#578969452de13e4ad69edf18ee2b3d5a +https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d +https://conda.anaconda.org/conda-forge/linux-64/regex-2023.12.25-py310h2372a71_0.conda#4a9ba4e7af60356e63b38a6d419acad6 +https://conda.anaconda.org/conda-forge/noarch/sacremoses-0.0.53-pyhd8ed1ab_0.tar.bz2#76c3c384fe0941f1b08193736e8e277a +https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.2-py310hcb5633a_0.conda#a1e978544ef765ef9ac2f2320e43bacd +https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.13.3-py310he1f1126_0.conda#ea2281fe0bf70c1c83393565342a8a8c +https://conda.anaconda.org/conda-forge/noarch/transformers-4.31.0-pyhd8ed1ab_0.conda#8cccf394a00fbfef2f3d6028422ae5cc +https://conda.anaconda.org/conda-forge/noarch/nlpaug-1.1.11-pyhd8ed1ab_1.conda#4e231f0fa7db9388cf4c8539d623ac62 +https://conda.anaconda.org/conda-forge/noarch/nltk-3.8.1-pyhd8ed1ab_0.conda#518c769ca4273480a99be6e559a26192 +https://conda.anaconda.org/conda-forge/noarch/typish-1.9.3-pyhd8ed1ab_0.tar.bz2#81b3f3101aa2af117924d908a1b33c67 +https://conda.anaconda.org/conda-forge/noarch/nptyping-2.4.1-pyhd8ed1ab_0.tar.bz2#7929b4ae7565a66f0fab4b70cfb90594 +https://conda.anaconda.org/conda-forge/noarch/omegaconf-2.2.3-pyhd8ed1ab_0.conda#cebc9f0fc6eebdcc368bb30ba30f2fd5 +https://conda.anaconda.org/conda-forge/noarch/markdown-3.6-pyhd8ed1ab_0.conda#06e9bebf748a0dea03ecbe1f0e27e909 +https://conda.anaconda.org/conda-forge/noarch/ordered-set-4.1.0-pyhd8ed1ab_0.tar.bz2#9a8714decb3967b290263817e876d8a9 +https://conda.anaconda.org/conda-forge/noarch/model-index-0.1.11-pyhd8ed1ab_0.conda#6aecca21351e44095ffd2901ee46337a +https://conda.anaconda.org/conda-forge/noarch/wheel-0.42.0-pyhd8ed1ab_0.conda#1cdea58981c5cbc17b51973bcaddcea7 +https://conda.anaconda.org/conda-forge/noarch/pip-23.3.2-pyhd8ed1ab_0.conda#8591c748f98dcc02253003533bc2e4b1 +https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2#4759805cce2d914c38472f70bf4d8bcb +https://conda.anaconda.org/conda-forge/noarch/openmim-0.3.7-pyhd8ed1ab_0.conda#e081b8fa91b884435725f0caa13866ff +https://conda.anaconda.org/conda-forge/linux-64/protobuf-4.21.12-py310heca2aa9_0.conda#90bb7e1b729c4b50272cf78be97ab912 +https://conda.anaconda.org/conda-forge/noarch/pytesseract-0.3.10-pyhd8ed1ab_0.tar.bz2#04f4becceb0c032c5dbdae6ad18bd95e +https://conda.anaconda.org/conda-forge/noarch/lightning-utilities-0.11.0-pyhd8ed1ab_0.conda#45f86a84ae04e7be9fa602707a17af5c +https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.0.3-pyhd8ed1ab_0.conda#4e8849ba2fa06393b7ab5a50c6a4256c +https://conda.anaconda.org/conda-forge/noarch/pytorch-lightning-2.0.9-pyhd8ed1ab_0.conda#3e96ed529412338e38af9004e22267de +https://conda.anaconda.org/conda-forge/noarch/pytorch-metric-learning-1.7.3-pyhd8ed1ab_0.conda#139aa590e345e10f4572812a329806f4 +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.2.1-pyhd8ed1ab_0.conda#b325bfc4cff7d7f8a868f1f7ecc4ed16 +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.3-py310h2372a71_0.conda#21362970a6fea90ca507c253c20465f2 +https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 +https://conda.anaconda.org/conda-forge/noarch/partd-1.4.1-pyhd8ed1ab_0.conda#acf4b7c0bcd5fa3b0e05801c4d2accd6 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.3.1-pyhd8ed1ab_0.conda#52dd56ce3afa6a52c2f3d3116875ff32 +https://conda.anaconda.org/conda-forge/noarch/imageio-2.34.0-pyh4b66e23_0.conda#b8853659d596f967c661f544dd89ede7 +https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.4.1-py310h1f7b6fc_1.conda#be6f0382440ccbf9fb01bb19ab1f1fc0 +https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.5-h0f2a231_0.conda#009521b7ed97cca25f8f997f9e745976 +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.0.7-h0b41bf4_0.conda#49e8329110001f04923fe7e864990b0c +https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.13.2-hb4ffafa_0.conda#976aaf1afd331ed7346d649da5c5c1ee +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.1-h0b41bf4_3.conda#96f3b11872ef6fad973eac856cd2624f +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.2-h59595ed_1.conda#127b0be54c1c90760d7fe02ea7a56426 +https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda#418c6ca5929a611cbd69204907a83995 +https://conda.anaconda.org/conda-forge/linux-64/libavif-0.11.1-h8182462_2.conda#41c399ed4c439e37b844c24ab5621b5a +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-h59595ed_0.conda#fd486bffbf0d6841cf1456a8f2e3a995 +https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2023.8.12-py310hc929067_0.conda#61caf809753610c4c87d583765b1d478 +https://conda.anaconda.org/conda-forge/noarch/tifffile-2024.2.12-pyhd8ed1ab_0.conda#d5c8bef52be4e70c48b1400eec3eecc8 +https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.19.3-py310h769672d_2.tar.bz2#c0391107b0cd0010708d6969ed759e8b +https://conda.anaconda.org/conda-forge/noarch/seqeval-1.2.2-pyhd3deb0d_0.tar.bz2#d4436c8a8b9fb6d60fe4e7b9f097f9bb +https://conda.anaconda.org/conda-forge/noarch/cachetools-5.3.3-pyhd8ed1ab_0.conda#cd4c26c702a9bcdc70ff05b609ddacbe +https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.5.1-pyhd8ed1ab_0.conda#fb1a800972b072aa4d16450983c81418 +https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.3.0-pyhd8ed1ab_0.conda#26db749166cdca55e5ef1ffdc7767d0e +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda#b50aec2c744a5c493c09cce9e2e7533e +https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_0.tar.bz2#caabbeaa83928d0c3e3949261daa18eb +https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2#03bf410858b2cefc267316408a77c436 +https://conda.anaconda.org/conda-forge/noarch/google-auth-2.28.2-pyhca7485f_0.conda#f8879cf0e5b8f7761d01bce40ce7c089 +https://conda.anaconda.org/conda-forge/noarch/blinker-1.7.0-pyhd8ed1ab_0.conda#550da20b2c2e38be9cc44bb819fda5d5 +https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_1.conda#74f76d4868dbba5870f2cf1d9b12d8f3 +https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2#8f882b197fd9c4941a787926baea4868 +https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.4.0-pyhd8ed1ab_0.conda#a55b220de8970208f583e38639cfbecc +https://conda.anaconda.org/conda-forge/noarch/google-auth-oauthlib-1.0.0-pyhd8ed1ab_1.conda#569e62e95b01b53e4ec7d9abe83b7385 +https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.54.3-py310heca2aa9_0.conda#7c82ea96968976ee2eb66a52f2decd8e +https://conda.anaconda.org/conda-forge/linux-64/tensorboard-data-server-0.7.0-py310h75e40e8_1.conda#e562478facfa960813945204273ecac5 +https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.0.1-pyhd8ed1ab_0.conda#af8d825d93dbe6331ee6d61c69869ca0 +https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.12.3-pyhd8ed1ab_0.conda#429d39f86cef8d0859d639804ae67aaf +https://conda.anaconda.org/conda-forge/linux-64/torchvision-0.15.2-cpu_py310hb9e6163_1.conda#952305ae6b751a80284e8d4c9115ed4b +https://conda.anaconda.org/conda-forge/noarch/timm-0.9.16-pyhd8ed1ab_0.conda#bc15401d946adb3fbce34c4ba351dd20 +https://conda.anaconda.org/conda-forge/noarch/autogluon.multimodal-0.8.2-pyha770c72_5.conda#a8ca42e2b4ee0fd6dce729bc226dd0cc +https://conda.anaconda.org/conda-forge/noarch/plotly-5.19.0-pyhd8ed1ab_0.conda#669cd7065794633b9e64e6a9612ec700 +https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda#e7ba12deb7020dd080c6c70e7b6f6a3d +https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda#53fb86322bdb89496d7579fe3f02fd61 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda#0f69b688f52ff6da70bccb7ff7001d1d +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_1.conda#6185f640c43843e5ad6fd1c5372c3f80 +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/pixman-0.43.2-h59595ed_0.conda#71004cbf7924e19c02746ccde9fd7123 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda#b462a33c0be1421532f28bfe8f4a7514 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda#93ee23f12bc2e684548181256edd2cf6 +https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2#4b230e8381279d76131116660f5a241a +https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda#bce9f945da8ad2ae9b1d7165a64d0f87 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2#b4a4381d54784606820704f7b5f05a15 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.7-h8ee46fc_0.conda#49e482d882669206653b095f5206c05b +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda#82b6df12252e6f32402b96dacc656fec +https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2#06feff3d2634e3097ce2fe681474b534 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda#ed67c36f215b310412b2af935bf3e530 +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-h3faef2a_0.conda#f907bb958910dc404647326ca80c263e +https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h6b639ba_2.conda#ee8220db21db8094998005990418fe5b +https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h58526e2_1001.tar.bz2#8c54672728e8ec6aa6db90cf2806d220 +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.3.0-h3d44ed6_0.conda#5a6f6c00ef982a9bc83558d9ac8f64a0 +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.52.1-ha41ecd1_0.conda#5c0cc002bf4eaa56448b0729efd6e96c +https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h280cfa0_4.conda#410f86e58e880dcc7b0e910a8e89c05c +https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda#4d8df0b0db060d33c9a702ada998a8fe +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.3.1-hbf2b3c1_0.conda#4963f3f12db45a576f2b8fbe9a0b8569 +https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h74d50f4_7.conda#3453ac94a99ad9daf17e8a313d274567 +https://conda.anaconda.org/conda-forge/linux-64/gettext-0.21.1-h27087fc_0.tar.bz2#14947d8770185e5153fdd04d4673ed37 +https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.56.3-he3f83f7_1.conda#03bd1ddcc942867a19528877143b9852 +https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.7-h27087fc_0.conda#f204c8ba400ec475452737094fb81d52 +https://conda.anaconda.org/conda-forge/linux-64/graphviz-8.1.0-h28d9a01_0.conda#33628e0e3de7afd2c8172f76439894cb +https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.20.2-pyh717bed2_0.conda#6df60158d7fcdb1de8728bf5affa5c18 +https://conda.anaconda.org/conda-forge/linux-64/catboost-1.2.3-py310hff52083_2.conda#e063c808181593406d4d3d321ee7ffff +https://conda.anaconda.org/conda-forge/noarch/fastcore-1.5.29-pyhd8ed1ab_0.conda#155c898255baddd6b2cb95894791eeca +https://conda.anaconda.org/conda-forge/noarch/fastprogress-1.0.3-pyhd8ed1ab_0.tar.bz2#1690639d3647fde6edf4f00c8f87c263 +https://conda.anaconda.org/conda-forge/noarch/fastdownload-0.0.7-pyhd8ed1ab_0.conda#29c29999a420c2d28c3a46b3eadb9373 +https://conda.anaconda.org/conda-forge/linux-64/catalogue-2.0.10-py310hff52083_0.conda#a20390cd5f5fe4d8c5f6f2e7fa6c54cf +https://conda.anaconda.org/conda-forge/linux-64/cymem-2.0.8-py310hc6cd4ac_1.conda#8e4dada89998e0cb4f97b835dff6dc7e +https://conda.anaconda.org/conda-forge/noarch/langcodes-3.3.0-pyhd8ed1ab_0.tar.bz2#aacac9c3804912c38087d1c295708493 +https://conda.anaconda.org/conda-forge/linux-64/murmurhash-1.0.10-py310hc6cd4ac_1.conda#2b0c4b4532c601ece4537cc7f3558464 +https://conda.anaconda.org/conda-forge/noarch/smart_open-5.2.1-pyhd8ed1ab_0.tar.bz2#c7a838c38e38c82edde371a9054e6c92 +https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda#d08db09a552699ee9e7eec56b4eb3899 +https://conda.anaconda.org/conda-forge/noarch/typer-0.9.0-pyhd8ed1ab_0.conda#5030a13b2fe5e143d5956d4943d3018f +https://conda.anaconda.org/conda-forge/noarch/pathy-0.10.2-pyhd8ed1ab_0.conda#69d84b5c17aea4d7350f3536bcde7296 +https://conda.anaconda.org/conda-forge/linux-64/preshed-3.0.9-py310hc6cd4ac_1.conda#a2a27c2eafd1e280555ae954df088fc3 +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/srsly-2.4.8-py310hc6cd4ac_1.conda#7cd9d4be6f55ccb53cbd7125f2e6a0fb +https://conda.anaconda.org/conda-forge/linux-64/confection-0.1.4-py310h17c5347_0.conda#72b63825959fc040cab8ed0f12f2040e +https://conda.anaconda.org/conda-forge/linux-64/cython-blis-0.7.10-py310h1f7b6fc_2.conda#6a0165d9e76c443ed66d2e8b733aa133 +https://conda.anaconda.org/conda-forge/linux-64/wasabi-1.1.2-py310hff52083_0.conda#8ed9f04ed8e1373063cd03b9d5c86ce3 +https://conda.anaconda.org/conda-forge/linux-64/thinc-8.2.2-py310hcb52e73_0.conda#550b37537f05740f1c9a38d63d843b3c +https://conda.anaconda.org/conda-forge/noarch/cloudpathlib-0.16.0-pyhd8ed1ab_0.conda#8d75941f621306e58b7642394a8bad87 +https://conda.anaconda.org/conda-forge/noarch/weasel-0.3.4-pyhd8ed1ab_0.conda#a53c82e61a1173c887e84fc50842eec4 +https://conda.anaconda.org/conda-forge/linux-64/spacy-3.7.2-py310hcb52e73_0.conda#c966d5a09c130d0bcfce4126643ddc74 +https://conda.anaconda.org/conda-forge/noarch/fastai-2.7.14-pyhd8ed1ab_0.conda#9854ef355cc4bd1e2aac40998f721fed +https://conda.anaconda.org/conda-forge/linux-64/lightgbm-3.3.5-py310heca2aa9_0.conda#d2595ddab22cbca7409b28e3105afd0a +https://conda.anaconda.org/conda-forge/linux-64/libxgboost-1.7.6-cpu_h6728c87_6.conda#9183d0551aa5e5be36c670e701b287a3 +https://conda.anaconda.org/conda-forge/linux-64/py-xgboost-1.7.6-cpu_py310h78d450f_6.conda#dcc61476de611ac5673698495b607109 +https://conda.anaconda.org/conda-forge/linux-64/xgboost-1.7.6-cpu_py310h78d450f_6.conda#061a099093fd2a97ae506f65dc87baf2 +https://conda.anaconda.org/conda-forge/noarch/autogluon.tabular-0.8.2-pyha770c72_4.conda#17fad1cdb563ddad16ab0ba4c085bcb3 +https://conda.anaconda.org/conda-forge/noarch/gluonts-0.13.7-pyhd8ed1ab_0.conda#1684b578508d9918b2dcadd4c365c61a +https://conda.anaconda.org/conda-forge/linux-64/libllvm14-14.0.6-hcd5def8_4.conda#73301c133ded2bf71906aa2104edae8b +https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.42.0-py310h1b8f574_1.conda#e2a5e9f92629c8e4c8611883a35745b4 +https://conda.anaconda.org/conda-forge/linux-64/numba-0.59.0-py310h7dc5dd1_1.conda#966bc2bc095723310d746106e7c91791 +https://conda.anaconda.org/conda-forge/noarch/window-ops-0.0.15-pyhd8ed1ab_0.conda#b5ffd7d8295d4eda512216e23cf75a0f +https://conda.anaconda.org/conda-forge/noarch/mlforecast-0.7.3-pyhd8ed1ab_0.conda#7a2b34b4c9bff2545200b3746da70f11 +https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.6-pyhd8ed1ab_0.conda#a5b55d1cb110cdcedc748b5c3e16e687 +https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.1-py310h1f7b6fc_0.conda#d98c3749dd466513dd921f5818f4b001 +https://conda.anaconda.org/conda-forge/noarch/statsforecast-1.4.0-pyhd8ed1ab_0.conda#aa803f915587fe4306dfe0234215caa9 +https://conda.anaconda.org/conda-forge/linux-64/ujson-5.9.0-py310hc6cd4ac_0.conda#cab4b543b897dcf548edb3018fe45f9e +https://conda.anaconda.org/conda-forge/noarch/autogluon.timeseries-0.8.2-pyhd8ed1ab_4.conda#a64157275daf72a557fe4a9d843a9e1d +https://conda.anaconda.org/conda-forge/noarch/autogluon-0.8.2-pyhd8ed1ab_4.conda#7ff9ac51e09bd5991970a7df53b4bee6 +https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.11.1-pyhd8ed1ab_0.conda#29ff12b36df16bb66fdccd4206aaebfb +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.10-pyhd8ed1ab_0.conda#16b73b2c4ff7dda8bbecf88aadfe2027 +https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.10-pyhd8ed1ab_0.conda#521f489e3babeddeec638c2add7e9e64 +https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.2-pyhd8ed1ab_0.conda#67f86478c78637f68c1f3858973021f2 +https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.42-hd8ed1ab_0.conda#85a2189ecd2fcdd86e92b2d4ea8fe461 +https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_0.conda#7cf6f52a66f8e3cd9d8b6c231262dcab +https://conda.anaconda.org/conda-forge/noarch/notebook-7.1.2-pyhd8ed1ab_0.conda#fa781da51f05c9211b75b5e7bcff8136 +https://conda.anaconda.org/conda-forge/noarch/qtpy-2.4.1-pyhd8ed1ab_0.conda#7f391bd70d2abfb70f304ba5aa4e1261 +https://conda.anaconda.org/conda-forge/noarch/qtconsole-base-5.5.1-pyha770c72_0.conda#5528a3eda283b421055c89bface19a1c +https://conda.anaconda.org/conda-forge/noarch/jupyter-1.0.0-pyhd8ed1ab_10.conda#056b8cc3d9b03f54fc49e6d70d7dc359 +https://conda.anaconda.org/conda-forge/noarch/mock-5.1.0-pyhd8ed1ab_0.conda#926c67c0310094cf421ad13f7d3f38e5 +https://conda.anaconda.org/conda-forge/noarch/nose-1.3.7-py_1006.tar.bz2#382019d5f8e9362ef6f60a8d4e7bce8f +https://conda.anaconda.org/conda-forge/noarch/hdijupyterutils-0.21.0-pyh1a96a4e_0.conda#4db6232a9b934edc1c1e2f7b7d5a5d40 +https://conda.anaconda.org/conda-forge/noarch/autovizwidget-0.21.0-pyh1a96a4e_0.conda#7db56991c3c823ddb394ed85df9b54f5 +https://conda.anaconda.org/conda-forge/noarch/aws-glue-sessions-1.0.4-pyhd8ed1ab_0.conda#169c4c0a396d83164215f54024031ec8 +https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.1.2-py310hcb5633a_0.conda#6dd3d49f65ceb05dbd527a5b6301611b +https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda#4eccaeba205f0aed9ac3a9ea58568ca3 +https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda#17064acba08d3686f1135b5ec1b32b12 +https://conda.anaconda.org/conda-forge/linux-64/black-24.3.0-py310hff52083_0.conda#12960fe9118cbb71fb802a52870f7874 +https://conda.anaconda.org/conda-forge/noarch/boltons-23.1.1-pyhd8ed1ab_0.conda#56febe65315cc388a5d20adf2b39a74d +https://conda.anaconda.org/conda-forge/linux-64/fmt-10.2.1-h00ab1b0_0.conda#35ef8bc24bd34074ebae3c943d551728 +https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h516909a_1000.tar.bz2#bb14fcb13341b81d5eb386423b9d2bac +https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.7.2-h2aa1ff5_1.conda#3bf887827d1968275978361a6e405e4f +https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.28-hfc55251_0.conda#66d4f5d8256542d9ebfa341d690c5e03 +https://conda.anaconda.org/conda-forge/linux-64/reproc-14.2.4.post0-hd590300_1.conda#82ca53502dfd5a64a80dee76dae14685 +https://conda.anaconda.org/conda-forge/linux-64/reproc-cpp-14.2.4.post0-h59595ed_1.conda#715e1d720ec1a03715bebd237972fca5 +https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h59595ed_0.conda#965eaacd7c18eb8361fd12bb9e7a57d7 +https://conda.anaconda.org/conda-forge/linux-64/libmamba-1.5.7-had39da4_0.conda#9fff450354fbcd1510ef178730732241 +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.7-py310h39ff949_0.conda#58d84efb37d517c64f4e48f75fd6180d +https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-24.1.0-pyhd8ed1ab_0.conda#304dc78ad6e52e0fd663df1d484c1531 +https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.22.0-py310h1275a96_0.conda#54698ba13cd3494547b289cd86a2176a +https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.9.0-pyhd8ed1ab_0.conda#38253361efb303deead3eab39ae9269b +https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.2.0-pyh38be061_0.conda#8a3ae7f6318376aa08ea753367bb7dd6 +https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_0.conda#bbdb409974cd6cb30071b1d978302726 +https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_0.conda#bfdb7c5c6ad1077c82a69a8642c87aff +https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.0.2-py310hff52083_0.conda#4837faab0d3e665df57fef662148c6a3 +https://conda.anaconda.org/conda-forge/noarch/pluggy-1.4.0-pyhd8ed1ab_0.conda#139e9feb65187e916162917bb2484976 +https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py310h2372a71_0.conda#0adaac9a86d59adae2bc86b3cdef2df1 +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py310h2372a71_0.conda#dcf6d2535586c77b31425ed835610c54 +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.6-py310h2372a71_0.conda#50b7d9b39099cdbabf65bf27df73a793 +https://conda.anaconda.org/conda-forge/noarch/truststore-0.8.0-pyhd8ed1ab_0.conda#08316d001eca8854392cf2837828ea11 +https://conda.anaconda.org/conda-forge/linux-64/conda-23.11.0-py310hff52083_1.conda#d5278ac990c67d5ed51584998aa16c5a +https://conda.anaconda.org/conda-forge/noarch/contextlib2-21.6.0-pyhd8ed1ab_0.tar.bz2#5b26a831440be04c39531a8ce20f5d71 +https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.4-h7f98852_1002.tar.bz2#e728e874159b042d92b90238a3cb0dc2 +https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.27-h54b06d7_7.conda#dce22f70b4e5a407ce88f2be046f4ceb +https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.1.2-pyhd8ed1ab_0.tar.bz2#3c3de74912f11d2b590184f03c7cd09b +https://conda.anaconda.org/conda-forge/noarch/flask-3.0.2-pyhd8ed1ab_0.conda#7f88df670921cc31c309719e30c22021 +https://conda.anaconda.org/conda-forge/noarch/retrying-1.3.3-py_2.tar.bz2#a11f356d6f93b74b4a84e9501afd48b4 +https://conda.anaconda.org/conda-forge/noarch/dash-2.16.1-pyhd8ed1ab_0.conda#016bd4f61878a57f19c8cd744708a1f1 +https://conda.anaconda.org/conda-forge/noarch/marshmallow-3.21.1-pyhd8ed1ab_0.conda#ae303aa7dc100bc3bc01b5a3b7ca3567 +https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_0.conda#9e924b76b91908a17e28a19a0ab88687 +https://conda.anaconda.org/conda-forge/noarch/dataclasses-json-0.6.4-pyhd8ed1ab_0.conda#1190a6456351690603b2d64d1cbf5b4a +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d +https://conda.anaconda.org/conda-forge/noarch/deepmerge-1.1.1-pyhd8ed1ab_0.conda#d91c3d8ac3f2ab36ca4ea32ac42f731e +https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.7-py310hd41b1e2_0.conda#dc5263dcaa1347e5a456ead3537be27d +https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2#6d6552722448103793743dabfbda532d +https://conda.anaconda.org/conda-forge/noarch/tblib-2.0.0-pyhd8ed1ab_0.conda#f5580336fe091d46f9a2ea97da044550 +https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda#cf30c2c15b82aacb07f9c09e28ff2275 +https://conda.anaconda.org/conda-forge/noarch/distributed-2024.3.1-pyhd8ed1ab_0.conda#b0ad5ef44595ef37c3008fc04ecd2abf +https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.5.0-py310h2372a71_3.conda#a29a0825809cd3a780097472be176618 +https://conda.anaconda.org/conda-forge/noarch/paramiko-3.4.0-pyhd8ed1ab_0.conda#a5e792523b028b06d7ce6e65a6cd4a33 +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.0.0-pyhd8ed1ab_0.conda#aec5f308cb9055e83c59afecd5fcb58a +https://conda.anaconda.org/conda-forge/noarch/docstring-to-markdown-0.15-pyhd8ed1ab_0.conda#a3a1e6af2926a3affcd6f2072871f551 +https://conda.anaconda.org/conda-forge/linux-64/libfaiss-1.7.4-hf47d654_0_cpu.conda#8fd132db65c8d51caea2ae7cde4b450c +https://conda.anaconda.org/conda-forge/linux-64/libfaiss-avx2-1.7.4-h1234567_0_cpu.conda#7eb943c067a63c4d8af526c2df9f2c1b +https://conda.anaconda.org/conda-forge/linux-64/faiss-1.7.4-py310h9ed8947_0_cpu.conda#99665c710087f7a964915b5ea0097465 +https://conda.anaconda.org/conda-forge/linux-64/faiss-cpu-1.7.4-h718b53a_0.conda#7a9e6f72c36ff5a5eeb61660fd6fdf8d +https://conda.anaconda.org/conda-forge/noarch/starlette-0.27.0-pyhd8ed1ab_0.conda#6facb6fc201d334257db8004439705d3 +https://conda.anaconda.org/conda-forge/noarch/fastapi-0.103.2-pyhd8ed1ab_0.conda#fb243b6796ab7d64b14e00c279620c04 +https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_0.tar.bz2#34fc335fc50eef0b5ea708f2b5f54e0c +https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.2.0-pyhd8ed1ab_0.conda#0cf7fef6aa123df28adb21a590065e3d +https://conda.anaconda.org/conda-forge/noarch/flake8-7.0.0-pyhd8ed1ab_0.conda#15bc58c860fc0a9abc26ec902df35252 +https://conda.anaconda.org/conda-forge/linux-64/flatbuffers-23.5.26-h59595ed_1.conda#913a1c6fd00b66f33392a129e835ceca +https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_0.conda#650a7807e689642dddd3590eb817beed +https://conda.anaconda.org/conda-forge/noarch/gast-0.4.0-pyh9f0ad1d_0.tar.bz2#42323c77b73462199fca93bc8ac9279d +https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2#62f26a3d1387acee31322208f0cfa3e0 +https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda#623b19f616f2ca0c261441067e18ae40 +https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.42-pyhd8ed1ab_0.conda#6bc8e496351bafd761c0922c3ebd989a +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.80.0-hde27a5a_1.conda#939ddd853b1d98bf6fd22cc0adeda317 +https://conda.anaconda.org/conda-forge/linux-64/glib-2.80.0-hf2295e7_1.conda#d3bcc5c186f78feba6f39ea047c35950 +https://conda.anaconda.org/conda-forge/noarch/google-pasta-0.2.0-pyh8c360ce_0.tar.bz2#26e27d7d3d7fe2336b543dd8e0f12cbf +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.22.9-h98fc4e7_0.conda#bcc7157b06fce7f5e055402a8135dfd8 +https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2#6e8cc2173440d77708196c5b93771680 +https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f +https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 +https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.22.9-h8e1006c_0.conda#614b81f8ed66c56b640faee7076ad14a +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_h4f84152_100.conda#d471a5c3abc984b662d9bae3bb7fd8a5 +https://conda.anaconda.org/conda-forge/linux-64/h5py-3.10.0-nompi_py310h65828d5_101.conda#44c185c5b133ad6d1d449839407aa863 +https://conda.anaconda.org/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_0.conda#1d25ed2b95b92b026aaa795eabec8d91 +https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.3.2-py310hcc13569_0.conda#1ad84020b1ab816d7ab3f3d0859faf40 +https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.4.14-cpu_py310h67d73b5_1.conda#392c325994aa96727edd0069a0620e31 +https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.3.0-pyhc1e730c_2.conda#7a94ac68b892daa9f17ae8a52b31ed81 +https://conda.anaconda.org/conda-forge/noarch/opt-einsum-3.3.0-hd8ed1ab_2.conda#ab262acd95cb73f3ed9426cc4204ac3a +https://conda.anaconda.org/conda-forge/noarch/jax-0.4.20-pyhd8ed1ab_0.conda#5abbd950bd427bc9d929e35ecbf814d1 +https://conda.anaconda.org/conda-forge/noarch/ply-3.11-py_1.tar.bz2#7205635cd71531943440fbfe3b6b5727 +https://conda.anaconda.org/conda-forge/noarch/jsonpath-ng-1.6.1-pyhd8ed1ab_0.conda#a698a41f5b52fe96049fd8c926ac3086 +https://conda.anaconda.org/conda-forge/linux-64/orjson-3.9.15-py310hcb5633a_0.conda#da1b180ccf1dce5d87d145ad2fc14e5a +https://conda.anaconda.org/conda-forge/noarch/langsmith-0.1.31-pyhd8ed1ab_0.conda#031cb2cb0387f028379c1a58217fe929 +https://conda.anaconda.org/conda-forge/noarch/langchain-core-0.1.32-pyhd8ed1ab_0.conda#b085528ffeef5167dd8f6e358e4170e2 +https://conda.anaconda.org/conda-forge/noarch/langchain-community-0.0.28-pyhd8ed1ab_0.conda#d7e8f72c5e422b78b3d5f7a7aecbfae9 +https://conda.anaconda.org/conda-forge/noarch/langchain-0.1.9-pyhd8ed1ab_0.conda#2ad37682610ac2643b46e4cc0215f410 +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-magics-2.11.0-pyhd8ed1ab_0.conda#aee09f3966655f81d05fcfb5bae3612d +https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.5.2-py310h47bb294_0.conda#a83ae186d0a4b78c98b32781d7c15d48 +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-2.11.0-pyhd8ed1ab_0.conda#e8ab7975630aff4624d3ed1fa32ac552 +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-pyh5bfe37b_1.conda#11ca195fc8a16770661a387bcce27c36 +https://conda.anaconda.org/conda-forge/noarch/simpervisor-1.0.0-pyhd8ed1ab_0.conda#1f6df17b16d6295a484d59e844fef6ee +https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.1.2-pyhd8ed1ab_0.conda#3671520b52215a5a084de08003e6d8cd +https://conda.anaconda.org/conda-forge/noarch/nbdime-4.0.1-pyhd8ed1ab_0.conda#dd76d44a144499f8ff3254fd20cdb7a2 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-git-0.50.0-pyhd8ed1ab_1.conda#5020cacc18e3d5f62a81513f26ac2cac +https://conda.anaconda.org/conda-forge/noarch/keras-2.12.0-pyhd8ed1ab_0.conda#e6e18b33e8d62200099f2eed98a263b6 +https://conda.anaconda.org/conda-forge/noarch/keras-preprocessing-1.1.2-pyhd8ed1ab_0.tar.bz2#a79b00989a0d89791021902f37fe2f9e +https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2#a8832b479f93521a9e7b5b743803be51 +https://conda.anaconda.org/conda-forge/linux-64/libcap-2.69-h0f662aa_0.conda#25cb5999faa414e5ccb2c1388f62d3d5 +https://conda.anaconda.org/conda-forge/linux-64/libllvm15-15.0.7-hb3ce162_4.conda#8a35df3cbc0c8b12cc8af9473ae75eef +https://conda.anaconda.org/conda-forge/linux-64/libclang13-15.0.7-default_ha2b6cf4_4.conda#898e0dd993afbed0d871b60c2eb33b83 +https://conda.anaconda.org/conda-forge/linux-64/libclang-15.0.7-default_hb11cfb5_4.conda#c90f4cbb57839c98fef8f830e4b9972f +https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda#d4529f4dff3057982a7617c7ac58fde3 +https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda#ee48bf17cc83a00f59ca1494d5646869 +https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.48-h71f35ed_0.conda#4d18d86916705d352d5f4adfb7f0edd3 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.10.3-hd590300_0.conda#32d16ad533c59bb0a3c5ffaf16110829 +https://conda.anaconda.org/conda-forge/linux-64/libpq-15.6-h088ca5b_0.conda#99dca02fb74a8dfa3653c6673674f90c +https://conda.anaconda.org/conda-forge/linux-64/libsecret-0.18.8-h329b89f_2.tar.bz2#9d6698e3c9585a75156d86f7ef229093 +https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.4-h59595ed_0.conda#3f1017b4141e943d9bc8739237f749e8 +https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda#ef1910918dd895516a769ed36b5b3a4e +https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-255-h3516f8a_1.conda#3366af27f0b593544a6cd453c7932ac5 +https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.41-hd590300_0.conda#81f740407b45e3f9047b3174fa94eb9e +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.6.0-hd429924_1.conda#1dbcc04604fdf1e526e6d1b0b6938396 +https://conda.anaconda.org/conda-forge/linux-64/sip-6.7.12-py310hc6cd4ac_0.conda#68d5bfccaba2d89a7812098dd3966d9b +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.12.2-py310hc6cd4ac_5.conda#ef5333594a958b25912002886b82b253 +https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.33-hf1915f5_6.conda#80bf3b277c120dd294b51d404b931a75 +https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.33-hca2cd23_6.conda#e87530d1b12dd7f4e0f856dc07358d60 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda#da0ec11a6454ae19bff5b02ed881a2b1 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.98-h1d7d5a4_0.conda#54b56c2fdf973656b748e0378900ec13 +https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-16.1-hb77b528_5.conda#ac902ff3c1c6d750dd0dfc93a974ab74 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.0-hd590300_1.conda#9bfac7ccd94d54fd21a0501296d60424 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-h8ee46fc_1.conda#9d7bcddf49cbf727730af10e71022c73 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.0-h8ee46fc_1.conda#632413adcd8bc16b515cab87a2932913 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.9-hd590300_1.conda#e995b155d938b6779da6ace6c6b13816 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.1-h8ee46fc_1.conda#90108a432fb5c6150ccfee3f03388656 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xf86vidmodeproto-2.3.1-h7f98852_1002.tar.bz2#3ceea9668625c18f19530de98b15d5b0 +https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.8-hc47bfe8_16.conda#a8dd2dfcd570e3965c73be6c5e03e74f +https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.9-py310h04931ad_5.conda#f4fe7a6e3d7c78c9de048ea9dda21690 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.8.3-py310hff52083_0.conda#e91d183a307d7bd667003291f690cbb0 +https://conda.anaconda.org/conda-forge/linux-64/nodejs-18.19.0-hb753e55_0.conda#0b4a67051e3b3812818ccf2f4ee2fd4e +https://conda.anaconda.org/conda-forge/noarch/papermill-2.5.0-pyhd8ed1ab_0.conda#e6e69b90afd3d0597da8f1f74cc4bd58 +https://conda.anaconda.org/conda-forge/noarch/pox-0.3.4-pyhd8ed1ab_0.conda#d5502ff0ec33b87f7ab7bc373d0e42ff +https://conda.anaconda.org/conda-forge/noarch/ppft-1.7.6.8-pyhd8ed1ab_0.conda#a104e8b98901dc1bc0b916f7e18b5e39 +https://conda.anaconda.org/conda-forge/noarch/pathos-0.3.2-pyhd8ed1ab_1.conda#22ed208c1b54e7c2ec6616665fba6b0f +https://conda.anaconda.org/conda-forge/noarch/pure-sasl-0.6.2-pyhd8ed1ab_0.tar.bz2#ac695eecf21ab48093bc33fd60b4102d +https://conda.anaconda.org/conda-forge/linux-64/py-xgboost-cpu-1.7.6-py310h78d450f_6.conda#6c53cd648ba083e1bc7ea5dac8ec1e2c +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_0.conda#7e23a61a7fbaedfef6eb0e1ac775c8e5 +https://conda.anaconda.org/conda-forge/linux-64/thrift-0.19.0-py310hc6cd4ac_1.conda#2e0bde59a8aa215c7402c181c20c9605 +https://conda.anaconda.org/conda-forge/noarch/thrift_sasl-0.4.3-pyhd8ed1ab_2.tar.bz2#0340a97c4990a5bb5ecf1a27fef9f9c3 +https://conda.anaconda.org/conda-forge/noarch/pyhive-0.7.0-pyhd8ed1ab_0.conda#a39884e69ebf0c6454a1f8bac6f8361b +https://conda.anaconda.org/conda-forge/linux-64/pykrb5-0.5.1-py310h98feede_1.conda#0329fda0ebbccee7b3e9dbf4a377d0ce +https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.4-pyha770c72_0.conda#37c47ea93ef00dd80d880fc4ba21256a +https://conda.anaconda.org/conda-forge/noarch/pylint-3.0.4-pyhd8ed1ab_0.conda#d536ee47166d8984c6acd8114ac26cf1 +https://conda.anaconda.org/conda-forge/linux-64/pyspnego-0.9.1-py310h2372a71_2.conda#0a99339b277686c7d824abf9de396901 +https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-24.3.7-pyh59ac667_0.conda#24c1a37849fcd4c74923a38b029b208f +https://conda.anaconda.org/conda-forge/linux-64/python-gssapi-1.8.3-py310h98feede_0.conda#a5ea028f63386c53a2b8ff4d09065259 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-jsonrpc-1.1.2-pyhd8ed1ab_0.conda#ff30dbdb341a54947c4fa183900380b7 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-base-1.10.1-pyhd8ed1ab_0.conda#1371f9394b20fd1fe7419a2aa9b38888 +https://conda.anaconda.org/conda-forge/noarch/pytoolconfig-1.2.5-pyhd8ed1ab_0.conda#2d6bdf5a69cfcd1fcc7f2b900cb4082f +https://conda.anaconda.org/conda-forge/noarch/rope-1.12.0-pyhd8ed1ab_0.conda#5b17bee6351fbe4ae28da178866b2c73 +https://conda.anaconda.org/conda-forge/noarch/whatthepatch-1.0.5-pyhd8ed1ab_0.conda#e62ea65e1979c18c4c9034567e7105c5 +https://conda.anaconda.org/conda-forge/noarch/yapf-0.40.1-pyhd8ed1ab_0.conda#f269942e802d5e148632143d4c37acc9 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-1.10.1-pyhd8ed1ab_0.conda#15b849d7f03b7580a88a3f887db5ad40 +https://conda.anaconda.org/conda-forge/noarch/requests-kerberos-0.14.0-pyh707e725_1.conda#411293bff0dc86f9f9bc0c0e1f227623 +https://conda.anaconda.org/conda-forge/linux-64/ripgrep-14.1.0-he8a937b_0.conda#5a476f7033a8a1b9175626b5ebf86d1d +https://conda.anaconda.org/conda-forge/linux-64/sagemaker-code-editor-1.0.0-hcb28a07_0.conda#f53005657267d6b1233c2852fcb84707 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-headless-execution-driver-0.0.12-pyhd8ed1ab_0.conda#fe8919032eb413e76a7802f013a536ee +https://conda.anaconda.org/conda-forge/linux-64/y-py-0.6.2-py310hcb5633a_0.conda#892e912e08ba834aa77ff25f983a4e9e +https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.12.4-pyhd8ed1ab_0.conda#7f558701e9a089188cc81d620282ef28 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-common-0.1.14-pyhd8ed1ab_0.conda#27319d665d06aa5c25b6a07d04a4256f +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-emr-extension-0.1.9-pyhd8ed1ab_0.conda#589f97989a6db8b2f21a53881fdd1d97 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-0.2.0-pyhd8ed1ab_0.conda#9331340b5a844f5ac2c74eda353aa23e +https://conda.anaconda.org/conda-forge/noarch/sagemaker-kernel-wrapper-0.0.2-pyhd8ed1ab_0.conda#99480997ca2429b75169c896cc988cdb +https://conda.anaconda.org/conda-forge/noarch/schema-0.7.5-pyhd8ed1ab_1.conda#750d2ce4311d1502b51ad814407f043d +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.212.0-pyhd8ed1ab_0.conda#eb07d50e30f7b423929f9081118d3979 +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.0.21-pyhd8ed1ab_0.conda#fa0e9b0ca6c3e96d350711b6dbddaeb6 +https://conda.anaconda.org/conda-forge/linux-64/sasl-0.3.1-py310hd8f1fbe_2.tar.bz2#9b15d1759c99ad57ae43080cfca56d73 +https://conda.anaconda.org/conda-forge/linux-64/supervisor-4.2.5-py310hff52083_2.conda#7fe7fa4d80a99dc44ba15ef3e82707af +https://conda.anaconda.org/conda-forge/noarch/termcolor-2.4.0-pyhd8ed1ab_0.conda#a5033708ad9283907c3b1bc1f90d0d0d +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-base-2.12.1-cpu_py310h91b7bb3_1.conda#3133c1f0d7fba203c6af92843b7a6b8a +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-estimator-2.12.1-cpu_py310haacee6a_1.conda#23ed9579748a885ae9e52ae809ccae6a +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-2.12.1-cpu_py310hd1aba9c_1.conda#79f37d0e1a7badce42c40f869ac4ce3a +https://conda.anaconda.org/conda-forge/linux-64/uvicorn-0.28.1-py310hff52083_0.conda#2708791931977a77fa35bc601a571375 diff --git a/build_artifacts/v1/v1.6/v1.6.1/dirs/etc/code-editor/code_editor_machine_settings.json b/build_artifacts/v1/v1.6/v1.6.1/dirs/etc/code-editor/code_editor_machine_settings.json new file mode 100644 index 00000000..a391da92 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/dirs/etc/code-editor/code_editor_machine_settings.json @@ -0,0 +1,4 @@ +{ + "python.terminal.activateEnvironment": false, + "python.defaultInterpreterPath": "/opt/conda/bin/python" +} \ No newline at end of file diff --git a/build_artifacts/v1/v1.6/v1.6.1/dirs/etc/code-editor/extensions.txt b/build_artifacts/v1/v1.6/v1.6.1/dirs/etc/code-editor/extensions.txt new file mode 100644 index 00000000..ee18444b --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/dirs/etc/code-editor/extensions.txt @@ -0,0 +1,3 @@ +https://open-vsx.org/api/ms-toolsai/jupyter/2023.9.100/file/ms-toolsai.jupyter-2023.9.100.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/1.99.0/file/amazonwebservices.aws-toolkit-vscode-1.99.0.vsix \ No newline at end of file diff --git a/build_artifacts/v1/v1.6/v1.6.1/dirs/etc/conda/.condarc b/build_artifacts/v1/v1.6/v1.6.1/dirs/etc/conda/.condarc new file mode 100644 index 00000000..c3616df5 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/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/v1/v1.6/v1.6.1/dirs/etc/jupyter/jupyter_server_config.py b/build_artifacts/v1/v1.6/v1.6.1/dirs/etc/jupyter/jupyter_server_config.py new file mode 100644 index 00000000..e05997f2 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/dirs/etc/jupyter/jupyter_server_config.py @@ -0,0 +1,16 @@ +# 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 diff --git a/build_artifacts/v1/v1.6/v1.6.1/dirs/etc/supervisor/conf.d/supervisord-code-editor.conf b/build_artifacts/v1/v1.6/v1.6.1/dirs/etc/supervisor/conf.d/supervisord-code-editor.conf new file mode 100644 index 00000000..cac5669b --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/dirs/etc/supervisor/conf.d/supervisord-code-editor.conf @@ -0,0 +1,11 @@ +[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 +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/v1/v1.6/v1.6.1/dirs/etc/supervisor/conf.d/supervisord-common.conf b/build_artifacts/v1/v1.6/v1.6.1/dirs/etc/supervisor/conf.d/supervisord-common.conf new file mode 100644 index 00000000..27820d4c --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/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/v1/v1.6/v1.6.1/dirs/etc/supervisor/conf.d/supervisord-jupyter-lab.conf b/build_artifacts/v1/v1.6/v1.6.1/dirs/etc/supervisor/conf.d/supervisord-jupyter-lab.conf new file mode 100644 index 00000000..5694ac11 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/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/v1/v1.6/v1.6.1/dirs/etc/supervisor/conf.d/supervisord.conf b/build_artifacts/v1/v1.6/v1.6.1/dirs/etc/supervisor/conf.d/supervisord.conf new file mode 100644 index 00000000..686f4a5c --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/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/v1/v1.6/v1.6.1/dirs/usr/local/bin/entrypoint-code-editor b/build_artifacts/v1/v1.6/v1.6.1/dirs/usr/local/bin/entrypoint-code-editor new file mode 100755 index 00000000..677c9803 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/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 \ No newline at end of file diff --git a/build_artifacts/v1/v1.6/v1.6.1/dirs/usr/local/bin/entrypoint-jupyter-server b/build_artifacts/v1/v1.6/v1.6.1/dirs/usr/local/bin/entrypoint-jupyter-server new file mode 100755 index 00000000..ceda89d0 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/dirs/usr/local/bin/entrypoint-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)" + +# 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:]') + +# 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/v1/v1.6/v1.6.1/dirs/usr/local/bin/restart-jupyter-server b/build_artifacts/v1/v1.6/v1.6.1/dirs/usr/local/bin/restart-jupyter-server new file mode 100755 index 00000000..6f2af98d --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/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/v1/v1.6/v1.6.1/dirs/usr/local/bin/start-code-editor b/build_artifacts/v1/v1.6/v1.6.1/dirs/usr/local/bin/start-code-editor new file mode 100755 index 00000000..bc97106c --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/dirs/usr/local/bin/start-code-editor @@ -0,0 +1,25 @@ +#!/bin/bash +set -e + +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. 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 /opt/amazon/sagemaker/sagemaker-code-editor-server-data \ + --extensions-dir /opt/amazon/sagemaker/sagemaker-code-editor-server-data/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/v1/v1.6/v1.6.1/dirs/usr/local/bin/start-jupyter-server b/build_artifacts/v1/v1.6/v1.6.1/dirs/usr/local/bin/start-jupyter-server new file mode 100755 index 00000000..377a86d4 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/dirs/usr/local/bin/start-jupyter-server @@ -0,0 +1,35 @@ +#!/bin/bash +set -e + +eval "$(micromamba shell hook --shell=bash)" + +# Activate conda environment 'base', which is the default environment for Cosmos +micromamba activate base + +# Start Jupyter server in rtc mode for shared spaces +if [ -n "$SAGEMAKER_APP_TYPE_LOWERCASE" ] && [ "$SAGEMAKER_SPACE_TYPE_LOWERCASE" == "shared" ]; then + # 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/v1/v1.6/v1.6.1/gpu.arg_based_env.in b/build_artifacts/v1/v1.6/v1.6.1/gpu.arg_based_env.in new file mode 100644 index 00000000..51cba0a9 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/gpu.arg_based_env.in @@ -0,0 +1 @@ +conda-forge::cudatoolkit=$CUDA_MAJOR_MINOR_VERSION diff --git a/build_artifacts/v1/v1.6/v1.6.1/gpu.env.in b/build_artifacts/v1/v1.6/v1.6.1/gpu.env.in new file mode 100644 index 00000000..b3c917b1 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/gpu.env.in @@ -0,0 +1,51 @@ +# This file is auto-generated. +conda-forge::sagemaker-code-editor[version='>=1.0.0,<1.1.0'] +conda-forge::amazon_sagemaker_sql_editor[version='>=0.1.3,<0.2.0'] +conda-forge::amazon-sagemaker-sql-magic[version='>=0.1.0,<0.2.0'] +conda-forge::langchain[version='>=0.1.9,<0.2.0'] +conda-forge::fastapi[version='>=0.103.2,<0.104.0'] +conda-forge::uvicorn[version='>=0.28.0,<0.29.0'] +conda-forge::pytorch-gpu[version='>=2.0.0,<2.1.0'] +conda-forge::tensorflow[version='>=2.12.1,<2.13.0'] +conda-forge::python[version='>=3.10.13,<3.11.0'] +conda-forge::pip[version='>=23.3.2,<23.4.0'] +conda-forge::torchvision[version='>=0.15.2,<0.16.0'] +conda-forge::numpy[version='>=1.26.4,<1.27.0'] +conda-forge::pandas[version='>=2.1.4,<2.2.0'] +conda-forge::scikit-learn[version='>=1.4.1.post1,<1.5.0'] +conda-forge::jinja2[version='>=3.1.3,<3.2.0'] +conda-forge::matplotlib[version='>=3.8.3,<3.9.0'] +conda-forge::sagemaker-headless-execution-driver[version='>=0.0.12,<0.1.0'] +conda-forge::ipython[version='>=8.22.2,<8.23.0'] +conda-forge::scipy[version='>=1.11.4,<1.12.0'] +conda-forge::keras[version='>=2.12.0,<2.13.0'] +conda-forge::py-xgboost-gpu[version='>=1.7.6,<1.8.0'] +conda-forge::jupyterlab[version='>=4.1.4,<4.2.0'] +conda-forge::ipywidgets[version='>=8.1.2,<8.2.0'] +conda-forge::conda[version='>=23.11.0,<23.12.0'] +conda-forge::boto3[version='>=1.34.51,<1.35.0'] +conda-forge::sagemaker-python-sdk[version='>=2.212.0,<2.213.0'] +conda-forge::supervisor[version='>=4.2.5,<4.3.0'] +conda-forge::autogluon[version='>=0.8.2,<0.9.0'] +conda-forge::aws-glue-sessions[version='>=1.0.4,<1.1.0'] +conda-forge::sagemaker-kernel-wrapper[version='>=0.0.2,<0.1.0'] +conda-forge::jupyter-ai[version='>=2.11.0,<2.12.0'] +conda-forge::jupyter-scheduler[version='>=2.5.1,<2.6.0'] +conda-forge::nodejs[version='>=18.19.0,<18.20.0'] +conda-forge::jupyter-lsp[version='>=2.2.4,<2.3.0'] +conda-forge::jupyterlab-lsp[version='>=5.0.3,<5.1.0'] +conda-forge::python-lsp-server[version='>=1.10.1,<1.11.0'] +conda-forge::notebook[version='>=7.1.1,<7.2.0'] +conda-forge::altair[version='>=5.2.0,<5.3.0'] +conda-forge::sagemaker-studio-analytics-extension[version='>=0.0.21,<0.1.0'] +conda-forge::jupyter-dash[version='>=0.4.2,<0.5.0'] +conda-forge::sagemaker-jupyterlab-extension[version='>=0.2.0,<0.3.0'] +conda-forge::sagemaker-jupyterlab-emr-extension[version='>=0.1.9,<0.2.0'] +conda-forge::amazon-sagemaker-jupyter-scheduler[version='>=3.0.7,<3.1.0'] +conda-forge::jupyter-server-proxy[version='>=4.1.2,<4.2.0'] +conda-forge::amazon-codewhisperer-jupyterlab-ext[version='>=2.0.1,<2.1.0'] +conda-forge::jupyterlab-git[version='>=0.50.0,<0.51.0'] +conda-forge::sasl[version='>=0.3.1,<0.4.0'] +conda-forge::thrift_sasl[version='>=0.4.3,<0.5.0'] +conda-forge::pyhive[version='>=0.7.0,<0.8.0'] +conda-forge::python-gssapi[version='>=1.8.3,<1.9.0'] diff --git a/build_artifacts/v1/v1.6/v1.6.1/gpu.env.out b/build_artifacts/v1/v1.6/v1.6.1/gpu.env.out new file mode 100644 index 00000000..8469595f --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/gpu.env.out @@ -0,0 +1,670 @@ +# 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/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_5.conda#d4ff227c46917d3b4565302a2bbb276b +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda#f36c115f1ee199da648e0597ec2047ad +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_5.conda#f6f6600d18a4047b54f803cf708b868a +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.5-hfc55251_0.conda#04b88013080254850d6c01ed54810589 +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-18.1.1-h4dfa4b3_0.conda#89023cfc92c7e9dd2e822ebdb4f753b0 +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#562b26ba2e19059551a811e72ab7f793 +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/bzip2-1.0.8-hd590300_5.conda#69b8b6202a07720f448be700e300ccf4 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda#7aca3059a1729aa76c597603f10b0dd3 +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3 +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda#30fd6e37fe21f86f4bd26d6ee73eeec7 +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.45.2-h2797004_0.conda#866983a220e27a80cb75e85cb30466a1 +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.4.20240210-h59595ed_0.conda#97da8860a0da5413c7c98a3b3838a645 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.2.2-hbcca054_0.conda#2f4327a1cbe7f022401b236e915a5fef +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.2.1-hd590300_1.conda#9d731343cff6ee2e5a25c4a091bf8e2a +https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4 +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-2024a-h0c530f3_0.conda#161081fc7cec0bfda0d86d7cb595f8d8 +https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0 +https://conda.anaconda.org/conda-forge/linux-64/python-3.10.13-hd12c33a_1_cpython.conda#ed38140af93f81319ebc472fbcf16cca +https://conda.anaconda.org/conda-forge/noarch/absl-py-2.1.0-pyhd8ed1ab_0.conda#035d1d58677c13ec93122d9eb6b8803b +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_5.conda#7a6bd7a12a4bd359e2afe6c0fa1acace +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_5.conda#e73e9cfd1191783392131e6238bdb3e9 +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.25-pthreads_h413a1c8_0.conda#d172b34a443b95f86089e8229ddc9a17 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-20_linux64_openblas.conda#2b7bb4f7562c8cf334fc2e20c2d28abc +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-20_linux64_openblas.conda#36d486d72ab64ffea932329a1d3729a3 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-20_linux64_openblas.conda#6fabc51f5e647d09cc010c40061557e0 +https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.10-4_cp310.conda#26322ec5d7712c3ded99dd656142b8ce +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py310hb13e2d6_0.conda#6593de64c935768b6bad3e19b3e978be +https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda#79002079284aa895f883c6b7f3f88fd6 +https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.8-py310h2372a71_0.conda#bd19b3096442ea342c4a5208379660b1 +https://conda.anaconda.org/conda-forge/linux-64/cudatoolkit-11.8.0-h4ba93d1_13.conda#eb43f5f1f16e2fad2eba22219c3e499b +https://conda.anaconda.org/conda-forge/noarch/cuda-version-11.8-h70ddcb2_3.conda#670f0e1593b8c1d84f57ad5fe5256799 +https://conda.anaconda.org/conda-forge/linux-64/cudnn-8.9.7.29-hbc23b4c_3.conda#4a2d5fab2871d95544de4e1752948d0f +https://conda.anaconda.org/conda-forge/noarch/filelock-3.13.1-pyhd8ed1ab_0.conda#0c1729b74a8152fde6a38ba0a2ab9f45 +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py310h2372a71_0.conda#f6703fa0214a00bf49d1bef6dc7672d0 +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.3-pyhd8ed1ab_0.conda#e7d8df6509ba635247ff9aea31134262 +https://conda.anaconda.org/conda-forge/linux-64/libmagma-2.7.1-hc72dce7_6.conda#afd44491bd564d8dd6cda5d9aecaa452 +https://conda.anaconda.org/conda-forge/linux-64/libmagma_sparse-2.7.1-h8354cda_6.conda#5e835e8d48283880ea6ef11920c7fb14 +https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-3.21.12-hfc55251_2.conda#e3a7d4ba09b8dc939b98fef55f539220 +https://conda.anaconda.org/conda-forge/linux-64/magma-2.7.1-ha770c72_6.conda#f8ffd335f311e9749428727752e815bb +https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda#cc47e1facc155f91abd89b11e48e72ff +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda#d66573916ffcf376178462f1b61c941e +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.6-h232c23b_0.conda#d86653ff5ccb88bf7f13833fdd8789e0 +https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.9.3-default_h554bfaf_1009.conda#f36ddc11ca46958197a45effdd286e45 +https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.11.0-h00ab1b0_1.conda#4531d2927578e7e254ff3bcf6457518c +https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.2.1-h84fe81f_16997.conda#a7ce56d5757f5b57e7daabe703ade5bb +https://conda.anaconda.org/conda-forge/linux-64/nccl-2.20.5.1-h6103f9b_0.conda#bedb0b33c5e3e6fbd4dce4f6f07fea72 +https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda#425fce3b531bed6ec3c74fab3e5f0a1c +https://conda.anaconda.org/conda-forge/linux-64/sleef-3.5.1-h9b69904_2.tar.bz2#6e016cf4c525d04a7bd038cee53ad3fd +https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-h59595ed_1.conda#e358c7c5f6824c272b5034b3816438a7 +https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h9458935_0.conda#4c28f3210b30250037a4a627eeee9e0f +https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-hfe3b2da_0.conda#289c71e83dc0daa7d4c81f04180778ca +https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.2-py310h3ec546c_1.tar.bz2#73f6fa50c32ddd985cf5fba7b890a75c +https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_0.conda#dbf6e2d89137da32fa6670f3bffc024e +https://conda.anaconda.org/conda-forge/noarch/sympy-1.12-pypyh9d50eac_103.conda#2f7d6347d7acf6edf1ac7f2189f44c8f +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.5.0-pyha770c72_0.conda#43e7d9e50261fb11deb76e17d8431aac +https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.0.0-cuda112py310he33e0d6_200.conda#87729716665c9fa180d7e42fde5c53ab +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.1-py310h2372a71_1.conda#bb010e368de4940771368bc3dc4c63e7 +https://conda.anaconda.org/conda-forge/noarch/accelerate-0.21.0-pyhd8ed1ab_0.conda#172fa1bba08cd6b431a1739090ab0ffc +https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.1-py310h2372a71_0.conda#f20cd4d9c1f4a8377d0818c819918bbb +https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2#d1e1eb7e21a9e2c74279d87dafb68156 +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.5.0-hd8ed1ab_0.conda#b3c594fde1a80a1fc3eb9cc4a5dfe392 +https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda#3ce482ec3066e6d809dbbb1d1679f215 +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.0.5-py310h2372a71_0.conda#d4c91d19e4f2f18b64753ac660edad79 +https://conda.anaconda.org/conda-forge/noarch/idna-3.6-pyhd8ed1ab_0.conda#1a76f09108576397c41c0b0c5bd84134 +https://conda.anaconda.org/conda-forge/linux-64/yarl-1.9.4-py310h2372a71_0.conda#4ad35c8f6a64a6ab708780dad603aef4 +https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.9.3-py310h2372a71_1.conda#dd21c88dfec3253cb9888c0e93fa5cd1 +https://conda.anaconda.org/conda-forge/noarch/aioitertools-0.11.0-pyhd8ed1ab_0.tar.bz2#59c40397276a286241c65faec5e1be3c +https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_0.tar.bz2#2cfa3e1cf3fb51bb9b17acc5b5e9ea11 +https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda#2cf4264fffb9e6eff6031c5b6884d61c +https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.0.9-py310hd8f1fbe_9.conda#e2047ad2af52c01845f58b580c6cbd5c +https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025 +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.18-pyhd8ed1ab_0.conda#bf61cfd2a7f212efba378167a07d4a6a +https://conda.anaconda.org/conda-forge/noarch/botocore-1.34.51-pyge310_1234567_0.conda#f8980578a765dd28417953dddfefe5bc +https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py310h2372a71_0.conda#d9dc9c45bdc2b38403e6b388581e92f0 +https://conda.anaconda.org/conda-forge/noarch/aiobotocore-2.12.1-pyhd8ed1ab_0.conda#045560daef58c75a759c2638fbdb5c6a +https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8 +https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.11-hd590300_1.conda#0bb492cca54017ea314b809b1ee3a176 +https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda#2e4d6bc0b14e10f895fc6791a7d9b26a +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.10.0-pyha770c72_0.conda#ae2ad334f34040e147cc5824b450463b +https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.3.2-pyhd8ed1ab_0.conda#bb8086d3dd1b2cfeebd15f9a7e56f7bd +https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda#405678b942f2481cecdb3e010f4925d9 +https://conda.anaconda.org/conda-forge/linux-64/pyrsistent-0.20.0-py310h2372a71_0.conda#e7f8dc8c62e136573c84116a5e743aed +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.17.3-pyhd8ed1ab_0.conda#723268a468177cd44568eb8f794e0d80 +https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda#98206ea9954216ee7540f0c773f2104d +https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3-pyhd8ed1ab_0.conda#d3076b483092a435832603243567bc31 +https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.4-py310hcc13569_0.conda#410f7e83992a591e492c25049a859254 +https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.1-pyhd8ed1ab_0.conda#2fcb582444635e2c402e8569bb94e039 +https://conda.anaconda.org/conda-forge/noarch/altair-5.2.0-pyhd8ed1ab_1.conda#1aebb1cef46d9cb76e0d38eed822348a +https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.10.1-pyhd8ed1ab_0.conda#a41cafc1fb653ce0e48b9310226e90fd +https://conda.anaconda.org/conda-forge/noarch/boto3-1.34.51-pyhd8ed1ab_0.conda#bd19311f73611626b31afc608af438cd +https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda#3d081de3a6ea9f894bbb585e8e3a4dcb +https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda#8d652ea2ee8eaee02ed8dc820bc794aa +https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda#490730480d76cf9c8f8f2849719c6e2b +https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda#7b517e7a6f0790337906c055aa97ca49 +https://conda.anaconda.org/conda-forge/noarch/certifi-2024.2.2-pyhd8ed1ab_0.conda#0876280e409658fc6f9e75d035960333 +https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2#b21ed0883505ba1910994f1df031a428 +https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2#914d6646c4dbb1fd3ff539830a12fd71 +https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2#9f765cbfab6870c8435b9eefecd7a1f4 +https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2#b748fbf7060927a6e82df7cb5ee8f097 +https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.4-pyhd8ed1ab_0.conda#20f047662cf4fa8b97836111df87dbb4 +https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda#9f359af5a886fd6ca6b2b6ea02e58332 +https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.10.0-hd8ed1ab_0.conda#c063ddbb9908499fd4f20b31dc67065a +https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.2-pyhd8ed1ab_0.conda#af5fa2d2186003472e766a23c46cae04 +https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda#948d84721b578d426294e17a02e24cbb +https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.1-py310hc6cd4ac_0.conda#1ea80564b80390fa25da16e4211eb801 +https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364 +https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094 +https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda#81a3be0b2023e1ea8555781f0ad904a2 +https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2#b21613793fcc81d944c76c9f2864a7de +https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263 +https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda#629f3203c99b32e0988910c93e77f3b6 +https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761 +https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda#68f0738df502a14213624b288c60c9ad +https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.42-pyha770c72_0.conda#0bf64bf10eee21f46ac83c161917fa86 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.17.2-pyhd8ed1ab_0.conda#140a7f159396547e9799aa98f9f0742e +https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda#5f25798dcefd8252ce5f9dc494d5f571 +https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda#e16be50e378d8a4533b989035b196ab8 +https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2#6784285c7e55cb7212efabc79e4c2883 +https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda#e7df0fdd404616638df5ece6e69ba7af +https://conda.anaconda.org/conda-forge/noarch/ipython-8.22.2-pyh707e725_0.conda#f0abe827c8a7c6d91bccdf90cb1fbee3 +https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.2.0-pyhd8ed1ab_0.conda#a0bc3eec34b0fab84be6b2da94e98e20 +https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.7.2-py310hff52083_0.conda#cb92c27600d5716fd526a206aa43342c +https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2#c3788462a6fbddafdb413a9f9053e58d +https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h59595ed_1.conda#7fc9d3288d2420bb3637647621018000 +https://conda.anaconda.org/conda-forge/linux-64/pyzmq-25.1.2-py310h795f18f_0.conda#fa09f98f3acfd3f5de30bd2d27d5cb7f +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4-py310h2372a71_0.conda#48f39c24349d9ae5c8e8873c42fb6170 +https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.1-pyhd8ed1ab_0.conda#c03972cfce69ad913d520c652e5ed908 +https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda#6598c056f64dc8800d40add25e4e2c34 +https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.3-pyhd33586a_0.conda#e0deff12c601ce5cb7476f93718f3168 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py310h2fee648_0.conda#45846a970e71ac98fd327da5d40a0a2c +https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py310h2372a71_4.conda#68ee85860502d53c8cbfa0e4cef0f6cb +https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda#3afef1f55a1366b4d3b6a0d92e2235e4 +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_0.tar.bz2#642d35437078749ef23a5dca2c9bb1f3 +https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20240316-pyhd8ed1ab_0.conda#7831efa91d57475373ee52fb92e8d137 +https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda#b77d8c2313158e6e461ca0efb1c2c508 +https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2#4cb68948e0b8429534380243d063a27a +https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-2.4-py310hff52083_3.conda#08ec1463dbc5c806a32fc431874032ca +https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2#fed45fc5ea0813240707998abe49f520 +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_0.conda#0944dc65cb4a9b5b68522c3bb585d41c +https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda#166212fe82dad8735550030488a01d03 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.17.3-pyhd8ed1ab_0.conda#7a709748e93f0b2c33d6b5b676b6d9d0 +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.6.3-pyhd8ed1ab_1.conda#2ac0d00a0fb3f1a4c81c460ba56bb23b +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_0.conda#219b3833aa8ed91d47d1be6ca03f30be +https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda#3f144b2c34f8cb5a9abd9ed23a39c561 +https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda#332493000404d8411859539a5a630865 +https://conda.anaconda.org/conda-forge/noarch/setuptools-69.2.0-pyhd8ed1ab_0.conda#da214ecd521a720a9d521c68047682dc +https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda#daf5160ff9cde3a468556965329085b9 +https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda#0ed9d7c0e9afa7c025807a9a8136ea3e +https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 +https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda#afcd1b53bcac8844540358e33f33d28f +https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda#5cbee699846772cc939bef23a0d524ed +https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.19.1-pyhd8ed1ab_0.conda#4d3ceee3af4b0f9a1f48f57176bf8625 +https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.3-pyhd8ed1ab_0.conda#ca3d437c0ef2e87f63d085822c74c49a +https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda#15b51397e0fe8ea7d7da60d83eb76ebc +https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9 +https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.2-pyhd8ed1ab_0.conda#5ab3248dd05c543dc631276455ef6a54 +https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2#eb67e3cace64c66233e2d35949e20f92 +https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda#24fba5a9d161ad8103d4e84c0e1a3ed4 +https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda#9a19b94034dd3abb2b348c8b93388035 +https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyh41d4057_0.conda#ada5a17adcd10be4fc7e37e4166ba0e2 +https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.7.0-pyhd8ed1ab_0.conda#50ad31e07d706aae88b14a4ac9c73f23 +https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.10.0-pyhd8ed1ab_0.conda#016d56f5d81b9364d1da5f4895a2a9f8 +https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.4-pyhd8ed1ab_0.conda#91f93e1ebf6535be518715432d89fd92 +https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda#9669586875baeced8fc30c0826c3270e +https://conda.anaconda.org/conda-forge/noarch/json5-0.9.24-pyhd8ed1ab_0.conda#fc9780a517b51ea3798fc011c17ffd51 +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda#7f4a9e3fcff3f6356ae99244a014da6a +https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda#a30144e4156cdbb236f99ebb49828f8b +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.24.0-pyhd8ed1ab_0.conda#327bfe1c99154f02259d29810bd70afc +https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda#3d85618e2c97ab896b5b5e298d32b5b3 +https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.1.5-pyhd8ed1ab_0.conda#04b1ca9d7ac414b3f5c3fb16066c6861 +https://conda.anaconda.org/conda-forge/noarch/amazon-codewhisperer-jupyterlab-ext-2.0.1-pyhd8ed1ab_0.conda#ab9bb3e630d872e9d38c8c18a0cba7b4 +https://conda.anaconda.org/conda-forge/noarch/aws-embedded-metrics-3.2.0-pyhd8ed1ab_0.conda#e1c511655b6e9eb0265c9715c7fa410f +https://conda.anaconda.org/conda-forge/noarch/croniter-1.4.1-pyhd8ed1ab_0.conda#7a4568626f8d6e7c63dcb25d5501a967 +https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.6.0-pyh1a96a4e_0.conda#50ea2067ec92dfcc38b4f07992d7e235 +https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.1.12.3-ha770c72_0.conda#cdea66892b19a454f939487318b6c517 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.2-pyhd8ed1ab_0.conda#7a0bfebd69213722427cb61b077b4187 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.2-pyhd8ed1ab_0.conda#e14e35cc4a5c90694bb41c5317b576a8 +https://conda.anaconda.org/conda-forge/linux-64/pydantic-1.10.14-py310h2372a71_0.conda#6aca52bad315e6b841a32d6b3b0cdb82 +https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.3-py310hc6cd4ac_0.conda#fb478fd83c001cbf8ab01c29b857262e +https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-1.4.49-py310h2372a71_1.conda#cdeaf46006791202a7597bf2a0e6ad9e +https://conda.anaconda.org/conda-forge/noarch/jupyter_scheduler-2.5.1-pyha770c72_0.conda#3d250834fde789b6cb96dc11a43d1df2 +https://conda.anaconda.org/conda-forge/noarch/jupyter-scheduler-2.5.1-hd8ed1ab_0.conda#bb6463ad5d244321f64a231ba9b6cf2a +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-jupyter-scheduler-3.0.7-pyhd8ed1ab_1.conda#ee635c11a576839138a93fc46e0f389b +https://conda.anaconda.org/conda-forge/linux-64/cryptography-42.0.5-py310h75e40e8_0.conda#47e6ea7109182e9e48f8c5839f1bded7 +https://conda.anaconda.org/conda-forge/noarch/tenacity-8.2.3-pyhd8ed1ab_0.conda#1482e77f87c6a702a7e05ef22c9b197b +https://conda.anaconda.org/conda-forge/noarch/pyathena-3.5.1-pyhd8ed1ab_0.conda#1c302abfabf4d08375990de11ff98242 +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-4.9.4-py310hcfd0673_0.conda#d6df7beac08573177dd9a6a560d1d180 +https://conda.anaconda.org/conda-forge/noarch/asn1crypto-1.5.1-pyhd8ed1ab_0.tar.bz2#f3f2ab3ce28979a24d1a988ba211eb9b +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.0-pyhd8ed1ab_0.conda#4501c96a5e9f18239ae6e5944604d493 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-execution-0.1.2-pyhd8ed1ab_0.conda#a16fa2f5c791f94b459acd5c34ab8670 +https://conda.anaconda.org/conda-forge/noarch/sqlparse-0.4.4-pyhd8ed1ab_0.conda#2e2f31b3b1c866c29636377e14f8c4c6 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-magic-0.1.0-pyhd8ed1ab_0.conda#4fd1875033a6ca132d227f3587415fd5 +https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_0.conda#4c33109f652b5d8c995ab243436c9370 +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.3-pyhd8ed1ab_0.conda#6618ce22c81277d6ebaa45364c9d6b76 +https://conda.anaconda.org/conda-forge/linux-64/ansi2html-1.9.1-py310hff52083_0.conda#2213ea76fd340e7c848c1be0cbdfc579 +https://conda.anaconda.org/conda-forge/noarch/textwrap3-0.9.2-py_0.tar.bz2#1f84e74e9dbe2e5ae38c58496bffaca8 +https://conda.anaconda.org/conda-forge/noarch/ansiwrap-0.8.4-py_0.tar.bz2#f09557e2a7cbd2470a2ab6353000cebd +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.5.0-h27087fc_0.tar.bz2#a08150fd2298460cd1fcccf626305642 +https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.3-pyhd8ed1ab_0.conda#192278292e20704f663b9c766909d67b +https://conda.anaconda.org/conda-forge/linux-64/astroid-3.0.3-py310hff52083_0.conda#7d18b84331cda8271c9ed67d1ca05d47 +https://conda.anaconda.org/conda-forge/noarch/astunparse-1.6.3-pyhd8ed1ab_0.tar.bz2#000b6f68a0bfaba800ced7500c11780f +https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.43-hcad00b1_0.conda#8292dea9e022d9610a11fce5e0896ed8 +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.0-hf2295e7_1.conda#0725f6081030c29b109088639824ff90 +https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-hd4edc92_1.tar.bz2#6c72ec3e660a51736913ef6ea68c454b +https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2#d9c69a24ad678ffce24c6543a0176b00 +https://conda.anaconda.org/conda-forge/noarch/autogluon.common-0.8.2-pyhd8ed1ab_4.conda#e24166dee3b1430877a324715caf8f5d +https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.0-py310hd41b1e2_0.conda#85d2aaa7af046528d339da1e813c3a9f +https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda#5cd86562580f274031ede6aa6aa24441 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_9.conda#61641e239f96eae2b8492dc7e755828c +https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.0.9-h166bdaf_9.conda#081aa22f4581c08e4372b0b6c2f8478e +https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.0.9-h166bdaf_9.conda#1f0a03af852a9659ed2bf08f2f1704fd +https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_9.conda#d47dee1856d9cb955b8076eeff304a5b +https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_9.conda#4601544b4982ba1861fa9b9c607b2c06 +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-15.1.0-py310h2372a71_0.conda#72637c58d36d9475fda24700c9796f19 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.50.0-py310h2372a71_0.conda#85c48c98c9f2b72b384fb11c9004920b +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda#009981dd9cfcaa4dbfa25ffaed86bcae +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py310hd41b1e2_1.conda#b8d67603d43b23ce7e988a5d81a7ab79 +https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-2.1.5.1-hd590300_1.conda#323e90742f0f48fc22bea908735f55e6 +https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2#76bbff344f0134279f225174e9064c8f +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.18-h0b41bf4_0.conda#6aa9c9de5542ecb07fdda9ca626252d8 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.3.1-hd590300_0.conda#82bf6f63eb15ef719b556b63feec3a77 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.5.1-h8b53f26_1.conda#5b09e13d732dda1a2bc9adc711164f4d +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-haa2dc70_1.conda#980d8aca0bc23ca73fa8caa3e7c84c28 +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda#2c80dc38fface310c9bd81b17037fee5 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.15-h0b41bf4_0.conda#33277193f5b92bad9fdd230eb700929c +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.0-hfec8fc6_2.conda#5ce6a42505c6e9e6151c54c3ec8d68ea +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.5.0-py310h582fbeb_1.conda#cf62f6cff3536eafaaa0c740b0bf7465 +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda#b9a4dacf97241704529131a0dfc0494f +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.3-py310h62c0568_0.conda#4a7296c0273eb01dfbed728dd6a6725a +https://conda.anaconda.org/conda-forge/noarch/joblib-1.3.2-pyhd8ed1ab_0.conda#4da50d410f553db77e62ab62ffaa1abc +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.11.4-py310hb13e2d6_0.conda#f0063b2885bfae11324a00a693f88781 +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.3.0-pyhc1e730c_0.conda#698d2d2b621640bddb9191f132967c9f +https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.4.1.post1-py310h1fdf081_0.conda#2706ad1a5f6cbad8b57d4094889d1e33 +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2#3faab06a954c2a04039983f2c4a50d99 +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.2-pyhd8ed1ab_0.conda#2b8dfb969f984497f3f98409a9545776 +https://conda.anaconda.org/conda-forge/linux-64/autogluon.core-0.8.2-light_py310h2d11d36_6.conda#9de8e45568202a91466af4d849c7e919 +https://conda.anaconda.org/conda-forge/noarch/autogluon.features-0.8.2-pyhd8ed1ab_3.conda#c827eccfb0ddb1484d0e00f45242b8f8 +https://conda.anaconda.org/conda-forge/linux-64/chardet-5.2.0-py310hff52083_1.conda#a677136a83b823803d2f92045f885be2 +https://conda.anaconda.org/conda-forge/noarch/binaryornot-0.4.4-py_1.tar.bz2#a556fa60840fcb9dd739d186bfd252f7 +https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda#f3ad426304898027fc619827ff428eca +https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_1.conda#ba8aba332d8868897ce44ad74015a7fe +https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_0.conda#4b11845622b3c3178c0e989235b53975 +https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda#776a8dd9e824f77abac30e6ef43a8f7a +https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda#93a8e71256479c62074356ef6ebf501b +https://conda.anaconda.org/conda-forge/noarch/rich-13.7.1-pyhd8ed1ab_0.conda#ba445bf767ae6f0d959ff2b40c20912b +https://conda.anaconda.org/conda-forge/noarch/cookiecutter-2.6.0-pyhca7485f_0.conda#d6260b53b9db90017321af0b45cc00da +https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda#78745f157d56877a2c6e7b386f66f3e2 +https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.21.4-pyhd8ed1ab_0.conda#d47cf217a7bcc3a03dd1c6169c3f0f98 +https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py310h2372a71_0.conda#efdca5c3783dae00552f389bd7b56c3d +https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.0-hd590300_0.conda#71b89db63b5b504e7afc8ad901172e1e +https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.1-hc309b26_1.conda#cc09293a2c2b7fd77aff284f370c12c0 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-h4d4d85c_2.conda#9ca99452635fe03eb5fa937f5ae604b0 +https://conda.anaconda.org/conda-forge/linux-64/s2n-1.3.49-h06160fa_0.conda#1d78349eb26366ecc034a4afe70a8534 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.32-he9a53bd_1.conda#8a24e5820f4a0ffd2ed9c4722cd5d7ca +https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.7.11-h00aa349_4.conda#cb932dff7328ff620ce8059c9968b095 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-h4d4d85c_1.conda#eba092fc6de212a01de0065f38fe8bbb +https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.3-h28f7589_1.conda#97503d3e565004697f1651753aa95b9e +https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.17-h4d4d85c_1.conda#30f9df85ce23cd14faa9a4dfa50cca2b +https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.3.1-h2e3709c_4.conda#2cf21b1cbc1c096a28ffa2892257a2c1 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.9.3-hb447be9_1.conda#c520669eb0be9269a5f0d8ef62531882 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.14-hf3aad02_1.conda#a968ffa7e9fe0c257628033d393e512f +https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.21.0-hb942446_5.conda#07d92ed5403ad7b5c66ffd7d5b8f7e57 +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.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.2-h659d440_0.conda#cd95826dbd331ed1be26bdf401432844 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.27.0-hd590300_0.conda#f6afff0e9ee08d2f1b897881a4f38cdb +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.58.0-h47da74e_1.conda#700ac6ea6d53d5510591c4344d5c989a +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda#1f5a58e686b13bcfde88b93f547d23fe +https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.6.0-hca28451_0.conda#704739398d858872cb91610f49f0ef29 +https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.10.57-h85b1a90_19.conda#0605d3d60857fc07bd6a11e878fe0f08 +https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-he1b5a44_1004.tar.bz2#cddaf2c63ea4a5901cf09524c490ecdc +https://conda.anaconda.org/conda-forge/linux-64/glog-0.6.0-h6f12383_0.tar.bz2#b31f3565cb84435407594e548a2fb7b2 +https://conda.anaconda.org/conda-forge/linux-64/libabseil-20230125.3-cxx17_h59595ed_0.conda#d1db1b8be7c3a8983dcbbbfe4f0765de +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/re2-2023.03.02-h8c504da_0.conda#206f8fa808748f6e90599c3368a1114e +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.conda#68c34ec6149623be41a1933ab996a209 +https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.54.3-hb20ce57_0.conda#7af7c59ab24db007dfd82e0a3a343f66 +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.12.0-hac9eb74_1.conda#0dee716254497604762957076ac76540 +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.18.1-h8fd135c_2.conda#bbf65f7688512872f063810623b755dc +https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2#ede4266dc02e875fe1ea77b25dd43747 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda#318b08df404f9c9be5712aaa5a6f0bb0 +https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.10-h9fff704_0.conda#e6d228cd0bb74a51dd18f5bfce0b4115 +https://conda.anaconda.org/conda-forge/linux-64/orc-1.9.0-h2f23424_1.conda#9571eb3eb0f7fe8b59956a7786babbcd +https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-hd590300_0.conda#8feeecae73aeef0a2985af46b5a2c1df +https://conda.anaconda.org/conda-forge/linux-64/rdma-core-28.9-h59595ed_1.conda#aeffb7c06b5f65e55e6c637408dc4100 +https://conda.anaconda.org/conda-forge/linux-64/ucx-1.14.1-h64cca9d_5.conda#39aa3b356d10d7e5add0c540945a0944 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-12.0.1-hb87d912_8_cpu.conda#3f3b11398fe79b578e3c44dd00a44e4a +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-12.0.1-py310h0576679_8_cpu.conda#27f55ccfd038d6665facb04a0aa572c5 +https://conda.anaconda.org/conda-forge/noarch/pyarrow-hotfix-0.6-pyhd8ed1ab_0.conda#ccc06e6ef2064ae129fab3286299abda +https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda#f08fb5c89edfc4aadee1c81d4cfb1fa1 +https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.4.1-py310h2372a71_0.conda#b631b889b0b4bc2fca7b8b977ca484b2 +https://conda.anaconda.org/conda-forge/noarch/datasets-2.18.0-pyhd8ed1ab_0.conda#3482c9b417757df305ff4e3a7e4b7c10 +https://conda.anaconda.org/conda-forge/noarch/responses-0.18.0-pyhd8ed1ab_0.tar.bz2#a10d30e613a2a1a78a89ceadf3832e7c +https://conda.anaconda.org/conda-forge/noarch/evaluate-0.4.1-pyhd8ed1ab_0.conda#ea228540526db4dde8ad8f2309bc1d40 +https://conda.anaconda.org/conda-forge/noarch/gdown-5.1.0-pyhd8ed1ab_0.conda#6f880647c0270648f710f334c60bc76c +https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.1.99-h180e1df_0.conda#056064bd3ef47439e3e78fac28449fbf +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.1.99-py310hebdb9f0_0.conda#b3a5908ac3912b26d6a8b77faebe6eca +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.1.99-h180e1df_0.conda#c67cc412366709c1c3225f19f8aed63b +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.1.99-hff52083_0.conda#578969452de13e4ad69edf18ee2b3d5a +https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d +https://conda.anaconda.org/conda-forge/linux-64/regex-2023.12.25-py310h2372a71_0.conda#4a9ba4e7af60356e63b38a6d419acad6 +https://conda.anaconda.org/conda-forge/noarch/sacremoses-0.0.53-pyhd8ed1ab_0.tar.bz2#76c3c384fe0941f1b08193736e8e277a +https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.2-py310hcb5633a_0.conda#a1e978544ef765ef9ac2f2320e43bacd +https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.13.3-py310he1f1126_0.conda#ea2281fe0bf70c1c83393565342a8a8c +https://conda.anaconda.org/conda-forge/noarch/transformers-4.31.0-pyhd8ed1ab_0.conda#8cccf394a00fbfef2f3d6028422ae5cc +https://conda.anaconda.org/conda-forge/noarch/nlpaug-1.1.11-pyhd8ed1ab_1.conda#4e231f0fa7db9388cf4c8539d623ac62 +https://conda.anaconda.org/conda-forge/noarch/nltk-3.8.1-pyhd8ed1ab_0.conda#518c769ca4273480a99be6e559a26192 +https://conda.anaconda.org/conda-forge/noarch/typish-1.9.3-pyhd8ed1ab_0.tar.bz2#81b3f3101aa2af117924d908a1b33c67 +https://conda.anaconda.org/conda-forge/noarch/nptyping-2.4.1-pyhd8ed1ab_0.tar.bz2#7929b4ae7565a66f0fab4b70cfb90594 +https://conda.anaconda.org/conda-forge/noarch/omegaconf-2.2.3-pyhd8ed1ab_0.conda#cebc9f0fc6eebdcc368bb30ba30f2fd5 +https://conda.anaconda.org/conda-forge/noarch/markdown-3.6-pyhd8ed1ab_0.conda#06e9bebf748a0dea03ecbe1f0e27e909 +https://conda.anaconda.org/conda-forge/noarch/ordered-set-4.1.0-pyhd8ed1ab_0.tar.bz2#9a8714decb3967b290263817e876d8a9 +https://conda.anaconda.org/conda-forge/noarch/model-index-0.1.11-pyhd8ed1ab_0.conda#6aecca21351e44095ffd2901ee46337a +https://conda.anaconda.org/conda-forge/noarch/wheel-0.42.0-pyhd8ed1ab_0.conda#1cdea58981c5cbc17b51973bcaddcea7 +https://conda.anaconda.org/conda-forge/noarch/pip-23.3.2-pyhd8ed1ab_0.conda#8591c748f98dcc02253003533bc2e4b1 +https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2#4759805cce2d914c38472f70bf4d8bcb +https://conda.anaconda.org/conda-forge/noarch/openmim-0.3.7-pyhd8ed1ab_0.conda#e081b8fa91b884435725f0caa13866ff +https://conda.anaconda.org/conda-forge/linux-64/protobuf-4.21.12-py310heca2aa9_0.conda#90bb7e1b729c4b50272cf78be97ab912 +https://conda.anaconda.org/conda-forge/noarch/pytesseract-0.3.10-pyhd8ed1ab_0.tar.bz2#04f4becceb0c032c5dbdae6ad18bd95e +https://conda.anaconda.org/conda-forge/noarch/lightning-utilities-0.11.0-pyhd8ed1ab_0.conda#45f86a84ae04e7be9fa602707a17af5c +https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.0.3-pyhd8ed1ab_0.conda#4e8849ba2fa06393b7ab5a50c6a4256c +https://conda.anaconda.org/conda-forge/noarch/pytorch-lightning-2.0.9-pyhd8ed1ab_0.conda#3e96ed529412338e38af9004e22267de +https://conda.anaconda.org/conda-forge/noarch/pytorch-metric-learning-1.7.3-pyhd8ed1ab_0.conda#139aa590e345e10f4572812a329806f4 +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.2.1-pyhd8ed1ab_0.conda#b325bfc4cff7d7f8a868f1f7ecc4ed16 +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.3-py310h2372a71_0.conda#21362970a6fea90ca507c253c20465f2 +https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 +https://conda.anaconda.org/conda-forge/noarch/partd-1.4.1-pyhd8ed1ab_0.conda#acf4b7c0bcd5fa3b0e05801c4d2accd6 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.3.1-pyhd8ed1ab_0.conda#52dd56ce3afa6a52c2f3d3116875ff32 +https://conda.anaconda.org/conda-forge/noarch/imageio-2.34.0-pyh4b66e23_0.conda#b8853659d596f967c661f544dd89ede7 +https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.4.1-py310h1f7b6fc_1.conda#be6f0382440ccbf9fb01bb19ab1f1fc0 +https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.5-h0f2a231_0.conda#009521b7ed97cca25f8f997f9e745976 +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.0.7-h0b41bf4_0.conda#49e8329110001f04923fe7e864990b0c +https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.13.2-hb4ffafa_0.conda#976aaf1afd331ed7346d649da5c5c1ee +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.1-h0b41bf4_3.conda#96f3b11872ef6fad973eac856cd2624f +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.2-h59595ed_1.conda#127b0be54c1c90760d7fe02ea7a56426 +https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda#418c6ca5929a611cbd69204907a83995 +https://conda.anaconda.org/conda-forge/linux-64/libavif-0.11.1-h8182462_2.conda#41c399ed4c439e37b844c24ab5621b5a +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-h59595ed_0.conda#fd486bffbf0d6841cf1456a8f2e3a995 +https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2023.8.12-py310hc929067_0.conda#61caf809753610c4c87d583765b1d478 +https://conda.anaconda.org/conda-forge/noarch/tifffile-2024.2.12-pyhd8ed1ab_0.conda#d5c8bef52be4e70c48b1400eec3eecc8 +https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.19.3-py310h769672d_2.tar.bz2#c0391107b0cd0010708d6969ed759e8b +https://conda.anaconda.org/conda-forge/noarch/seqeval-1.2.2-pyhd3deb0d_0.tar.bz2#d4436c8a8b9fb6d60fe4e7b9f097f9bb +https://conda.anaconda.org/conda-forge/noarch/cachetools-5.3.3-pyhd8ed1ab_0.conda#cd4c26c702a9bcdc70ff05b609ddacbe +https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.5.1-pyhd8ed1ab_0.conda#fb1a800972b072aa4d16450983c81418 +https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.3.0-pyhd8ed1ab_0.conda#26db749166cdca55e5ef1ffdc7767d0e +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda#b50aec2c744a5c493c09cce9e2e7533e +https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_0.tar.bz2#caabbeaa83928d0c3e3949261daa18eb +https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2#03bf410858b2cefc267316408a77c436 +https://conda.anaconda.org/conda-forge/noarch/google-auth-2.28.2-pyhca7485f_0.conda#f8879cf0e5b8f7761d01bce40ce7c089 +https://conda.anaconda.org/conda-forge/noarch/blinker-1.7.0-pyhd8ed1ab_0.conda#550da20b2c2e38be9cc44bb819fda5d5 +https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_1.conda#74f76d4868dbba5870f2cf1d9b12d8f3 +https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2#8f882b197fd9c4941a787926baea4868 +https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.4.0-pyhd8ed1ab_0.conda#a55b220de8970208f583e38639cfbecc +https://conda.anaconda.org/conda-forge/noarch/google-auth-oauthlib-1.0.0-pyhd8ed1ab_1.conda#569e62e95b01b53e4ec7d9abe83b7385 +https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.54.3-py310heca2aa9_0.conda#7c82ea96968976ee2eb66a52f2decd8e +https://conda.anaconda.org/conda-forge/linux-64/tensorboard-data-server-0.7.0-py310h75e40e8_1.conda#e562478facfa960813945204273ecac5 +https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.0.1-pyhd8ed1ab_0.conda#af8d825d93dbe6331ee6d61c69869ca0 +https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.12.3-pyhd8ed1ab_0.conda#429d39f86cef8d0859d639804ae67aaf +https://conda.anaconda.org/conda-forge/linux-64/torchvision-0.15.2-cuda112py310h0801bf5_1.conda#f5680c812c287a92c4390dc245df2e5d +https://conda.anaconda.org/conda-forge/noarch/timm-0.9.16-pyhd8ed1ab_0.conda#bc15401d946adb3fbce34c4ba351dd20 +https://conda.anaconda.org/conda-forge/noarch/autogluon.multimodal-0.8.2-pyha770c72_5.conda#a8ca42e2b4ee0fd6dce729bc226dd0cc +https://conda.anaconda.org/conda-forge/noarch/plotly-5.19.0-pyhd8ed1ab_0.conda#669cd7065794633b9e64e6a9612ec700 +https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda#e7ba12deb7020dd080c6c70e7b6f6a3d +https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda#53fb86322bdb89496d7579fe3f02fd61 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda#0f69b688f52ff6da70bccb7ff7001d1d +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_1.conda#6185f640c43843e5ad6fd1c5372c3f80 +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/pixman-0.43.2-h59595ed_0.conda#71004cbf7924e19c02746ccde9fd7123 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda#b462a33c0be1421532f28bfe8f4a7514 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda#93ee23f12bc2e684548181256edd2cf6 +https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2#4b230e8381279d76131116660f5a241a +https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda#bce9f945da8ad2ae9b1d7165a64d0f87 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2#b4a4381d54784606820704f7b5f05a15 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.7-h8ee46fc_0.conda#49e482d882669206653b095f5206c05b +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda#82b6df12252e6f32402b96dacc656fec +https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2#06feff3d2634e3097ce2fe681474b534 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda#ed67c36f215b310412b2af935bf3e530 +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-h3faef2a_0.conda#f907bb958910dc404647326ca80c263e +https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h6b639ba_2.conda#ee8220db21db8094998005990418fe5b +https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h58526e2_1001.tar.bz2#8c54672728e8ec6aa6db90cf2806d220 +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.3.0-h3d44ed6_0.conda#5a6f6c00ef982a9bc83558d9ac8f64a0 +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.52.1-ha41ecd1_0.conda#5c0cc002bf4eaa56448b0729efd6e96c +https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h280cfa0_4.conda#410f86e58e880dcc7b0e910a8e89c05c +https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda#4d8df0b0db060d33c9a702ada998a8fe +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.3.1-hbf2b3c1_0.conda#4963f3f12db45a576f2b8fbe9a0b8569 +https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h74d50f4_7.conda#3453ac94a99ad9daf17e8a313d274567 +https://conda.anaconda.org/conda-forge/linux-64/gettext-0.21.1-h27087fc_0.tar.bz2#14947d8770185e5153fdd04d4673ed37 +https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.56.3-he3f83f7_1.conda#03bd1ddcc942867a19528877143b9852 +https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.7-h27087fc_0.conda#f204c8ba400ec475452737094fb81d52 +https://conda.anaconda.org/conda-forge/linux-64/graphviz-8.1.0-h28d9a01_0.conda#33628e0e3de7afd2c8172f76439894cb +https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.20.2-pyh717bed2_0.conda#6df60158d7fcdb1de8728bf5affa5c18 +https://conda.anaconda.org/conda-forge/linux-64/catboost-1.2.3-py310hff52083_2.conda#e063c808181593406d4d3d321ee7ffff +https://conda.anaconda.org/conda-forge/noarch/fastcore-1.5.29-pyhd8ed1ab_0.conda#155c898255baddd6b2cb95894791eeca +https://conda.anaconda.org/conda-forge/noarch/fastprogress-1.0.3-pyhd8ed1ab_0.tar.bz2#1690639d3647fde6edf4f00c8f87c263 +https://conda.anaconda.org/conda-forge/noarch/fastdownload-0.0.7-pyhd8ed1ab_0.conda#29c29999a420c2d28c3a46b3eadb9373 +https://conda.anaconda.org/conda-forge/linux-64/catalogue-2.0.10-py310hff52083_0.conda#a20390cd5f5fe4d8c5f6f2e7fa6c54cf +https://conda.anaconda.org/conda-forge/linux-64/cymem-2.0.8-py310hc6cd4ac_1.conda#8e4dada89998e0cb4f97b835dff6dc7e +https://conda.anaconda.org/conda-forge/noarch/langcodes-3.3.0-pyhd8ed1ab_0.tar.bz2#aacac9c3804912c38087d1c295708493 +https://conda.anaconda.org/conda-forge/linux-64/murmurhash-1.0.10-py310hc6cd4ac_1.conda#2b0c4b4532c601ece4537cc7f3558464 +https://conda.anaconda.org/conda-forge/noarch/smart_open-5.2.1-pyhd8ed1ab_0.tar.bz2#c7a838c38e38c82edde371a9054e6c92 +https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda#d08db09a552699ee9e7eec56b4eb3899 +https://conda.anaconda.org/conda-forge/noarch/typer-0.9.0-pyhd8ed1ab_0.conda#5030a13b2fe5e143d5956d4943d3018f +https://conda.anaconda.org/conda-forge/noarch/pathy-0.10.2-pyhd8ed1ab_0.conda#69d84b5c17aea4d7350f3536bcde7296 +https://conda.anaconda.org/conda-forge/linux-64/preshed-3.0.9-py310hc6cd4ac_1.conda#a2a27c2eafd1e280555ae954df088fc3 +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/srsly-2.4.8-py310hc6cd4ac_1.conda#7cd9d4be6f55ccb53cbd7125f2e6a0fb +https://conda.anaconda.org/conda-forge/linux-64/confection-0.1.4-py310h17c5347_0.conda#72b63825959fc040cab8ed0f12f2040e +https://conda.anaconda.org/conda-forge/linux-64/cython-blis-0.7.10-py310h1f7b6fc_2.conda#6a0165d9e76c443ed66d2e8b733aa133 +https://conda.anaconda.org/conda-forge/linux-64/wasabi-1.1.2-py310hff52083_0.conda#8ed9f04ed8e1373063cd03b9d5c86ce3 +https://conda.anaconda.org/conda-forge/linux-64/thinc-8.2.2-py310hcb52e73_0.conda#550b37537f05740f1c9a38d63d843b3c +https://conda.anaconda.org/conda-forge/noarch/cloudpathlib-0.16.0-pyhd8ed1ab_0.conda#8d75941f621306e58b7642394a8bad87 +https://conda.anaconda.org/conda-forge/noarch/weasel-0.3.4-pyhd8ed1ab_0.conda#a53c82e61a1173c887e84fc50842eec4 +https://conda.anaconda.org/conda-forge/linux-64/spacy-3.7.2-py310hcb52e73_0.conda#c966d5a09c130d0bcfce4126643ddc74 +https://conda.anaconda.org/conda-forge/noarch/fastai-2.7.14-pyhd8ed1ab_0.conda#9854ef355cc4bd1e2aac40998f721fed +https://conda.anaconda.org/conda-forge/linux-64/lightgbm-3.3.5-py310heca2aa9_0.conda#d2595ddab22cbca7409b28e3105afd0a +https://conda.anaconda.org/conda-forge/linux-64/libxgboost-1.7.6-cuda118_hd3b444d_6.conda#78509401d0879ef5aac72b8d1e104493 +https://conda.anaconda.org/conda-forge/linux-64/py-xgboost-1.7.6-cuda118_py310h9840055_6.conda#1d3da6268c67fe8b84c32cd0dc174bb4 +https://conda.anaconda.org/conda-forge/linux-64/xgboost-1.7.6-cuda118_py310h9840055_6.conda#f6a6f34c91b92f72dfdb47d3c7efcbbe +https://conda.anaconda.org/conda-forge/noarch/autogluon.tabular-0.8.2-pyha770c72_4.conda#17fad1cdb563ddad16ab0ba4c085bcb3 +https://conda.anaconda.org/conda-forge/noarch/gluonts-0.13.7-pyhd8ed1ab_0.conda#1684b578508d9918b2dcadd4c365c61a +https://conda.anaconda.org/conda-forge/linux-64/libllvm14-14.0.6-hcd5def8_4.conda#73301c133ded2bf71906aa2104edae8b +https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.42.0-py310h1b8f574_1.conda#e2a5e9f92629c8e4c8611883a35745b4 +https://conda.anaconda.org/conda-forge/linux-64/numba-0.59.0-py310h7dc5dd1_1.conda#966bc2bc095723310d746106e7c91791 +https://conda.anaconda.org/conda-forge/noarch/window-ops-0.0.15-pyhd8ed1ab_0.conda#b5ffd7d8295d4eda512216e23cf75a0f +https://conda.anaconda.org/conda-forge/noarch/mlforecast-0.7.3-pyhd8ed1ab_0.conda#7a2b34b4c9bff2545200b3746da70f11 +https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.6-pyhd8ed1ab_0.conda#a5b55d1cb110cdcedc748b5c3e16e687 +https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.1-py310h1f7b6fc_0.conda#d98c3749dd466513dd921f5818f4b001 +https://conda.anaconda.org/conda-forge/noarch/statsforecast-1.4.0-pyhd8ed1ab_0.conda#aa803f915587fe4306dfe0234215caa9 +https://conda.anaconda.org/conda-forge/linux-64/ujson-5.9.0-py310hc6cd4ac_0.conda#cab4b543b897dcf548edb3018fe45f9e +https://conda.anaconda.org/conda-forge/noarch/autogluon.timeseries-0.8.2-pyhd8ed1ab_4.conda#a64157275daf72a557fe4a9d843a9e1d +https://conda.anaconda.org/conda-forge/noarch/autogluon-0.8.2-pyhd8ed1ab_4.conda#7ff9ac51e09bd5991970a7df53b4bee6 +https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.11.1-pyhd8ed1ab_0.conda#29ff12b36df16bb66fdccd4206aaebfb +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.10-pyhd8ed1ab_0.conda#16b73b2c4ff7dda8bbecf88aadfe2027 +https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.10-pyhd8ed1ab_0.conda#521f489e3babeddeec638c2add7e9e64 +https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.2-pyhd8ed1ab_0.conda#67f86478c78637f68c1f3858973021f2 +https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.42-hd8ed1ab_0.conda#85a2189ecd2fcdd86e92b2d4ea8fe461 +https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_0.conda#7cf6f52a66f8e3cd9d8b6c231262dcab +https://conda.anaconda.org/conda-forge/noarch/notebook-7.1.2-pyhd8ed1ab_0.conda#fa781da51f05c9211b75b5e7bcff8136 +https://conda.anaconda.org/conda-forge/noarch/qtpy-2.4.1-pyhd8ed1ab_0.conda#7f391bd70d2abfb70f304ba5aa4e1261 +https://conda.anaconda.org/conda-forge/noarch/qtconsole-base-5.5.1-pyha770c72_0.conda#5528a3eda283b421055c89bface19a1c +https://conda.anaconda.org/conda-forge/noarch/jupyter-1.0.0-pyhd8ed1ab_10.conda#056b8cc3d9b03f54fc49e6d70d7dc359 +https://conda.anaconda.org/conda-forge/noarch/mock-5.1.0-pyhd8ed1ab_0.conda#926c67c0310094cf421ad13f7d3f38e5 +https://conda.anaconda.org/conda-forge/noarch/nose-1.3.7-py_1006.tar.bz2#382019d5f8e9362ef6f60a8d4e7bce8f +https://conda.anaconda.org/conda-forge/noarch/hdijupyterutils-0.21.0-pyh1a96a4e_0.conda#4db6232a9b934edc1c1e2f7b7d5a5d40 +https://conda.anaconda.org/conda-forge/noarch/autovizwidget-0.21.0-pyh1a96a4e_0.conda#7db56991c3c823ddb394ed85df9b54f5 +https://conda.anaconda.org/conda-forge/noarch/aws-glue-sessions-1.0.4-pyhd8ed1ab_0.conda#169c4c0a396d83164215f54024031ec8 +https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.1.2-py310hcb5633a_0.conda#6dd3d49f65ceb05dbd527a5b6301611b +https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda#4eccaeba205f0aed9ac3a9ea58568ca3 +https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda#17064acba08d3686f1135b5ec1b32b12 +https://conda.anaconda.org/conda-forge/linux-64/black-24.3.0-py310hff52083_0.conda#12960fe9118cbb71fb802a52870f7874 +https://conda.anaconda.org/conda-forge/noarch/boltons-23.1.1-pyhd8ed1ab_0.conda#56febe65315cc388a5d20adf2b39a74d +https://conda.anaconda.org/conda-forge/linux-64/fmt-10.2.1-h00ab1b0_0.conda#35ef8bc24bd34074ebae3c943d551728 +https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h516909a_1000.tar.bz2#bb14fcb13341b81d5eb386423b9d2bac +https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.7.2-h2aa1ff5_1.conda#3bf887827d1968275978361a6e405e4f +https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.28-hfc55251_0.conda#66d4f5d8256542d9ebfa341d690c5e03 +https://conda.anaconda.org/conda-forge/linux-64/reproc-14.2.4.post0-hd590300_1.conda#82ca53502dfd5a64a80dee76dae14685 +https://conda.anaconda.org/conda-forge/linux-64/reproc-cpp-14.2.4.post0-h59595ed_1.conda#715e1d720ec1a03715bebd237972fca5 +https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h59595ed_0.conda#965eaacd7c18eb8361fd12bb9e7a57d7 +https://conda.anaconda.org/conda-forge/linux-64/libmamba-1.5.7-had39da4_0.conda#9fff450354fbcd1510ef178730732241 +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.7-py310h39ff949_0.conda#58d84efb37d517c64f4e48f75fd6180d +https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-24.1.0-pyhd8ed1ab_0.conda#304dc78ad6e52e0fd663df1d484c1531 +https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.22.0-py310h1275a96_0.conda#54698ba13cd3494547b289cd86a2176a +https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.9.0-pyhd8ed1ab_0.conda#38253361efb303deead3eab39ae9269b +https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.2.0-pyh38be061_0.conda#8a3ae7f6318376aa08ea753367bb7dd6 +https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_0.conda#bbdb409974cd6cb30071b1d978302726 +https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_0.conda#bfdb7c5c6ad1077c82a69a8642c87aff +https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.0.2-py310hff52083_0.conda#4837faab0d3e665df57fef662148c6a3 +https://conda.anaconda.org/conda-forge/noarch/pluggy-1.4.0-pyhd8ed1ab_0.conda#139e9feb65187e916162917bb2484976 +https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py310h2372a71_0.conda#0adaac9a86d59adae2bc86b3cdef2df1 +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py310h2372a71_0.conda#dcf6d2535586c77b31425ed835610c54 +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.6-py310h2372a71_0.conda#50b7d9b39099cdbabf65bf27df73a793 +https://conda.anaconda.org/conda-forge/noarch/truststore-0.8.0-pyhd8ed1ab_0.conda#08316d001eca8854392cf2837828ea11 +https://conda.anaconda.org/conda-forge/linux-64/conda-23.11.0-py310hff52083_1.conda#d5278ac990c67d5ed51584998aa16c5a +https://conda.anaconda.org/conda-forge/noarch/contextlib2-21.6.0-pyhd8ed1ab_0.tar.bz2#5b26a831440be04c39531a8ce20f5d71 +https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.4-h7f98852_1002.tar.bz2#e728e874159b042d92b90238a3cb0dc2 +https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.27-h54b06d7_7.conda#dce22f70b4e5a407ce88f2be046f4ceb +https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.1.2-pyhd8ed1ab_0.tar.bz2#3c3de74912f11d2b590184f03c7cd09b +https://conda.anaconda.org/conda-forge/noarch/flask-3.0.2-pyhd8ed1ab_0.conda#7f88df670921cc31c309719e30c22021 +https://conda.anaconda.org/conda-forge/noarch/retrying-1.3.3-py_2.tar.bz2#a11f356d6f93b74b4a84e9501afd48b4 +https://conda.anaconda.org/conda-forge/noarch/dash-2.16.1-pyhd8ed1ab_0.conda#016bd4f61878a57f19c8cd744708a1f1 +https://conda.anaconda.org/conda-forge/noarch/marshmallow-3.21.1-pyhd8ed1ab_0.conda#ae303aa7dc100bc3bc01b5a3b7ca3567 +https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_0.conda#9e924b76b91908a17e28a19a0ab88687 +https://conda.anaconda.org/conda-forge/noarch/dataclasses-json-0.6.4-pyhd8ed1ab_0.conda#1190a6456351690603b2d64d1cbf5b4a +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d +https://conda.anaconda.org/conda-forge/noarch/deepmerge-1.1.1-pyhd8ed1ab_0.conda#d91c3d8ac3f2ab36ca4ea32ac42f731e +https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.7-py310hd41b1e2_0.conda#dc5263dcaa1347e5a456ead3537be27d +https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2#6d6552722448103793743dabfbda532d +https://conda.anaconda.org/conda-forge/noarch/tblib-2.0.0-pyhd8ed1ab_0.conda#f5580336fe091d46f9a2ea97da044550 +https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda#cf30c2c15b82aacb07f9c09e28ff2275 +https://conda.anaconda.org/conda-forge/noarch/distributed-2024.3.1-pyhd8ed1ab_0.conda#b0ad5ef44595ef37c3008fc04ecd2abf +https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.5.0-py310h2372a71_3.conda#a29a0825809cd3a780097472be176618 +https://conda.anaconda.org/conda-forge/noarch/paramiko-3.4.0-pyhd8ed1ab_0.conda#a5e792523b028b06d7ce6e65a6cd4a33 +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.0.0-pyhd8ed1ab_0.conda#aec5f308cb9055e83c59afecd5fcb58a +https://conda.anaconda.org/conda-forge/noarch/docstring-to-markdown-0.15-pyhd8ed1ab_0.conda#a3a1e6af2926a3affcd6f2072871f551 +https://conda.anaconda.org/conda-forge/linux-64/libfaiss-1.7.4-hf47d654_0_cpu.conda#8fd132db65c8d51caea2ae7cde4b450c +https://conda.anaconda.org/conda-forge/linux-64/libfaiss-avx2-1.7.4-h1234567_0_cpu.conda#7eb943c067a63c4d8af526c2df9f2c1b +https://conda.anaconda.org/conda-forge/linux-64/faiss-1.7.4-py310h9ed8947_0_cpu.conda#99665c710087f7a964915b5ea0097465 +https://conda.anaconda.org/conda-forge/linux-64/faiss-cpu-1.7.4-h718b53a_0.conda#7a9e6f72c36ff5a5eeb61660fd6fdf8d +https://conda.anaconda.org/conda-forge/noarch/starlette-0.27.0-pyhd8ed1ab_0.conda#6facb6fc201d334257db8004439705d3 +https://conda.anaconda.org/conda-forge/noarch/fastapi-0.103.2-pyhd8ed1ab_0.conda#fb243b6796ab7d64b14e00c279620c04 +https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_0.tar.bz2#34fc335fc50eef0b5ea708f2b5f54e0c +https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.2.0-pyhd8ed1ab_0.conda#0cf7fef6aa123df28adb21a590065e3d +https://conda.anaconda.org/conda-forge/noarch/flake8-7.0.0-pyhd8ed1ab_0.conda#15bc58c860fc0a9abc26ec902df35252 +https://conda.anaconda.org/conda-forge/linux-64/flatbuffers-23.5.26-h59595ed_1.conda#913a1c6fd00b66f33392a129e835ceca +https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_0.conda#650a7807e689642dddd3590eb817beed +https://conda.anaconda.org/conda-forge/noarch/gast-0.4.0-pyh9f0ad1d_0.tar.bz2#42323c77b73462199fca93bc8ac9279d +https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2#62f26a3d1387acee31322208f0cfa3e0 +https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda#623b19f616f2ca0c261441067e18ae40 +https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.42-pyhd8ed1ab_0.conda#6bc8e496351bafd761c0922c3ebd989a +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.80.0-hde27a5a_1.conda#939ddd853b1d98bf6fd22cc0adeda317 +https://conda.anaconda.org/conda-forge/linux-64/glib-2.80.0-hf2295e7_1.conda#d3bcc5c186f78feba6f39ea047c35950 +https://conda.anaconda.org/conda-forge/noarch/google-pasta-0.2.0-pyh8c360ce_0.tar.bz2#26e27d7d3d7fe2336b543dd8e0f12cbf +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.22.9-h98fc4e7_0.conda#bcc7157b06fce7f5e055402a8135dfd8 +https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2#6e8cc2173440d77708196c5b93771680 +https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f +https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 +https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.22.9-h8e1006c_0.conda#614b81f8ed66c56b640faee7076ad14a +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_h4f84152_100.conda#d471a5c3abc984b662d9bae3bb7fd8a5 +https://conda.anaconda.org/conda-forge/linux-64/h5py-3.10.0-nompi_py310h65828d5_101.conda#44c185c5b133ad6d1d449839407aa863 +https://conda.anaconda.org/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_0.conda#1d25ed2b95b92b026aaa795eabec8d91 +https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.3.2-py310hcc13569_0.conda#1ad84020b1ab816d7ab3f3d0859faf40 +https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.4.14-cpu_py310h67d73b5_1.conda#392c325994aa96727edd0069a0620e31 +https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.3.0-pyhc1e730c_2.conda#7a94ac68b892daa9f17ae8a52b31ed81 +https://conda.anaconda.org/conda-forge/noarch/opt-einsum-3.3.0-hd8ed1ab_2.conda#ab262acd95cb73f3ed9426cc4204ac3a +https://conda.anaconda.org/conda-forge/noarch/jax-0.4.20-pyhd8ed1ab_0.conda#5abbd950bd427bc9d929e35ecbf814d1 +https://conda.anaconda.org/conda-forge/noarch/ply-3.11-py_1.tar.bz2#7205635cd71531943440fbfe3b6b5727 +https://conda.anaconda.org/conda-forge/noarch/jsonpath-ng-1.6.1-pyhd8ed1ab_0.conda#a698a41f5b52fe96049fd8c926ac3086 +https://conda.anaconda.org/conda-forge/linux-64/orjson-3.9.15-py310hcb5633a_0.conda#da1b180ccf1dce5d87d145ad2fc14e5a +https://conda.anaconda.org/conda-forge/noarch/langsmith-0.1.31-pyhd8ed1ab_0.conda#031cb2cb0387f028379c1a58217fe929 +https://conda.anaconda.org/conda-forge/noarch/langchain-core-0.1.32-pyhd8ed1ab_0.conda#b085528ffeef5167dd8f6e358e4170e2 +https://conda.anaconda.org/conda-forge/noarch/langchain-community-0.0.28-pyhd8ed1ab_0.conda#d7e8f72c5e422b78b3d5f7a7aecbfae9 +https://conda.anaconda.org/conda-forge/noarch/langchain-0.1.9-pyhd8ed1ab_0.conda#2ad37682610ac2643b46e4cc0215f410 +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-magics-2.11.0-pyhd8ed1ab_0.conda#aee09f3966655f81d05fcfb5bae3612d +https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.5.2-py310h47bb294_0.conda#a83ae186d0a4b78c98b32781d7c15d48 +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-2.11.0-pyhd8ed1ab_0.conda#e8ab7975630aff4624d3ed1fa32ac552 +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-pyh5bfe37b_1.conda#11ca195fc8a16770661a387bcce27c36 +https://conda.anaconda.org/conda-forge/noarch/simpervisor-1.0.0-pyhd8ed1ab_0.conda#1f6df17b16d6295a484d59e844fef6ee +https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.1.2-pyhd8ed1ab_0.conda#3671520b52215a5a084de08003e6d8cd +https://conda.anaconda.org/conda-forge/noarch/nbdime-4.0.1-pyhd8ed1ab_0.conda#dd76d44a144499f8ff3254fd20cdb7a2 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-git-0.50.0-pyhd8ed1ab_1.conda#5020cacc18e3d5f62a81513f26ac2cac +https://conda.anaconda.org/conda-forge/noarch/keras-2.12.0-pyhd8ed1ab_0.conda#e6e18b33e8d62200099f2eed98a263b6 +https://conda.anaconda.org/conda-forge/noarch/keras-preprocessing-1.1.2-pyhd8ed1ab_0.tar.bz2#a79b00989a0d89791021902f37fe2f9e +https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2#a8832b479f93521a9e7b5b743803be51 +https://conda.anaconda.org/conda-forge/linux-64/libcap-2.69-h0f662aa_0.conda#25cb5999faa414e5ccb2c1388f62d3d5 +https://conda.anaconda.org/conda-forge/linux-64/libllvm15-15.0.7-hb3ce162_4.conda#8a35df3cbc0c8b12cc8af9473ae75eef +https://conda.anaconda.org/conda-forge/linux-64/libclang13-15.0.7-default_ha2b6cf4_4.conda#898e0dd993afbed0d871b60c2eb33b83 +https://conda.anaconda.org/conda-forge/linux-64/libclang-15.0.7-default_hb11cfb5_4.conda#c90f4cbb57839c98fef8f830e4b9972f +https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda#d4529f4dff3057982a7617c7ac58fde3 +https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda#ee48bf17cc83a00f59ca1494d5646869 +https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.48-h71f35ed_0.conda#4d18d86916705d352d5f4adfb7f0edd3 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.10.3-hd590300_0.conda#32d16ad533c59bb0a3c5ffaf16110829 +https://conda.anaconda.org/conda-forge/linux-64/libpq-15.6-h088ca5b_0.conda#99dca02fb74a8dfa3653c6673674f90c +https://conda.anaconda.org/conda-forge/linux-64/libsecret-0.18.8-h329b89f_2.tar.bz2#9d6698e3c9585a75156d86f7ef229093 +https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.4-h59595ed_0.conda#3f1017b4141e943d9bc8739237f749e8 +https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda#ef1910918dd895516a769ed36b5b3a4e +https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-255-h3516f8a_1.conda#3366af27f0b593544a6cd453c7932ac5 +https://conda.anaconda.org/conda-forge/linux-64/libuv-1.46.0-hd590300_0.conda#d23c76f7e6dcd6243d1b6ef5e62d17d2 +https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.41-hd590300_0.conda#81f740407b45e3f9047b3174fa94eb9e +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.6.0-hd429924_1.conda#1dbcc04604fdf1e526e6d1b0b6938396 +https://conda.anaconda.org/conda-forge/linux-64/sip-6.7.12-py310hc6cd4ac_0.conda#68d5bfccaba2d89a7812098dd3966d9b +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.12.2-py310hc6cd4ac_5.conda#ef5333594a958b25912002886b82b253 +https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.33-hf1915f5_6.conda#80bf3b277c120dd294b51d404b931a75 +https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.33-hca2cd23_6.conda#e87530d1b12dd7f4e0f856dc07358d60 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda#da0ec11a6454ae19bff5b02ed881a2b1 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.98-h1d7d5a4_0.conda#54b56c2fdf973656b748e0378900ec13 +https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-16.1-hb77b528_5.conda#ac902ff3c1c6d750dd0dfc93a974ab74 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.0-hd590300_1.conda#9bfac7ccd94d54fd21a0501296d60424 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-h8ee46fc_1.conda#9d7bcddf49cbf727730af10e71022c73 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.0-h8ee46fc_1.conda#632413adcd8bc16b515cab87a2932913 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.9-hd590300_1.conda#e995b155d938b6779da6ace6c6b13816 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.1-h8ee46fc_1.conda#90108a432fb5c6150ccfee3f03388656 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xf86vidmodeproto-2.3.1-h7f98852_1002.tar.bz2#3ceea9668625c18f19530de98b15d5b0 +https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.8-hc47bfe8_16.conda#a8dd2dfcd570e3965c73be6c5e03e74f +https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.9-py310h04931ad_5.conda#f4fe7a6e3d7c78c9de048ea9dda21690 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.8.3-py310hff52083_0.conda#e91d183a307d7bd667003291f690cbb0 +https://conda.anaconda.org/conda-forge/linux-64/nodejs-18.19.0-hb753e55_0.conda#0b4a67051e3b3812818ccf2f4ee2fd4e +https://conda.anaconda.org/conda-forge/noarch/papermill-2.5.0-pyhd8ed1ab_0.conda#e6e69b90afd3d0597da8f1f74cc4bd58 +https://conda.anaconda.org/conda-forge/noarch/pox-0.3.4-pyhd8ed1ab_0.conda#d5502ff0ec33b87f7ab7bc373d0e42ff +https://conda.anaconda.org/conda-forge/noarch/ppft-1.7.6.8-pyhd8ed1ab_0.conda#a104e8b98901dc1bc0b916f7e18b5e39 +https://conda.anaconda.org/conda-forge/noarch/pathos-0.3.2-pyhd8ed1ab_1.conda#22ed208c1b54e7c2ec6616665fba6b0f +https://conda.anaconda.org/conda-forge/noarch/pure-sasl-0.6.2-pyhd8ed1ab_0.tar.bz2#ac695eecf21ab48093bc33fd60b4102d +https://conda.anaconda.org/conda-forge/linux-64/py-xgboost-gpu-1.7.6-py310h9840055_6.conda#f148fc36e36779537fd0845178f8a619 +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_0.conda#7e23a61a7fbaedfef6eb0e1ac775c8e5 +https://conda.anaconda.org/conda-forge/linux-64/thrift-0.19.0-py310hc6cd4ac_1.conda#2e0bde59a8aa215c7402c181c20c9605 +https://conda.anaconda.org/conda-forge/noarch/thrift_sasl-0.4.3-pyhd8ed1ab_2.tar.bz2#0340a97c4990a5bb5ecf1a27fef9f9c3 +https://conda.anaconda.org/conda-forge/noarch/pyhive-0.7.0-pyhd8ed1ab_0.conda#a39884e69ebf0c6454a1f8bac6f8361b +https://conda.anaconda.org/conda-forge/linux-64/pykrb5-0.5.1-py310h98feede_1.conda#0329fda0ebbccee7b3e9dbf4a377d0ce +https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.4-pyha770c72_0.conda#37c47ea93ef00dd80d880fc4ba21256a +https://conda.anaconda.org/conda-forge/noarch/pylint-3.0.4-pyhd8ed1ab_0.conda#d536ee47166d8984c6acd8114ac26cf1 +https://conda.anaconda.org/conda-forge/linux-64/pyspnego-0.9.1-py310h2372a71_2.conda#0a99339b277686c7d824abf9de396901 +https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-24.3.7-pyh59ac667_0.conda#24c1a37849fcd4c74923a38b029b208f +https://conda.anaconda.org/conda-forge/linux-64/python-gssapi-1.8.3-py310h98feede_0.conda#a5ea028f63386c53a2b8ff4d09065259 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-jsonrpc-1.1.2-pyhd8ed1ab_0.conda#ff30dbdb341a54947c4fa183900380b7 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-base-1.10.1-pyhd8ed1ab_0.conda#1371f9394b20fd1fe7419a2aa9b38888 +https://conda.anaconda.org/conda-forge/noarch/pytoolconfig-1.2.5-pyhd8ed1ab_0.conda#2d6bdf5a69cfcd1fcc7f2b900cb4082f +https://conda.anaconda.org/conda-forge/noarch/rope-1.12.0-pyhd8ed1ab_0.conda#5b17bee6351fbe4ae28da178866b2c73 +https://conda.anaconda.org/conda-forge/noarch/whatthepatch-1.0.5-pyhd8ed1ab_0.conda#e62ea65e1979c18c4c9034567e7105c5 +https://conda.anaconda.org/conda-forge/noarch/yapf-0.40.1-pyhd8ed1ab_0.conda#f269942e802d5e148632143d4c37acc9 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-1.10.1-pyhd8ed1ab_0.conda#15b849d7f03b7580a88a3f887db5ad40 +https://conda.anaconda.org/conda-forge/linux-64/pytorch-gpu-2.0.0-cuda112py310h9871d0b_200.conda#7d0ebb619bd0c1a451d167886d2cc904 +https://conda.anaconda.org/conda-forge/noarch/requests-kerberos-0.14.0-pyh707e725_1.conda#411293bff0dc86f9f9bc0c0e1f227623 +https://conda.anaconda.org/conda-forge/linux-64/ripgrep-14.1.0-he8a937b_0.conda#5a476f7033a8a1b9175626b5ebf86d1d +https://conda.anaconda.org/conda-forge/linux-64/sagemaker-code-editor-1.0.0-hcb28a07_0.conda#f53005657267d6b1233c2852fcb84707 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-headless-execution-driver-0.0.12-pyhd8ed1ab_0.conda#fe8919032eb413e76a7802f013a536ee +https://conda.anaconda.org/conda-forge/linux-64/y-py-0.6.2-py310hcb5633a_0.conda#892e912e08ba834aa77ff25f983a4e9e +https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.12.4-pyhd8ed1ab_0.conda#7f558701e9a089188cc81d620282ef28 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-common-0.1.14-pyhd8ed1ab_0.conda#27319d665d06aa5c25b6a07d04a4256f +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-emr-extension-0.1.9-pyhd8ed1ab_0.conda#589f97989a6db8b2f21a53881fdd1d97 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-0.2.0-pyhd8ed1ab_0.conda#9331340b5a844f5ac2c74eda353aa23e +https://conda.anaconda.org/conda-forge/noarch/sagemaker-kernel-wrapper-0.0.2-pyhd8ed1ab_0.conda#99480997ca2429b75169c896cc988cdb +https://conda.anaconda.org/conda-forge/noarch/schema-0.7.5-pyhd8ed1ab_1.conda#750d2ce4311d1502b51ad814407f043d +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.212.0-pyhd8ed1ab_0.conda#eb07d50e30f7b423929f9081118d3979 +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.0.21-pyhd8ed1ab_0.conda#fa0e9b0ca6c3e96d350711b6dbddaeb6 +https://conda.anaconda.org/conda-forge/linux-64/sasl-0.3.1-py310hd8f1fbe_2.tar.bz2#9b15d1759c99ad57ae43080cfca56d73 +https://conda.anaconda.org/conda-forge/linux-64/supervisor-4.2.5-py310hff52083_2.conda#7fe7fa4d80a99dc44ba15ef3e82707af +https://conda.anaconda.org/conda-forge/noarch/termcolor-2.4.0-pyhd8ed1ab_0.conda#a5033708ad9283907c3b1bc1f90d0d0d +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-base-2.12.1-cuda112py310h1d65785_1.conda#4aa4b1fa72143cf84ff5776275f8b40d +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-estimator-2.12.1-cuda112py310ha5e6de5_1.conda#bb21f985bf64adc3751a3a1578a0a69e +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-2.12.1-cuda112py310h457873b_1.conda#eee4abf81acd7c5205f476838713cfba +https://conda.anaconda.org/conda-forge/linux-64/uvicorn-0.28.1-py310hff52083_0.conda#2708791931977a77fa35bc601a571375 diff --git a/build_artifacts/v1/v1.6/v1.6.1/patch_glue_pyspark.json b/build_artifacts/v1/v1.6/v1.6.1/patch_glue_pyspark.json new file mode 100644 index 00000000..ab70fd8d --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/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 and Ray", + "env": {"request_origin": "SageMakerStudioPySparkNotebook", "glue_version": "3.0"}, + "language": "python" +} + diff --git a/build_artifacts/v1/v1.6/v1.6.1/patch_glue_spark.json b/build_artifacts/v1/v1.6/v1.6.1/patch_glue_spark.json new file mode 100644 index 00000000..1bd168e7 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/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/v1/v1.6/v1.6.1/source-version.txt b/build_artifacts/v1/v1.6/v1.6.1/source-version.txt new file mode 100644 index 00000000..ce6a70b9 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.1/source-version.txt @@ -0,0 +1 @@ +1.6.0 \ No newline at end of file diff --git a/build_artifacts/v1/v1.6/v1.6.2/CHANGELOG-cpu.md b/build_artifacts/v1/v1.6/v1.6.2/CHANGELOG-cpu.md new file mode 100644 index 00000000..190ec6b4 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/CHANGELOG-cpu.md @@ -0,0 +1,8 @@ +# Change log: 1.6.2(cpu) + +## Upgrades: + +Package | Previous Version | Current Version +---|---|--- +amazon-sagemaker-sql-magic|0.1.0|0.1.1 +amazon_sagemaker_sql_editor|0.1.3|0.1.4 diff --git a/build_artifacts/v1/v1.6/v1.6.2/CHANGELOG-gpu.md b/build_artifacts/v1/v1.6/v1.6.2/CHANGELOG-gpu.md new file mode 100644 index 00000000..05397ccd --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/CHANGELOG-gpu.md @@ -0,0 +1,9 @@ +# Change log: 1.6.2(gpu) + +## Upgrades: + +Package | Previous Version | Current Version +---|---|--- +python|3.10.13|3.10.14 +amazon-sagemaker-sql-magic|0.1.0|0.1.1 +amazon_sagemaker_sql_editor|0.1.3|0.1.4 diff --git a/build_artifacts/v1/v1.6/v1.6.2/Dockerfile b/build_artifacts/v1/v1.6/v1.6.2/Dockerfile new file mode 100644 index 00000000..592f2d08 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/Dockerfile @@ -0,0 +1,182 @@ +ARG TAG_FOR_BASE_MICROMAMBA_IMAGE +FROM mambaorg/micromamba:$TAG_FOR_BASE_MICROMAMBA_IMAGE + +ARG CUDA_MAJOR_MINOR_VERSION='' +ARG ENV_IN_FILENAME +ARG ARG_BASED_ENV_IN_FILENAME + +ARG AMZN_BASE="/opt/amazon/sagemaker" +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 + +ENV SAGEMAKER_LOGGING_DIR="/var/log/sagemaker/" +ENV STUDIO_LOGGING_DIR="/var/log/studio/" +ENV EDITOR="nano" + +USER root +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 install -y --no-install-recommends sudo gettext-base wget curl unzip git rsync build-essential openssh-client nano cron less && \ + # 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 && \ + : +RUN echo "source /usr/local/bin/_activate_current_env.sh" | tee --append /etc/profile + +# CodeEditor - create server, user data dirs +RUN 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 + +# Merge in OS directory tree contents. +RUN 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 +RUN 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/ + +# Make sure that $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 + +ARG CONDA_OVERRIDE_CUDA=$CUDA_MAJOR_MINOR_VERSION +RUN micromamba install -y --name base --file /tmp/$ENV_IN_FILENAME && \ + micromamba clean --all --yes --force-pkgs-dirs && \ + rm -rf /tmp/*.in + + +ARG MAMBA_DOCKERFILE_ACTIVATE=1 +RUN sudo ln -s $(which python3) /usr/bin/python + +# Configure CodeEditor - Install extensions and set preferences +RUN \ + 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 + +# Install glue kernels, and move to shared directory +# Also patching base kernel so Studio background code doesn't start session silently +RUN 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" + + +# 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 +RUN 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* + +# 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} + +# Clean up CodeEditor artifacts +RUN rm -rf /etc/code-editor + +# Create supervisord runtime directory +RUN mkdir -p /var/run/supervisord && \ + chmod a+rw /var/run/supervisord + +USER $MAMBA_USER +ENV PATH="/opt/conda/bin:/opt/conda/condabin:$PATH" +WORKDIR "/home/${NB_USER}" + +# 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/ +RUN 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://www.openssl.org/source/openssl-$FIPS_VALIDATED_SSL.tar.gz > openssl-$FIPS_VALIDATED_SSL.tar.gz && \ + curl -L https://www.openssl.org/source/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 +RUN 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 +ENV OPENSSL_MODULES=/opt/conda/lib64/ossl-modules/ + +# Install Kerberos. +# Make sure no dependency is added/updated +RUN 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 +RUN 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 + +ENV SHELL=/bin/bash diff --git a/build_artifacts/v1/v1.6/v1.6.2/RELEASE.md b/build_artifacts/v1/v1.6/v1.6.2/RELEASE.md new file mode 100644 index 00000000..3a0d08f6 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/RELEASE.md @@ -0,0 +1,56 @@ +# Release notes: 1.6.2 + +Package | gpu| cpu +---|---|--- +python|3.10.14|3.10.14 +numpy|1.26.4|1.26.4 +jinja2|3.1.3|3.1.3 +pandas|2.1.4|2.1.4 +altair|5.2.0|5.2.0 +boto3|1.34.51|1.34.51 +ipython|8.22.2|8.22.2 +jupyter-lsp|2.2.4|2.2.4 +jupyterlab|4.1.5|4.1.5 +amazon-codewhisperer-jupyterlab-ext|2.0.1|2.0.1 +jupyter-scheduler|2.5.1|2.5.1 +amazon-sagemaker-jupyter-scheduler|3.0.7|3.0.7 +amazon-sagemaker-sql-magic|0.1.1|0.1.1 +jupyterlab-lsp|5.0.3|5.0.3 +amazon_sagemaker_sql_editor|0.1.4|0.1.4 +scipy|1.11.4|1.11.4 +scikit-learn|1.4.1.post1|1.4.1.post1 +pip|23.3.2|23.3.2 +torchvision|0.15.2|0.15.2 +autogluon|0.8.2|0.8.2 +ipywidgets|8.1.2|8.1.2 +notebook|7.1.2|7.1.2 +aws-glue-sessions|1.0.4|1.0.4 +conda|23.11.0|23.11.0 +fastapi|0.103.2|0.103.2 +langchain|0.1.9|0.1.9 +jupyter-ai|2.11.0|2.11.0 +jupyter-dash|0.4.2|0.4.2 +jupyter-server-proxy|4.1.2|4.1.2 +jupyterlab-git|0.50.0|0.50.0 +keras|2.12.0|2.12.0 +matplotlib|3.8.3|3.8.3 +nodejs|18.19.0|18.19.0 +py-xgboost-gpu|1.7.6| +thrift_sasl|0.4.3|0.4.3 +pyhive|0.7.0|0.7.0 +python-gssapi|1.8.3|1.8.3 +python-lsp-server|1.10.1|1.10.1 +pytorch-gpu|2.0.0| +sagemaker-code-editor|1.0.0|1.0.0 +sagemaker-headless-execution-driver|0.0.12|0.0.12 +sagemaker-jupyterlab-emr-extension|0.1.9|0.1.9 +sagemaker-jupyterlab-extension|0.2.0|0.2.0 +sagemaker-kernel-wrapper|0.0.2|0.0.2 +sagemaker-python-sdk|2.212.0|2.212.0 +sagemaker-studio-analytics-extension|0.0.21|0.0.21 +sasl|0.3.1|0.3.1 +supervisor|4.2.5|4.2.5 +tensorflow|2.12.1|2.12.1 +uvicorn|0.28.1|0.28.1 +pytorch| |2.0.0 +py-xgboost-cpu| |1.7.6 diff --git a/build_artifacts/v1/v1.6/v1.6.2/cpu.env.in b/build_artifacts/v1/v1.6/v1.6.2/cpu.env.in new file mode 100644 index 00000000..b6ea200a --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/cpu.env.in @@ -0,0 +1,51 @@ +# This file is auto-generated. +conda-forge::sagemaker-code-editor[version='>=1.0.0,<1.1.0'] +conda-forge::amazon_sagemaker_sql_editor[version='>=0.1.3,<0.2.0'] +conda-forge::amazon-sagemaker-sql-magic[version='>=0.1.0,<0.2.0'] +conda-forge::langchain[version='>=0.1.9,<0.2.0'] +conda-forge::fastapi[version='>=0.103.2,<0.104.0'] +conda-forge::uvicorn[version='>=0.28.1,<0.29.0'] +conda-forge::pytorch[version='>=2.0.0,<2.1.0'] +conda-forge::tensorflow[version='>=2.12.1,<2.13.0'] +conda-forge::python[version='>=3.10.14,<3.11.0'] +conda-forge::pip[version='>=23.3.2,<23.4.0'] +conda-forge::torchvision[version='>=0.15.2,<0.16.0'] +conda-forge::numpy[version='>=1.26.4,<1.27.0'] +conda-forge::pandas[version='>=2.1.4,<2.2.0'] +conda-forge::scikit-learn[version='>=1.4.1.post1,<1.5.0'] +conda-forge::jinja2[version='>=3.1.3,<3.2.0'] +conda-forge::matplotlib[version='>=3.8.3,<3.9.0'] +conda-forge::sagemaker-headless-execution-driver[version='>=0.0.12,<0.1.0'] +conda-forge::ipython[version='>=8.22.2,<8.23.0'] +conda-forge::scipy[version='>=1.11.4,<1.12.0'] +conda-forge::keras[version='>=2.12.0,<2.13.0'] +conda-forge::py-xgboost-cpu[version='>=1.7.6,<1.8.0'] +conda-forge::jupyterlab[version='>=4.1.5,<4.2.0'] +conda-forge::ipywidgets[version='>=8.1.2,<8.2.0'] +conda-forge::conda[version='>=23.11.0,<23.12.0'] +conda-forge::boto3[version='>=1.34.51,<1.35.0'] +conda-forge::sagemaker-python-sdk[version='>=2.212.0,<2.213.0'] +conda-forge::supervisor[version='>=4.2.5,<4.3.0'] +conda-forge::autogluon[version='>=0.8.2,<0.9.0'] +conda-forge::aws-glue-sessions[version='>=1.0.4,<1.1.0'] +conda-forge::sagemaker-kernel-wrapper[version='>=0.0.2,<0.1.0'] +conda-forge::jupyter-ai[version='>=2.11.0,<2.12.0'] +conda-forge::jupyter-scheduler[version='>=2.5.1,<2.6.0'] +conda-forge::nodejs[version='>=18.19.0,<18.20.0'] +conda-forge::jupyter-lsp[version='>=2.2.4,<2.3.0'] +conda-forge::jupyterlab-lsp[version='>=5.0.3,<5.1.0'] +conda-forge::python-lsp-server[version='>=1.10.1,<1.11.0'] +conda-forge::notebook[version='>=7.1.2,<7.2.0'] +conda-forge::altair[version='>=5.2.0,<5.3.0'] +conda-forge::sagemaker-studio-analytics-extension[version='>=0.0.21,<0.1.0'] +conda-forge::jupyter-dash[version='>=0.4.2,<0.5.0'] +conda-forge::sagemaker-jupyterlab-extension[version='>=0.2.0,<0.3.0'] +conda-forge::sagemaker-jupyterlab-emr-extension[version='>=0.1.9,<0.2.0'] +conda-forge::amazon-sagemaker-jupyter-scheduler[version='>=3.0.7,<3.1.0'] +conda-forge::jupyter-server-proxy[version='>=4.1.2,<4.2.0'] +conda-forge::amazon-codewhisperer-jupyterlab-ext[version='>=2.0.1,<2.1.0'] +conda-forge::jupyterlab-git[version='>=0.50.0,<0.51.0'] +conda-forge::sasl[version='>=0.3.1,<0.4.0'] +conda-forge::thrift_sasl[version='>=0.4.3,<0.5.0'] +conda-forge::pyhive[version='>=0.7.0,<0.8.0'] +conda-forge::python-gssapi[version='>=1.8.3,<1.9.0'] diff --git a/build_artifacts/v1/v1.6/v1.6.2/cpu.env.out b/build_artifacts/v1/v1.6/v1.6.2/cpu.env.out new file mode 100644 index 00000000..04ae3aaf --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/cpu.env.out @@ -0,0 +1,662 @@ +# 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/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_5.conda#d4ff227c46917d3b4565302a2bbb276b +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda#f36c115f1ee199da648e0597ec2047ad +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_5.conda#f6f6600d18a4047b54f803cf708b868a +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.5-hfc55251_0.conda#04b88013080254850d6c01ed54810589 +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-18.1.2-h4dfa4b3_0.conda#0118c8a03e3dbbb6b348ef71e94ac7af +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#562b26ba2e19059551a811e72ab7f793 +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/bzip2-1.0.8-hd590300_5.conda#69b8b6202a07720f448be700e300ccf4 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda#7aca3059a1729aa76c597603f10b0dd3 +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3 +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda#30fd6e37fe21f86f4bd26d6ee73eeec7 +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.45.2-h2797004_0.conda#866983a220e27a80cb75e85cb30466a1 +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.4.20240210-h59595ed_0.conda#97da8860a0da5413c7c98a3b3838a645 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.2.2-hbcca054_0.conda#2f4327a1cbe7f022401b236e915a5fef +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.2.1-hd590300_1.conda#9d731343cff6ee2e5a25c4a091bf8e2a +https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4 +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-2024a-h0c530f3_0.conda#161081fc7cec0bfda0d86d7cb595f8d8 +https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0 +https://conda.anaconda.org/conda-forge/linux-64/python-3.10.14-hd12c33a_0_cpython.conda#2b4ba962994e8bd4be9ff5b64b75aff2 +https://conda.anaconda.org/conda-forge/noarch/absl-py-2.1.0-pyhd8ed1ab_0.conda#035d1d58677c13ec93122d9eb6b8803b +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_5.conda#7a6bd7a12a4bd359e2afe6c0fa1acace +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_5.conda#e73e9cfd1191783392131e6238bdb3e9 +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.25-pthreads_h413a1c8_0.conda#d172b34a443b95f86089e8229ddc9a17 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-20_linux64_openblas.conda#2b7bb4f7562c8cf334fc2e20c2d28abc +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-20_linux64_openblas.conda#36d486d72ab64ffea932329a1d3729a3 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-20_linux64_openblas.conda#6fabc51f5e647d09cc010c40061557e0 +https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.10-4_cp310.conda#26322ec5d7712c3ded99dd656142b8ce +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py310hb13e2d6_0.conda#6593de64c935768b6bad3e19b3e978be +https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda#79002079284aa895f883c6b7f3f88fd6 +https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.8-py310h2372a71_0.conda#bd19b3096442ea342c4a5208379660b1 +https://conda.anaconda.org/conda-forge/noarch/filelock-3.13.3-pyhd8ed1ab_0.conda#ff15f46b0d34308f4d40c1c51df07592 +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py310h2372a71_0.conda#f6703fa0214a00bf49d1bef6dc7672d0 +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.3-pyhd8ed1ab_0.conda#e7d8df6509ba635247ff9aea31134262 +https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-3.21.12-hfc55251_2.conda#e3a7d4ba09b8dc939b98fef55f539220 +https://conda.anaconda.org/conda-forge/linux-64/libuv-1.46.0-hd590300_0.conda#d23c76f7e6dcd6243d1b6ef5e62d17d2 +https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda#cc47e1facc155f91abd89b11e48e72ff +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda#d66573916ffcf376178462f1b61c941e +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.6-h232c23b_1.conda#6853448e9ca1cfd5f15382afd2a6d123 +https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.9.3-default_h554bfaf_1009.conda#f36ddc11ca46958197a45effdd286e45 +https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.11.0-h00ab1b0_1.conda#4531d2927578e7e254ff3bcf6457518c +https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.2.1-h84fe81f_16997.conda#a7ce56d5757f5b57e7daabe703ade5bb +https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda#425fce3b531bed6ec3c74fab3e5f0a1c +https://conda.anaconda.org/conda-forge/linux-64/sleef-3.5.1-h9b69904_2.tar.bz2#6e016cf4c525d04a7bd038cee53ad3fd +https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-h59595ed_1.conda#e358c7c5f6824c272b5034b3816438a7 +https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h9458935_0.conda#4c28f3210b30250037a4a627eeee9e0f +https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-hfe3b2da_0.conda#289c71e83dc0daa7d4c81f04180778ca +https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.2-py310h3ec546c_1.tar.bz2#73f6fa50c32ddd985cf5fba7b890a75c +https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_0.conda#dbf6e2d89137da32fa6670f3bffc024e +https://conda.anaconda.org/conda-forge/noarch/sympy-1.12-pypyh9d50eac_103.conda#2f7d6347d7acf6edf1ac7f2189f44c8f +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.5.0-pyha770c72_0.conda#43e7d9e50261fb11deb76e17d8431aac +https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.0.0-cpu_mkl_py310h402c8e3_101.conda#b351ffe4cd1b8337abfa88833cf60f25 +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.1-py310h2372a71_1.conda#bb010e368de4940771368bc3dc4c63e7 +https://conda.anaconda.org/conda-forge/noarch/accelerate-0.21.0-pyhd8ed1ab_0.conda#172fa1bba08cd6b431a1739090ab0ffc +https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.1-py310h2372a71_0.conda#f20cd4d9c1f4a8377d0818c819918bbb +https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2#d1e1eb7e21a9e2c74279d87dafb68156 +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.5.0-hd8ed1ab_0.conda#b3c594fde1a80a1fc3eb9cc4a5dfe392 +https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda#3ce482ec3066e6d809dbbb1d1679f215 +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.0.5-py310h2372a71_0.conda#d4c91d19e4f2f18b64753ac660edad79 +https://conda.anaconda.org/conda-forge/noarch/idna-3.6-pyhd8ed1ab_0.conda#1a76f09108576397c41c0b0c5bd84134 +https://conda.anaconda.org/conda-forge/linux-64/yarl-1.9.4-py310h2372a71_0.conda#4ad35c8f6a64a6ab708780dad603aef4 +https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.9.3-py310h2372a71_1.conda#dd21c88dfec3253cb9888c0e93fa5cd1 +https://conda.anaconda.org/conda-forge/noarch/aioitertools-0.11.0-pyhd8ed1ab_0.tar.bz2#59c40397276a286241c65faec5e1be3c +https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_0.tar.bz2#2cfa3e1cf3fb51bb9b17acc5b5e9ea11 +https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda#2cf4264fffb9e6eff6031c5b6884d61c +https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.0.9-py310hd8f1fbe_9.conda#e2047ad2af52c01845f58b580c6cbd5c +https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025 +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.18-pyhd8ed1ab_0.conda#bf61cfd2a7f212efba378167a07d4a6a +https://conda.anaconda.org/conda-forge/noarch/botocore-1.34.51-pyge310_1234567_0.conda#f8980578a765dd28417953dddfefe5bc +https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py310h2372a71_0.conda#d9dc9c45bdc2b38403e6b388581e92f0 +https://conda.anaconda.org/conda-forge/noarch/aiobotocore-2.12.1-pyhd8ed1ab_0.conda#045560daef58c75a759c2638fbdb5c6a +https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8 +https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.11-hd590300_1.conda#0bb492cca54017ea314b809b1ee3a176 +https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda#2e4d6bc0b14e10f895fc6791a7d9b26a +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.10.0-pyha770c72_0.conda#ae2ad334f34040e147cc5824b450463b +https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda#c5d3907ad8bd7bf557521a1833cf7e6d +https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda#405678b942f2481cecdb3e010f4925d9 +https://conda.anaconda.org/conda-forge/linux-64/pyrsistent-0.20.0-py310h2372a71_0.conda#e7f8dc8c62e136573c84116a5e743aed +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.17.3-pyhd8ed1ab_0.conda#723268a468177cd44568eb8f794e0d80 +https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda#98206ea9954216ee7540f0c773f2104d +https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3-pyhd8ed1ab_0.conda#d3076b483092a435832603243567bc31 +https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.4-py310hcc13569_0.conda#410f7e83992a591e492c25049a859254 +https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.1-pyhd8ed1ab_0.conda#2fcb582444635e2c402e8569bb94e039 +https://conda.anaconda.org/conda-forge/noarch/altair-5.2.0-pyhd8ed1ab_1.conda#1aebb1cef46d9cb76e0d38eed822348a +https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.10.1-pyhd8ed1ab_0.conda#a41cafc1fb653ce0e48b9310226e90fd +https://conda.anaconda.org/conda-forge/noarch/boto3-1.34.51-pyhd8ed1ab_0.conda#bd19311f73611626b31afc608af438cd +https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda#3d081de3a6ea9f894bbb585e8e3a4dcb +https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda#8d652ea2ee8eaee02ed8dc820bc794aa +https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda#490730480d76cf9c8f8f2849719c6e2b +https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda#7b517e7a6f0790337906c055aa97ca49 +https://conda.anaconda.org/conda-forge/noarch/certifi-2024.2.2-pyhd8ed1ab_0.conda#0876280e409658fc6f9e75d035960333 +https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2#b21ed0883505ba1910994f1df031a428 +https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2#914d6646c4dbb1fd3ff539830a12fd71 +https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2#9f765cbfab6870c8435b9eefecd7a1f4 +https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2#b748fbf7060927a6e82df7cb5ee8f097 +https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.4-pyhd8ed1ab_0.conda#20f047662cf4fa8b97836111df87dbb4 +https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda#9f359af5a886fd6ca6b2b6ea02e58332 +https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.10.0-hd8ed1ab_0.conda#c063ddbb9908499fd4f20b31dc67065a +https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.2-pyhd8ed1ab_0.conda#af5fa2d2186003472e766a23c46cae04 +https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda#948d84721b578d426294e17a02e24cbb +https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.1-py310hc6cd4ac_0.conda#1ea80564b80390fa25da16e4211eb801 +https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364 +https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094 +https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda#81a3be0b2023e1ea8555781f0ad904a2 +https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2#b21613793fcc81d944c76c9f2864a7de +https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263 +https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda#629f3203c99b32e0988910c93e77f3b6 +https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761 +https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda#68f0738df502a14213624b288c60c9ad +https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.42-pyha770c72_0.conda#0bf64bf10eee21f46ac83c161917fa86 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.17.2-pyhd8ed1ab_0.conda#140a7f159396547e9799aa98f9f0742e +https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda#5f25798dcefd8252ce5f9dc494d5f571 +https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda#e16be50e378d8a4533b989035b196ab8 +https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2#6784285c7e55cb7212efabc79e4c2883 +https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda#e7df0fdd404616638df5ece6e69ba7af +https://conda.anaconda.org/conda-forge/noarch/ipython-8.22.2-pyh707e725_0.conda#f0abe827c8a7c6d91bccdf90cb1fbee3 +https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.2.0-pyhd8ed1ab_0.conda#a0bc3eec34b0fab84be6b2da94e98e20 +https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.7.2-py310hff52083_0.conda#cb92c27600d5716fd526a206aa43342c +https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2#c3788462a6fbddafdb413a9f9053e58d +https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h59595ed_1.conda#7fc9d3288d2420bb3637647621018000 +https://conda.anaconda.org/conda-forge/linux-64/pyzmq-25.1.2-py310h795f18f_0.conda#fa09f98f3acfd3f5de30bd2d27d5cb7f +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4-py310h2372a71_0.conda#48f39c24349d9ae5c8e8873c42fb6170 +https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.1-pyhd8ed1ab_0.conda#c03972cfce69ad913d520c652e5ed908 +https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda#6598c056f64dc8800d40add25e4e2c34 +https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.3-pyhd33586a_0.conda#e0deff12c601ce5cb7476f93718f3168 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py310h2fee648_0.conda#45846a970e71ac98fd327da5d40a0a2c +https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py310h2372a71_4.conda#68ee85860502d53c8cbfa0e4cef0f6cb +https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda#3afef1f55a1366b4d3b6a0d92e2235e4 +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_0.tar.bz2#642d35437078749ef23a5dca2c9bb1f3 +https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20240316-pyhd8ed1ab_0.conda#7831efa91d57475373ee52fb92e8d137 +https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda#b77d8c2313158e6e461ca0efb1c2c508 +https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2#4cb68948e0b8429534380243d063a27a +https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-2.4-py310hff52083_3.conda#08ec1463dbc5c806a32fc431874032ca +https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2#fed45fc5ea0813240707998abe49f520 +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_0.conda#0944dc65cb4a9b5b68522c3bb585d41c +https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda#166212fe82dad8735550030488a01d03 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.17.3-pyhd8ed1ab_0.conda#7a709748e93f0b2c33d6b5b676b6d9d0 +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.6.3-pyhd8ed1ab_1.conda#2ac0d00a0fb3f1a4c81c460ba56bb23b +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_0.conda#219b3833aa8ed91d47d1be6ca03f30be +https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda#3f144b2c34f8cb5a9abd9ed23a39c561 +https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda#332493000404d8411859539a5a630865 +https://conda.anaconda.org/conda-forge/noarch/setuptools-69.2.0-pyhd8ed1ab_0.conda#da214ecd521a720a9d521c68047682dc +https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda#daf5160ff9cde3a468556965329085b9 +https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda#0ed9d7c0e9afa7c025807a9a8136ea3e +https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 +https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda#afcd1b53bcac8844540358e33f33d28f +https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda#5cbee699846772cc939bef23a0d524ed +https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.19.1-pyhd8ed1ab_0.conda#4d3ceee3af4b0f9a1f48f57176bf8625 +https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.3-pyhd8ed1ab_0.conda#ca3d437c0ef2e87f63d085822c74c49a +https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda#15b51397e0fe8ea7d7da60d83eb76ebc +https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9 +https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.3-pyhd8ed1ab_0.conda#0cab42b4917e71df9dc2224b9940ef19 +https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2#eb67e3cace64c66233e2d35949e20f92 +https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda#24fba5a9d161ad8103d4e84c0e1a3ed4 +https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda#9a19b94034dd3abb2b348c8b93388035 +https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyh41d4057_0.conda#ada5a17adcd10be4fc7e37e4166ba0e2 +https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.7.0-pyhd8ed1ab_0.conda#50ad31e07d706aae88b14a4ac9c73f23 +https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.10.0-pyhd8ed1ab_0.conda#016d56f5d81b9364d1da5f4895a2a9f8 +https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.4-pyhd8ed1ab_0.conda#91f93e1ebf6535be518715432d89fd92 +https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda#9669586875baeced8fc30c0826c3270e +https://conda.anaconda.org/conda-forge/noarch/json5-0.9.24-pyhd8ed1ab_0.conda#fc9780a517b51ea3798fc011c17ffd51 +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda#7f4a9e3fcff3f6356ae99244a014da6a +https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda#a30144e4156cdbb236f99ebb49828f8b +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.24.0-pyhd8ed1ab_0.conda#327bfe1c99154f02259d29810bd70afc +https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda#3d85618e2c97ab896b5b5e298d32b5b3 +https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.1.5-pyhd8ed1ab_0.conda#04b1ca9d7ac414b3f5c3fb16066c6861 +https://conda.anaconda.org/conda-forge/noarch/amazon-codewhisperer-jupyterlab-ext-2.0.1-pyhd8ed1ab_0.conda#ab9bb3e630d872e9d38c8c18a0cba7b4 +https://conda.anaconda.org/conda-forge/noarch/aws-embedded-metrics-3.2.0-pyhd8ed1ab_0.conda#e1c511655b6e9eb0265c9715c7fa410f +https://conda.anaconda.org/conda-forge/noarch/croniter-1.4.1-pyhd8ed1ab_0.conda#7a4568626f8d6e7c63dcb25d5501a967 +https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.6.0-pyh1a96a4e_0.conda#50ea2067ec92dfcc38b4f07992d7e235 +https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.1.12.3-ha770c72_0.conda#cdea66892b19a454f939487318b6c517 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.3-hd8ed1ab_0.conda#1344bbd74e8bcd1acdd8ec0824e9840c +https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.3-hd8ed1ab_0.conda#b0c9bbbe54a11a6db3bec51eb0ef0281 +https://conda.anaconda.org/conda-forge/linux-64/pydantic-1.10.14-py310h2372a71_0.conda#6aca52bad315e6b841a32d6b3b0cdb82 +https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.3-py310hc6cd4ac_0.conda#fb478fd83c001cbf8ab01c29b857262e +https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-1.4.49-py310h2372a71_1.conda#cdeaf46006791202a7597bf2a0e6ad9e +https://conda.anaconda.org/conda-forge/noarch/jupyter_scheduler-2.5.1-pyha770c72_0.conda#3d250834fde789b6cb96dc11a43d1df2 +https://conda.anaconda.org/conda-forge/noarch/jupyter-scheduler-2.5.1-hd8ed1ab_0.conda#bb6463ad5d244321f64a231ba9b6cf2a +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-jupyter-scheduler-3.0.7-pyhd8ed1ab_1.conda#ee635c11a576839138a93fc46e0f389b +https://conda.anaconda.org/conda-forge/linux-64/cryptography-42.0.5-py310h75e40e8_0.conda#47e6ea7109182e9e48f8c5839f1bded7 +https://conda.anaconda.org/conda-forge/noarch/tenacity-8.2.3-pyhd8ed1ab_0.conda#1482e77f87c6a702a7e05ef22c9b197b +https://conda.anaconda.org/conda-forge/noarch/pyathena-3.5.1-pyhd8ed1ab_0.conda#1c302abfabf4d08375990de11ff98242 +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-4.9.4-py310hcfd0673_0.conda#d6df7beac08573177dd9a6a560d1d180 +https://conda.anaconda.org/conda-forge/noarch/asn1crypto-1.5.1-pyhd8ed1ab_0.tar.bz2#f3f2ab3ce28979a24d1a988ba211eb9b +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.0-pyhd8ed1ab_0.conda#4501c96a5e9f18239ae6e5944604d493 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-execution-0.1.3-pyhd8ed1ab_0.conda#4b2d24a39133e2dda52ece10bfe56810 +https://conda.anaconda.org/conda-forge/noarch/sqlparse-0.4.4-pyhd8ed1ab_0.conda#2e2f31b3b1c866c29636377e14f8c4c6 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-magic-0.1.1-pyhd8ed1ab_0.conda#2cbf8f2847bc726efb567b62e6913410 +https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_0.conda#4c33109f652b5d8c995ab243436c9370 +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.4-pyhd8ed1ab_0.conda#d9aa21e693982b6ca0341a9bf41db4a8 +https://conda.anaconda.org/conda-forge/linux-64/ansi2html-1.9.1-py310hff52083_0.conda#2213ea76fd340e7c848c1be0cbdfc579 +https://conda.anaconda.org/conda-forge/noarch/textwrap3-0.9.2-py_0.tar.bz2#1f84e74e9dbe2e5ae38c58496bffaca8 +https://conda.anaconda.org/conda-forge/noarch/ansiwrap-0.8.4-py_0.tar.bz2#f09557e2a7cbd2470a2ab6353000cebd +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.5.0-h27087fc_0.tar.bz2#a08150fd2298460cd1fcccf626305642 +https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.3-pyhd8ed1ab_0.conda#192278292e20704f663b9c766909d67b +https://conda.anaconda.org/conda-forge/linux-64/astroid-3.0.3-py310hff52083_0.conda#7d18b84331cda8271c9ed67d1ca05d47 +https://conda.anaconda.org/conda-forge/noarch/astunparse-1.6.3-pyhd8ed1ab_0.tar.bz2#000b6f68a0bfaba800ced7500c11780f +https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.43-hcad00b1_0.conda#8292dea9e022d9610a11fce5e0896ed8 +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.0-hf2295e7_1.conda#0725f6081030c29b109088639824ff90 +https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-hd4edc92_1.tar.bz2#6c72ec3e660a51736913ef6ea68c454b +https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2#d9c69a24ad678ffce24c6543a0176b00 +https://conda.anaconda.org/conda-forge/noarch/autogluon.common-0.8.2-pyhd8ed1ab_4.conda#e24166dee3b1430877a324715caf8f5d +https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.0-py310hd41b1e2_0.conda#85d2aaa7af046528d339da1e813c3a9f +https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda#5cd86562580f274031ede6aa6aa24441 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_9.conda#61641e239f96eae2b8492dc7e755828c +https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.0.9-h166bdaf_9.conda#081aa22f4581c08e4372b0b6c2f8478e +https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.0.9-h166bdaf_9.conda#1f0a03af852a9659ed2bf08f2f1704fd +https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_9.conda#d47dee1856d9cb955b8076eeff304a5b +https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_9.conda#4601544b4982ba1861fa9b9c607b2c06 +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-15.1.0-py310h2372a71_0.conda#72637c58d36d9475fda24700c9796f19 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.50.0-py310h2372a71_0.conda#85c48c98c9f2b72b384fb11c9004920b +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda#009981dd9cfcaa4dbfa25ffaed86bcae +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py310hd41b1e2_1.conda#b8d67603d43b23ce7e988a5d81a7ab79 +https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-2.1.5.1-hd590300_1.conda#323e90742f0f48fc22bea908735f55e6 +https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2#76bbff344f0134279f225174e9064c8f +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.18-h0b41bf4_0.conda#6aa9c9de5542ecb07fdda9ca626252d8 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.3.1-hd590300_0.conda#82bf6f63eb15ef719b556b63feec3a77 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.5.1-h8b53f26_1.conda#5b09e13d732dda1a2bc9adc711164f4d +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-haa2dc70_1.conda#980d8aca0bc23ca73fa8caa3e7c84c28 +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda#2c80dc38fface310c9bd81b17037fee5 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.15-h0b41bf4_0.conda#33277193f5b92bad9fdd230eb700929c +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.0-hfec8fc6_2.conda#5ce6a42505c6e9e6151c54c3ec8d68ea +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.5.0-py310h582fbeb_1.conda#cf62f6cff3536eafaaa0c740b0bf7465 +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda#b9a4dacf97241704529131a0dfc0494f +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.3-py310h62c0568_0.conda#4a7296c0273eb01dfbed728dd6a6725a +https://conda.anaconda.org/conda-forge/noarch/joblib-1.3.2-pyhd8ed1ab_0.conda#4da50d410f553db77e62ab62ffaa1abc +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.11.4-py310hb13e2d6_0.conda#f0063b2885bfae11324a00a693f88781 +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.4.0-pyhc1e730c_0.conda#b296278eef667c673bf51de6535bad88 +https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.4.1.post1-py310h1fdf081_0.conda#2706ad1a5f6cbad8b57d4094889d1e33 +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2#3faab06a954c2a04039983f2c4a50d99 +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.2-pyhd8ed1ab_0.conda#2b8dfb969f984497f3f98409a9545776 +https://conda.anaconda.org/conda-forge/linux-64/autogluon.core-0.8.2-light_py310h2d11d36_6.conda#9de8e45568202a91466af4d849c7e919 +https://conda.anaconda.org/conda-forge/noarch/autogluon.features-0.8.2-pyhd8ed1ab_3.conda#c827eccfb0ddb1484d0e00f45242b8f8 +https://conda.anaconda.org/conda-forge/linux-64/chardet-5.2.0-py310hff52083_1.conda#a677136a83b823803d2f92045f885be2 +https://conda.anaconda.org/conda-forge/noarch/binaryornot-0.4.4-py_1.tar.bz2#a556fa60840fcb9dd739d186bfd252f7 +https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda#f3ad426304898027fc619827ff428eca +https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_1.conda#ba8aba332d8868897ce44ad74015a7fe +https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_0.conda#4b11845622b3c3178c0e989235b53975 +https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda#776a8dd9e824f77abac30e6ef43a8f7a +https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda#93a8e71256479c62074356ef6ebf501b +https://conda.anaconda.org/conda-forge/noarch/rich-13.7.1-pyhd8ed1ab_0.conda#ba445bf767ae6f0d959ff2b40c20912b +https://conda.anaconda.org/conda-forge/noarch/cookiecutter-2.6.0-pyhca7485f_0.conda#d6260b53b9db90017321af0b45cc00da +https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda#78745f157d56877a2c6e7b386f66f3e2 +https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.22.0-pyhd8ed1ab_0.conda#c4dbdc593adfa072d40df9b1dd128444 +https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py310h2372a71_0.conda#efdca5c3783dae00552f389bd7b56c3d +https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.0-hd590300_0.conda#71b89db63b5b504e7afc8ad901172e1e +https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.1-hc309b26_1.conda#cc09293a2c2b7fd77aff284f370c12c0 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-h4d4d85c_2.conda#9ca99452635fe03eb5fa937f5ae604b0 +https://conda.anaconda.org/conda-forge/linux-64/s2n-1.3.49-h06160fa_0.conda#1d78349eb26366ecc034a4afe70a8534 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.32-he9a53bd_1.conda#8a24e5820f4a0ffd2ed9c4722cd5d7ca +https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.7.11-h00aa349_4.conda#cb932dff7328ff620ce8059c9968b095 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-h4d4d85c_1.conda#eba092fc6de212a01de0065f38fe8bbb +https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.3-h28f7589_1.conda#97503d3e565004697f1651753aa95b9e +https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.17-h4d4d85c_1.conda#30f9df85ce23cd14faa9a4dfa50cca2b +https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.3.1-h2e3709c_4.conda#2cf21b1cbc1c096a28ffa2892257a2c1 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.9.3-hb447be9_1.conda#c520669eb0be9269a5f0d8ef62531882 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.14-hf3aad02_1.conda#a968ffa7e9fe0c257628033d393e512f +https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.21.0-hb942446_5.conda#07d92ed5403ad7b5c66ffd7d5b8f7e57 +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.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.2-h659d440_0.conda#cd95826dbd331ed1be26bdf401432844 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.27.0-hd590300_0.conda#f6afff0e9ee08d2f1b897881a4f38cdb +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.58.0-h47da74e_1.conda#700ac6ea6d53d5510591c4344d5c989a +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda#1f5a58e686b13bcfde88b93f547d23fe +https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.6.0-hca28451_0.conda#704739398d858872cb91610f49f0ef29 +https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.10.57-h85b1a90_19.conda#0605d3d60857fc07bd6a11e878fe0f08 +https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-he1b5a44_1004.tar.bz2#cddaf2c63ea4a5901cf09524c490ecdc +https://conda.anaconda.org/conda-forge/linux-64/glog-0.6.0-h6f12383_0.tar.bz2#b31f3565cb84435407594e548a2fb7b2 +https://conda.anaconda.org/conda-forge/linux-64/libabseil-20230125.3-cxx17_h59595ed_0.conda#d1db1b8be7c3a8983dcbbbfe4f0765de +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/re2-2023.03.02-h8c504da_0.conda#206f8fa808748f6e90599c3368a1114e +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.conda#68c34ec6149623be41a1933ab996a209 +https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.54.3-hb20ce57_0.conda#7af7c59ab24db007dfd82e0a3a343f66 +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.12.0-hac9eb74_1.conda#0dee716254497604762957076ac76540 +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.18.1-h8fd135c_2.conda#bbf65f7688512872f063810623b755dc +https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2#ede4266dc02e875fe1ea77b25dd43747 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda#318b08df404f9c9be5712aaa5a6f0bb0 +https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.10-h9fff704_0.conda#e6d228cd0bb74a51dd18f5bfce0b4115 +https://conda.anaconda.org/conda-forge/linux-64/orc-1.9.0-h2f23424_1.conda#9571eb3eb0f7fe8b59956a7786babbcd +https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-hd590300_0.conda#8feeecae73aeef0a2985af46b5a2c1df +https://conda.anaconda.org/conda-forge/linux-64/rdma-core-28.9-h59595ed_1.conda#aeffb7c06b5f65e55e6c637408dc4100 +https://conda.anaconda.org/conda-forge/linux-64/ucx-1.14.1-h64cca9d_5.conda#39aa3b356d10d7e5add0c540945a0944 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-12.0.1-hb87d912_8_cpu.conda#3f3b11398fe79b578e3c44dd00a44e4a +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-12.0.1-py310h0576679_8_cpu.conda#27f55ccfd038d6665facb04a0aa572c5 +https://conda.anaconda.org/conda-forge/noarch/pyarrow-hotfix-0.6-pyhd8ed1ab_0.conda#ccc06e6ef2064ae129fab3286299abda +https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda#f08fb5c89edfc4aadee1c81d4cfb1fa1 +https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.4.1-py310h2372a71_0.conda#b631b889b0b4bc2fca7b8b977ca484b2 +https://conda.anaconda.org/conda-forge/noarch/datasets-2.18.0-pyhd8ed1ab_0.conda#3482c9b417757df305ff4e3a7e4b7c10 +https://conda.anaconda.org/conda-forge/noarch/responses-0.18.0-pyhd8ed1ab_0.tar.bz2#a10d30e613a2a1a78a89ceadf3832e7c +https://conda.anaconda.org/conda-forge/noarch/evaluate-0.4.1-pyhd8ed1ab_0.conda#ea228540526db4dde8ad8f2309bc1d40 +https://conda.anaconda.org/conda-forge/noarch/gdown-5.1.0-pyhd8ed1ab_0.conda#6f880647c0270648f710f334c60bc76c +https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.1.99-h180e1df_0.conda#056064bd3ef47439e3e78fac28449fbf +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.1.99-py310hebdb9f0_0.conda#b3a5908ac3912b26d6a8b77faebe6eca +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.1.99-h180e1df_0.conda#c67cc412366709c1c3225f19f8aed63b +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.1.99-hff52083_0.conda#578969452de13e4ad69edf18ee2b3d5a +https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d +https://conda.anaconda.org/conda-forge/linux-64/regex-2023.12.25-py310h2372a71_0.conda#4a9ba4e7af60356e63b38a6d419acad6 +https://conda.anaconda.org/conda-forge/noarch/sacremoses-0.0.53-pyhd8ed1ab_0.tar.bz2#76c3c384fe0941f1b08193736e8e277a +https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.2-py310hcb5633a_0.conda#a1e978544ef765ef9ac2f2320e43bacd +https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.13.3-py310he1f1126_0.conda#ea2281fe0bf70c1c83393565342a8a8c +https://conda.anaconda.org/conda-forge/noarch/transformers-4.31.0-pyhd8ed1ab_0.conda#8cccf394a00fbfef2f3d6028422ae5cc +https://conda.anaconda.org/conda-forge/noarch/nlpaug-1.1.11-pyhd8ed1ab_1.conda#4e231f0fa7db9388cf4c8539d623ac62 +https://conda.anaconda.org/conda-forge/noarch/nltk-3.8.1-pyhd8ed1ab_0.conda#518c769ca4273480a99be6e559a26192 +https://conda.anaconda.org/conda-forge/noarch/typish-1.9.3-pyhd8ed1ab_0.tar.bz2#81b3f3101aa2af117924d908a1b33c67 +https://conda.anaconda.org/conda-forge/noarch/nptyping-2.4.1-pyhd8ed1ab_0.tar.bz2#7929b4ae7565a66f0fab4b70cfb90594 +https://conda.anaconda.org/conda-forge/noarch/omegaconf-2.2.3-pyhd8ed1ab_0.conda#cebc9f0fc6eebdcc368bb30ba30f2fd5 +https://conda.anaconda.org/conda-forge/noarch/markdown-3.6-pyhd8ed1ab_0.conda#06e9bebf748a0dea03ecbe1f0e27e909 +https://conda.anaconda.org/conda-forge/noarch/ordered-set-4.1.0-pyhd8ed1ab_0.tar.bz2#9a8714decb3967b290263817e876d8a9 +https://conda.anaconda.org/conda-forge/noarch/model-index-0.1.11-pyhd8ed1ab_0.conda#6aecca21351e44095ffd2901ee46337a +https://conda.anaconda.org/conda-forge/noarch/wheel-0.43.0-pyhd8ed1ab_0.conda#6e43a94e0ee67523b5e781f0faba5c45 +https://conda.anaconda.org/conda-forge/noarch/pip-23.3.2-pyhd8ed1ab_0.conda#8591c748f98dcc02253003533bc2e4b1 +https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2#4759805cce2d914c38472f70bf4d8bcb +https://conda.anaconda.org/conda-forge/noarch/openmim-0.3.7-pyhd8ed1ab_0.conda#e081b8fa91b884435725f0caa13866ff +https://conda.anaconda.org/conda-forge/linux-64/protobuf-4.21.12-py310heca2aa9_0.conda#90bb7e1b729c4b50272cf78be97ab912 +https://conda.anaconda.org/conda-forge/noarch/pytesseract-0.3.10-pyhd8ed1ab_0.tar.bz2#04f4becceb0c032c5dbdae6ad18bd95e +https://conda.anaconda.org/conda-forge/noarch/lightning-utilities-0.11.1-pyhd8ed1ab_0.conda#b3e6a8dac4cdfd01c23211c7fb50bfee +https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.0.3-pyhd8ed1ab_0.conda#4e8849ba2fa06393b7ab5a50c6a4256c +https://conda.anaconda.org/conda-forge/noarch/pytorch-lightning-2.0.9-pyhd8ed1ab_0.conda#3e96ed529412338e38af9004e22267de +https://conda.anaconda.org/conda-forge/noarch/pytorch-metric-learning-1.7.3-pyhd8ed1ab_0.conda#139aa590e345e10f4572812a329806f4 +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.2.1-pyhd8ed1ab_0.conda#b325bfc4cff7d7f8a868f1f7ecc4ed16 +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.3-py310h2372a71_0.conda#21362970a6fea90ca507c253c20465f2 +https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 +https://conda.anaconda.org/conda-forge/noarch/partd-1.4.1-pyhd8ed1ab_0.conda#acf4b7c0bcd5fa3b0e05801c4d2accd6 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.3.1-pyhd8ed1ab_0.conda#52dd56ce3afa6a52c2f3d3116875ff32 +https://conda.anaconda.org/conda-forge/noarch/imageio-2.34.0-pyh4b66e23_0.conda#b8853659d596f967c661f544dd89ede7 +https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.4.1-py310h1f7b6fc_1.conda#be6f0382440ccbf9fb01bb19ab1f1fc0 +https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.5-h0f2a231_0.conda#009521b7ed97cca25f8f997f9e745976 +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.0.7-h0b41bf4_0.conda#49e8329110001f04923fe7e864990b0c +https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.13.2-hb4ffafa_0.conda#976aaf1afd331ed7346d649da5c5c1ee +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.1-h0b41bf4_3.conda#96f3b11872ef6fad973eac856cd2624f +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/libavif-0.11.1-h8182462_2.conda#41c399ed4c439e37b844c24ab5621b5a +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-h59595ed_0.conda#fd486bffbf0d6841cf1456a8f2e3a995 +https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2023.8.12-py310hc929067_0.conda#61caf809753610c4c87d583765b1d478 +https://conda.anaconda.org/conda-forge/noarch/tifffile-2024.2.12-pyhd8ed1ab_0.conda#d5c8bef52be4e70c48b1400eec3eecc8 +https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.19.3-py310h769672d_2.tar.bz2#c0391107b0cd0010708d6969ed759e8b +https://conda.anaconda.org/conda-forge/noarch/seqeval-1.2.2-pyhd3deb0d_0.tar.bz2#d4436c8a8b9fb6d60fe4e7b9f097f9bb +https://conda.anaconda.org/conda-forge/noarch/cachetools-5.3.3-pyhd8ed1ab_0.conda#cd4c26c702a9bcdc70ff05b609ddacbe +https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.5.1-pyhd8ed1ab_0.conda#fb1a800972b072aa4d16450983c81418 +https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.3.0-pyhd8ed1ab_0.conda#26db749166cdca55e5ef1ffdc7767d0e +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda#b50aec2c744a5c493c09cce9e2e7533e +https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_0.tar.bz2#caabbeaa83928d0c3e3949261daa18eb +https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2#03bf410858b2cefc267316408a77c436 +https://conda.anaconda.org/conda-forge/noarch/google-auth-2.29.0-pyhca7485f_0.conda#a12a2abc807053bc378b218a2a525c7d +https://conda.anaconda.org/conda-forge/noarch/blinker-1.7.0-pyhd8ed1ab_0.conda#550da20b2c2e38be9cc44bb819fda5d5 +https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_1.conda#74f76d4868dbba5870f2cf1d9b12d8f3 +https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2#8f882b197fd9c4941a787926baea4868 +https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-2.0.0-pyhd8ed1ab_0.conda#87ce3f09ae7e1d3d0f748a1a634ea3b7 +https://conda.anaconda.org/conda-forge/noarch/google-auth-oauthlib-1.0.0-pyhd8ed1ab_1.conda#569e62e95b01b53e4ec7d9abe83b7385 +https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.54.3-py310heca2aa9_0.conda#7c82ea96968976ee2eb66a52f2decd8e +https://conda.anaconda.org/conda-forge/linux-64/tensorboard-data-server-0.7.0-py310h75e40e8_1.conda#e562478facfa960813945204273ecac5 +https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.0.1-pyhd8ed1ab_0.conda#af8d825d93dbe6331ee6d61c69869ca0 +https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.12.3-pyhd8ed1ab_0.conda#429d39f86cef8d0859d639804ae67aaf +https://conda.anaconda.org/conda-forge/linux-64/torchvision-0.15.2-cpu_py310hb9e6163_1.conda#952305ae6b751a80284e8d4c9115ed4b +https://conda.anaconda.org/conda-forge/noarch/timm-0.9.16-pyhd8ed1ab_0.conda#bc15401d946adb3fbce34c4ba351dd20 +https://conda.anaconda.org/conda-forge/noarch/autogluon.multimodal-0.8.2-pyha770c72_5.conda#a8ca42e2b4ee0fd6dce729bc226dd0cc +https://conda.anaconda.org/conda-forge/noarch/plotly-5.19.0-pyhd8ed1ab_0.conda#669cd7065794633b9e64e6a9612ec700 +https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda#e7ba12deb7020dd080c6c70e7b6f6a3d +https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda#53fb86322bdb89496d7579fe3f02fd61 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda#0f69b688f52ff6da70bccb7ff7001d1d +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_1.conda#6185f640c43843e5ad6fd1c5372c3f80 +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/pixman-0.43.2-h59595ed_0.conda#71004cbf7924e19c02746ccde9fd7123 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda#b462a33c0be1421532f28bfe8f4a7514 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda#93ee23f12bc2e684548181256edd2cf6 +https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2#4b230e8381279d76131116660f5a241a +https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda#bce9f945da8ad2ae9b1d7165a64d0f87 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2#b4a4381d54784606820704f7b5f05a15 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.7-h8ee46fc_0.conda#49e482d882669206653b095f5206c05b +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda#82b6df12252e6f32402b96dacc656fec +https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2#06feff3d2634e3097ce2fe681474b534 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda#ed67c36f215b310412b2af935bf3e530 +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-h3faef2a_0.conda#f907bb958910dc404647326ca80c263e +https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h6b639ba_2.conda#ee8220db21db8094998005990418fe5b +https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h58526e2_1001.tar.bz2#8c54672728e8ec6aa6db90cf2806d220 +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.3.0-h3d44ed6_0.conda#5a6f6c00ef982a9bc83558d9ac8f64a0 +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.52.1-ha41ecd1_0.conda#5c0cc002bf4eaa56448b0729efd6e96c +https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h280cfa0_4.conda#410f86e58e880dcc7b0e910a8e89c05c +https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda#4d8df0b0db060d33c9a702ada998a8fe +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.3.1-hbf2b3c1_0.conda#4963f3f12db45a576f2b8fbe9a0b8569 +https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h74d50f4_7.conda#3453ac94a99ad9daf17e8a313d274567 +https://conda.anaconda.org/conda-forge/linux-64/gettext-0.21.1-h27087fc_0.tar.bz2#14947d8770185e5153fdd04d4673ed37 +https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.56.3-he3f83f7_1.conda#03bd1ddcc942867a19528877143b9852 +https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.7-h27087fc_0.conda#f204c8ba400ec475452737094fb81d52 +https://conda.anaconda.org/conda-forge/linux-64/graphviz-8.1.0-h28d9a01_0.conda#33628e0e3de7afd2c8172f76439894cb +https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.20.3-pyh717bed2_0.conda#031c005eb6d4513013d99ed163dd5f59 +https://conda.anaconda.org/conda-forge/linux-64/catboost-1.2.3-py310hff52083_2.conda#e063c808181593406d4d3d321ee7ffff +https://conda.anaconda.org/conda-forge/noarch/fastcore-1.5.29-pyhd8ed1ab_0.conda#155c898255baddd6b2cb95894791eeca +https://conda.anaconda.org/conda-forge/noarch/fastprogress-1.0.3-pyhd8ed1ab_0.tar.bz2#1690639d3647fde6edf4f00c8f87c263 +https://conda.anaconda.org/conda-forge/noarch/fastdownload-0.0.7-pyhd8ed1ab_0.conda#29c29999a420c2d28c3a46b3eadb9373 +https://conda.anaconda.org/conda-forge/linux-64/catalogue-2.0.10-py310hff52083_0.conda#a20390cd5f5fe4d8c5f6f2e7fa6c54cf +https://conda.anaconda.org/conda-forge/linux-64/cymem-2.0.8-py310hc6cd4ac_1.conda#8e4dada89998e0cb4f97b835dff6dc7e +https://conda.anaconda.org/conda-forge/noarch/langcodes-3.3.0-pyhd8ed1ab_0.tar.bz2#aacac9c3804912c38087d1c295708493 +https://conda.anaconda.org/conda-forge/linux-64/murmurhash-1.0.10-py310hc6cd4ac_1.conda#2b0c4b4532c601ece4537cc7f3558464 +https://conda.anaconda.org/conda-forge/noarch/smart_open-5.2.1-pyhd8ed1ab_0.tar.bz2#c7a838c38e38c82edde371a9054e6c92 +https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda#d08db09a552699ee9e7eec56b4eb3899 +https://conda.anaconda.org/conda-forge/noarch/typer-0.9.4-pyhd8ed1ab_0.conda#01a14596daee2aff9cdc1167786231ea +https://conda.anaconda.org/conda-forge/noarch/pathy-0.10.2-pyhd8ed1ab_0.conda#69d84b5c17aea4d7350f3536bcde7296 +https://conda.anaconda.org/conda-forge/linux-64/preshed-3.0.9-py310hc6cd4ac_1.conda#a2a27c2eafd1e280555ae954df088fc3 +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/srsly-2.4.8-py310hc6cd4ac_1.conda#7cd9d4be6f55ccb53cbd7125f2e6a0fb +https://conda.anaconda.org/conda-forge/linux-64/confection-0.1.4-py310h17c5347_0.conda#72b63825959fc040cab8ed0f12f2040e +https://conda.anaconda.org/conda-forge/linux-64/cython-blis-0.7.10-py310h1f7b6fc_2.conda#6a0165d9e76c443ed66d2e8b733aa133 +https://conda.anaconda.org/conda-forge/linux-64/wasabi-1.1.2-py310hff52083_0.conda#8ed9f04ed8e1373063cd03b9d5c86ce3 +https://conda.anaconda.org/conda-forge/linux-64/thinc-8.2.2-py310hcb52e73_0.conda#550b37537f05740f1c9a38d63d843b3c +https://conda.anaconda.org/conda-forge/noarch/cloudpathlib-0.16.0-pyhd8ed1ab_0.conda#8d75941f621306e58b7642394a8bad87 +https://conda.anaconda.org/conda-forge/noarch/weasel-0.3.4-pyhd8ed1ab_0.conda#a53c82e61a1173c887e84fc50842eec4 +https://conda.anaconda.org/conda-forge/linux-64/spacy-3.7.2-py310hcb52e73_0.conda#c966d5a09c130d0bcfce4126643ddc74 +https://conda.anaconda.org/conda-forge/noarch/fastai-2.7.14-pyhd8ed1ab_0.conda#9854ef355cc4bd1e2aac40998f721fed +https://conda.anaconda.org/conda-forge/linux-64/lightgbm-3.3.5-py310heca2aa9_0.conda#d2595ddab22cbca7409b28e3105afd0a +https://conda.anaconda.org/conda-forge/linux-64/libxgboost-1.7.6-cpu_h6728c87_6.conda#9183d0551aa5e5be36c670e701b287a3 +https://conda.anaconda.org/conda-forge/linux-64/py-xgboost-1.7.6-cpu_py310h78d450f_6.conda#dcc61476de611ac5673698495b607109 +https://conda.anaconda.org/conda-forge/linux-64/xgboost-1.7.6-cpu_py310h78d450f_6.conda#061a099093fd2a97ae506f65dc87baf2 +https://conda.anaconda.org/conda-forge/noarch/autogluon.tabular-0.8.2-pyha770c72_4.conda#17fad1cdb563ddad16ab0ba4c085bcb3 +https://conda.anaconda.org/conda-forge/noarch/gluonts-0.13.7-pyhd8ed1ab_0.conda#1684b578508d9918b2dcadd4c365c61a +https://conda.anaconda.org/conda-forge/linux-64/libllvm14-14.0.6-hcd5def8_4.conda#73301c133ded2bf71906aa2104edae8b +https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.42.0-py310h1b8f574_1.conda#e2a5e9f92629c8e4c8611883a35745b4 +https://conda.anaconda.org/conda-forge/linux-64/numba-0.59.0-py310h7dc5dd1_1.conda#966bc2bc095723310d746106e7c91791 +https://conda.anaconda.org/conda-forge/noarch/window-ops-0.0.15-pyhd8ed1ab_0.conda#b5ffd7d8295d4eda512216e23cf75a0f +https://conda.anaconda.org/conda-forge/noarch/mlforecast-0.7.3-pyhd8ed1ab_0.conda#7a2b34b4c9bff2545200b3746da70f11 +https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.6-pyhd8ed1ab_0.conda#a5b55d1cb110cdcedc748b5c3e16e687 +https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.1-py310h1f7b6fc_0.conda#d98c3749dd466513dd921f5818f4b001 +https://conda.anaconda.org/conda-forge/noarch/statsforecast-1.4.0-pyhd8ed1ab_0.conda#aa803f915587fe4306dfe0234215caa9 +https://conda.anaconda.org/conda-forge/linux-64/ujson-5.9.0-py310hc6cd4ac_0.conda#cab4b543b897dcf548edb3018fe45f9e +https://conda.anaconda.org/conda-forge/noarch/autogluon.timeseries-0.8.2-pyhd8ed1ab_4.conda#a64157275daf72a557fe4a9d843a9e1d +https://conda.anaconda.org/conda-forge/noarch/autogluon-0.8.2-pyhd8ed1ab_4.conda#7ff9ac51e09bd5991970a7df53b4bee6 +https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.11.1-pyhd8ed1ab_0.conda#29ff12b36df16bb66fdccd4206aaebfb +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.10-pyhd8ed1ab_0.conda#16b73b2c4ff7dda8bbecf88aadfe2027 +https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.10-pyhd8ed1ab_0.conda#521f489e3babeddeec638c2add7e9e64 +https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.2-pyhd8ed1ab_0.conda#67f86478c78637f68c1f3858973021f2 +https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.42-hd8ed1ab_0.conda#85a2189ecd2fcdd86e92b2d4ea8fe461 +https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_0.conda#7cf6f52a66f8e3cd9d8b6c231262dcab +https://conda.anaconda.org/conda-forge/noarch/notebook-7.1.2-pyhd8ed1ab_0.conda#fa781da51f05c9211b75b5e7bcff8136 +https://conda.anaconda.org/conda-forge/noarch/qtpy-2.4.1-pyhd8ed1ab_0.conda#7f391bd70d2abfb70f304ba5aa4e1261 +https://conda.anaconda.org/conda-forge/noarch/qtconsole-base-5.5.1-pyha770c72_0.conda#5528a3eda283b421055c89bface19a1c +https://conda.anaconda.org/conda-forge/noarch/jupyter-1.0.0-pyhd8ed1ab_10.conda#056b8cc3d9b03f54fc49e6d70d7dc359 +https://conda.anaconda.org/conda-forge/noarch/mock-5.1.0-pyhd8ed1ab_0.conda#926c67c0310094cf421ad13f7d3f38e5 +https://conda.anaconda.org/conda-forge/noarch/nose-1.3.7-py_1006.tar.bz2#382019d5f8e9362ef6f60a8d4e7bce8f +https://conda.anaconda.org/conda-forge/noarch/hdijupyterutils-0.21.0-pyh1a96a4e_0.conda#4db6232a9b934edc1c1e2f7b7d5a5d40 +https://conda.anaconda.org/conda-forge/noarch/autovizwidget-0.21.0-pyh1a96a4e_0.conda#7db56991c3c823ddb394ed85df9b54f5 +https://conda.anaconda.org/conda-forge/noarch/aws-glue-sessions-1.0.4-pyhd8ed1ab_0.conda#169c4c0a396d83164215f54024031ec8 +https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.1.2-py310hcb5633a_0.conda#6dd3d49f65ceb05dbd527a5b6301611b +https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda#4eccaeba205f0aed9ac3a9ea58568ca3 +https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda#17064acba08d3686f1135b5ec1b32b12 +https://conda.anaconda.org/conda-forge/linux-64/black-24.3.0-py310hff52083_0.conda#12960fe9118cbb71fb802a52870f7874 +https://conda.anaconda.org/conda-forge/noarch/boltons-23.1.1-pyhd8ed1ab_0.conda#56febe65315cc388a5d20adf2b39a74d +https://conda.anaconda.org/conda-forge/linux-64/fmt-10.2.1-h00ab1b0_0.conda#35ef8bc24bd34074ebae3c943d551728 +https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h516909a_1000.tar.bz2#bb14fcb13341b81d5eb386423b9d2bac +https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.7.2-h2aa1ff5_1.conda#3bf887827d1968275978361a6e405e4f +https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.28-hfc55251_1.conda#84271c00f5804bbc1ef7c525d1e4f405 +https://conda.anaconda.org/conda-forge/linux-64/reproc-14.2.4.post0-hd590300_1.conda#82ca53502dfd5a64a80dee76dae14685 +https://conda.anaconda.org/conda-forge/linux-64/reproc-cpp-14.2.4.post0-h59595ed_1.conda#715e1d720ec1a03715bebd237972fca5 +https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h59595ed_0.conda#965eaacd7c18eb8361fd12bb9e7a57d7 +https://conda.anaconda.org/conda-forge/linux-64/libmamba-1.5.8-had39da4_0.conda#def669885dc103d8acb7ac2ac35e0b2f +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.8-py310h39ff949_0.conda#37f8aa15b73c4691eeec15caf45aab25 +https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-24.1.0-pyhd8ed1ab_0.conda#304dc78ad6e52e0fd663df1d484c1531 +https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.22.0-py310h1275a96_0.conda#54698ba13cd3494547b289cd86a2176a +https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.9.0-pyhd8ed1ab_0.conda#38253361efb303deead3eab39ae9269b +https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.2.0-pyh38be061_0.conda#8a3ae7f6318376aa08ea753367bb7dd6 +https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_0.conda#bbdb409974cd6cb30071b1d978302726 +https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_0.conda#bfdb7c5c6ad1077c82a69a8642c87aff +https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.0.2-py310hff52083_0.conda#4837faab0d3e665df57fef662148c6a3 +https://conda.anaconda.org/conda-forge/noarch/pluggy-1.4.0-pyhd8ed1ab_0.conda#139e9feb65187e916162917bb2484976 +https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py310h2372a71_0.conda#0adaac9a86d59adae2bc86b3cdef2df1 +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py310h2372a71_0.conda#dcf6d2535586c77b31425ed835610c54 +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.6-py310h2372a71_0.conda#50b7d9b39099cdbabf65bf27df73a793 +https://conda.anaconda.org/conda-forge/noarch/truststore-0.8.0-pyhd8ed1ab_0.conda#08316d001eca8854392cf2837828ea11 +https://conda.anaconda.org/conda-forge/linux-64/conda-23.11.0-py310hff52083_1.conda#d5278ac990c67d5ed51584998aa16c5a +https://conda.anaconda.org/conda-forge/noarch/contextlib2-21.6.0-pyhd8ed1ab_0.tar.bz2#5b26a831440be04c39531a8ce20f5d71 +https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.4-h7f98852_1002.tar.bz2#e728e874159b042d92b90238a3cb0dc2 +https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.27-h54b06d7_7.conda#dce22f70b4e5a407ce88f2be046f4ceb +https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.1.2-pyhd8ed1ab_0.tar.bz2#3c3de74912f11d2b590184f03c7cd09b +https://conda.anaconda.org/conda-forge/noarch/flask-3.0.2-pyhd8ed1ab_0.conda#7f88df670921cc31c309719e30c22021 +https://conda.anaconda.org/conda-forge/noarch/retrying-1.3.3-py_2.tar.bz2#a11f356d6f93b74b4a84e9501afd48b4 +https://conda.anaconda.org/conda-forge/noarch/dash-2.16.1-pyhd8ed1ab_0.conda#016bd4f61878a57f19c8cd744708a1f1 +https://conda.anaconda.org/conda-forge/noarch/marshmallow-3.21.1-pyhd8ed1ab_0.conda#ae303aa7dc100bc3bc01b5a3b7ca3567 +https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_0.conda#9e924b76b91908a17e28a19a0ab88687 +https://conda.anaconda.org/conda-forge/noarch/dataclasses-json-0.6.4-pyhd8ed1ab_0.conda#1190a6456351690603b2d64d1cbf5b4a +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d +https://conda.anaconda.org/conda-forge/noarch/deepmerge-1.1.1-pyhd8ed1ab_0.conda#d91c3d8ac3f2ab36ca4ea32ac42f731e +https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.7-py310hd41b1e2_0.conda#dc5263dcaa1347e5a456ead3537be27d +https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2#6d6552722448103793743dabfbda532d +https://conda.anaconda.org/conda-forge/noarch/tblib-2.0.0-pyhd8ed1ab_0.conda#f5580336fe091d46f9a2ea97da044550 +https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda#cf30c2c15b82aacb07f9c09e28ff2275 +https://conda.anaconda.org/conda-forge/noarch/distributed-2024.3.1-pyhd8ed1ab_0.conda#b0ad5ef44595ef37c3008fc04ecd2abf +https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.5.0-py310h2372a71_3.conda#a29a0825809cd3a780097472be176618 +https://conda.anaconda.org/conda-forge/noarch/paramiko-3.4.0-pyhd8ed1ab_0.conda#a5e792523b028b06d7ce6e65a6cd4a33 +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.0.0-pyhd8ed1ab_0.conda#aec5f308cb9055e83c59afecd5fcb58a +https://conda.anaconda.org/conda-forge/noarch/docstring-to-markdown-0.15-pyhd8ed1ab_0.conda#a3a1e6af2926a3affcd6f2072871f551 +https://conda.anaconda.org/conda-forge/linux-64/libfaiss-1.7.4-hf47d654_0_cpu.conda#8fd132db65c8d51caea2ae7cde4b450c +https://conda.anaconda.org/conda-forge/linux-64/libfaiss-avx2-1.7.4-h1234567_0_cpu.conda#7eb943c067a63c4d8af526c2df9f2c1b +https://conda.anaconda.org/conda-forge/linux-64/faiss-1.7.4-py310h9ed8947_0_cpu.conda#99665c710087f7a964915b5ea0097465 +https://conda.anaconda.org/conda-forge/linux-64/faiss-cpu-1.7.4-h718b53a_0.conda#7a9e6f72c36ff5a5eeb61660fd6fdf8d +https://conda.anaconda.org/conda-forge/noarch/starlette-0.27.0-pyhd8ed1ab_0.conda#6facb6fc201d334257db8004439705d3 +https://conda.anaconda.org/conda-forge/noarch/fastapi-0.103.2-pyhd8ed1ab_0.conda#fb243b6796ab7d64b14e00c279620c04 +https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_0.tar.bz2#34fc335fc50eef0b5ea708f2b5f54e0c +https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.2.0-pyhd8ed1ab_0.conda#0cf7fef6aa123df28adb21a590065e3d +https://conda.anaconda.org/conda-forge/noarch/flake8-7.0.0-pyhd8ed1ab_0.conda#15bc58c860fc0a9abc26ec902df35252 +https://conda.anaconda.org/conda-forge/linux-64/flatbuffers-23.5.26-h59595ed_1.conda#913a1c6fd00b66f33392a129e835ceca +https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_0.conda#650a7807e689642dddd3590eb817beed +https://conda.anaconda.org/conda-forge/noarch/gast-0.4.0-pyh9f0ad1d_0.tar.bz2#42323c77b73462199fca93bc8ac9279d +https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2#62f26a3d1387acee31322208f0cfa3e0 +https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda#623b19f616f2ca0c261441067e18ae40 +https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.42-pyhd8ed1ab_0.conda#6bc8e496351bafd761c0922c3ebd989a +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.80.0-hde27a5a_1.conda#939ddd853b1d98bf6fd22cc0adeda317 +https://conda.anaconda.org/conda-forge/linux-64/glib-2.80.0-hf2295e7_1.conda#d3bcc5c186f78feba6f39ea047c35950 +https://conda.anaconda.org/conda-forge/noarch/google-pasta-0.2.0-pyh8c360ce_0.tar.bz2#26e27d7d3d7fe2336b543dd8e0f12cbf +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.22.9-h98fc4e7_1.conda#f502076ed4db50d9ee5c907036a5a172 +https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2#6e8cc2173440d77708196c5b93771680 +https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f +https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 +https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.22.9-hfa15dee_1.conda#b66ddd883308a836ed86c247231aab82 +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_h4f84152_100.conda#d471a5c3abc984b662d9bae3bb7fd8a5 +https://conda.anaconda.org/conda-forge/linux-64/h5py-3.10.0-nompi_py310h65828d5_101.conda#44c185c5b133ad6d1d449839407aa863 +https://conda.anaconda.org/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_0.conda#1d25ed2b95b92b026aaa795eabec8d91 +https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.3.2-py310hcc13569_0.conda#1ad84020b1ab816d7ab3f3d0859faf40 +https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.4.14-cpu_py310h67d73b5_1.conda#392c325994aa96727edd0069a0620e31 +https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.3.0-pyhc1e730c_2.conda#7a94ac68b892daa9f17ae8a52b31ed81 +https://conda.anaconda.org/conda-forge/noarch/opt-einsum-3.3.0-hd8ed1ab_2.conda#ab262acd95cb73f3ed9426cc4204ac3a +https://conda.anaconda.org/conda-forge/noarch/jax-0.4.20-pyhd8ed1ab_0.conda#5abbd950bd427bc9d929e35ecbf814d1 +https://conda.anaconda.org/conda-forge/noarch/ply-3.11-py_1.tar.bz2#7205635cd71531943440fbfe3b6b5727 +https://conda.anaconda.org/conda-forge/noarch/jsonpath-ng-1.6.1-pyhd8ed1ab_0.conda#a698a41f5b52fe96049fd8c926ac3086 +https://conda.anaconda.org/conda-forge/linux-64/orjson-3.9.15-py310hcb5633a_0.conda#da1b180ccf1dce5d87d145ad2fc14e5a +https://conda.anaconda.org/conda-forge/noarch/langsmith-0.1.31-pyhd8ed1ab_0.conda#031cb2cb0387f028379c1a58217fe929 +https://conda.anaconda.org/conda-forge/noarch/langchain-core-0.1.33-pyhd8ed1ab_0.conda#a0454a06df0bf2de641c21ac1e455530 +https://conda.anaconda.org/conda-forge/noarch/langchain-community-0.0.29-pyhd8ed1ab_0.conda#7dfaffe1c95ee7718624be16cb57dfbd +https://conda.anaconda.org/conda-forge/noarch/langchain-0.1.9-pyhd8ed1ab_0.conda#2ad37682610ac2643b46e4cc0215f410 +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-magics-2.11.0-pyhd8ed1ab_0.conda#aee09f3966655f81d05fcfb5bae3612d +https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.5.2-py310h47bb294_0.conda#a83ae186d0a4b78c98b32781d7c15d48 +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-2.11.0-pyhd8ed1ab_0.conda#e8ab7975630aff4624d3ed1fa32ac552 +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-pyh5bfe37b_1.conda#11ca195fc8a16770661a387bcce27c36 +https://conda.anaconda.org/conda-forge/noarch/simpervisor-1.0.0-pyhd8ed1ab_0.conda#1f6df17b16d6295a484d59e844fef6ee +https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.1.2-pyhd8ed1ab_0.conda#3671520b52215a5a084de08003e6d8cd +https://conda.anaconda.org/conda-forge/noarch/nbdime-4.0.1-pyhd8ed1ab_0.conda#dd76d44a144499f8ff3254fd20cdb7a2 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-git-0.50.0-pyhd8ed1ab_1.conda#5020cacc18e3d5f62a81513f26ac2cac +https://conda.anaconda.org/conda-forge/noarch/keras-2.12.0-pyhd8ed1ab_0.conda#e6e18b33e8d62200099f2eed98a263b6 +https://conda.anaconda.org/conda-forge/noarch/keras-preprocessing-1.1.2-pyhd8ed1ab_0.tar.bz2#a79b00989a0d89791021902f37fe2f9e +https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2#a8832b479f93521a9e7b5b743803be51 +https://conda.anaconda.org/conda-forge/linux-64/libcap-2.69-h0f662aa_0.conda#25cb5999faa414e5ccb2c1388f62d3d5 +https://conda.anaconda.org/conda-forge/linux-64/libllvm15-15.0.7-hb3ce162_4.conda#8a35df3cbc0c8b12cc8af9473ae75eef +https://conda.anaconda.org/conda-forge/linux-64/libclang13-15.0.7-default_h5d6823c_5.conda#2d694a9ffdcc30e89dea34a8dcdab6ae +https://conda.anaconda.org/conda-forge/linux-64/libclang-15.0.7-default_h127d8a8_5.conda#09b94dd3a7e304df5b83176239347920 +https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda#d4529f4dff3057982a7617c7ac58fde3 +https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda#ee48bf17cc83a00f59ca1494d5646869 +https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.48-h71f35ed_0.conda#4d18d86916705d352d5f4adfb7f0edd3 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.10.3-hd590300_0.conda#32d16ad533c59bb0a3c5ffaf16110829 +https://conda.anaconda.org/conda-forge/linux-64/libpq-15.6-h088ca5b_0.conda#99dca02fb74a8dfa3653c6673674f90c +https://conda.anaconda.org/conda-forge/linux-64/libsecret-0.18.8-h329b89f_2.tar.bz2#9d6698e3c9585a75156d86f7ef229093 +https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.4-h59595ed_0.conda#3f1017b4141e943d9bc8739237f749e8 +https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda#ef1910918dd895516a769ed36b5b3a4e +https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-255-h3516f8a_1.conda#3366af27f0b593544a6cd453c7932ac5 +https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.41-hd590300_0.conda#81f740407b45e3f9047b3174fa94eb9e +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.7.0-h662e7e4_0.conda#b32c0da42b1f24a98577bb3d7fc0b995 +https://conda.anaconda.org/conda-forge/linux-64/sip-6.7.12-py310hc6cd4ac_0.conda#68d5bfccaba2d89a7812098dd3966d9b +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.12.2-py310hc6cd4ac_5.conda#ef5333594a958b25912002886b82b253 +https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.33-hf1915f5_6.conda#80bf3b277c120dd294b51d404b931a75 +https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.33-hca2cd23_6.conda#e87530d1b12dd7f4e0f856dc07358d60 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda#da0ec11a6454ae19bff5b02ed881a2b1 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.98-h1d7d5a4_0.conda#54b56c2fdf973656b748e0378900ec13 +https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-16.1-hb77b528_5.conda#ac902ff3c1c6d750dd0dfc93a974ab74 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.0-hd590300_1.conda#9bfac7ccd94d54fd21a0501296d60424 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-h8ee46fc_1.conda#9d7bcddf49cbf727730af10e71022c73 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.0-h8ee46fc_1.conda#632413adcd8bc16b515cab87a2932913 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.9-hd590300_1.conda#e995b155d938b6779da6ace6c6b13816 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.1-h8ee46fc_1.conda#90108a432fb5c6150ccfee3f03388656 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xf86vidmodeproto-2.3.1-h7f98852_1002.tar.bz2#3ceea9668625c18f19530de98b15d5b0 +https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.8-hc47bfe8_16.conda#a8dd2dfcd570e3965c73be6c5e03e74f +https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.9-py310h04931ad_5.conda#f4fe7a6e3d7c78c9de048ea9dda21690 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.8.3-py310hff52083_0.conda#e91d183a307d7bd667003291f690cbb0 +https://conda.anaconda.org/conda-forge/linux-64/nodejs-18.19.0-hb753e55_0.conda#0b4a67051e3b3812818ccf2f4ee2fd4e +https://conda.anaconda.org/conda-forge/noarch/papermill-2.5.0-pyhd8ed1ab_0.conda#e6e69b90afd3d0597da8f1f74cc4bd58 +https://conda.anaconda.org/conda-forge/noarch/pox-0.3.4-pyhd8ed1ab_0.conda#d5502ff0ec33b87f7ab7bc373d0e42ff +https://conda.anaconda.org/conda-forge/noarch/ppft-1.7.6.8-pyhd8ed1ab_0.conda#a104e8b98901dc1bc0b916f7e18b5e39 +https://conda.anaconda.org/conda-forge/noarch/pathos-0.3.2-pyhd8ed1ab_1.conda#22ed208c1b54e7c2ec6616665fba6b0f +https://conda.anaconda.org/conda-forge/noarch/pure-sasl-0.6.2-pyhd8ed1ab_0.tar.bz2#ac695eecf21ab48093bc33fd60b4102d +https://conda.anaconda.org/conda-forge/linux-64/py-xgboost-cpu-1.7.6-py310h78d450f_6.conda#6c53cd648ba083e1bc7ea5dac8ec1e2c +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_0.conda#7e23a61a7fbaedfef6eb0e1ac775c8e5 +https://conda.anaconda.org/conda-forge/linux-64/thrift-0.20.0-py310hc6cd4ac_0.conda#8c6970b9c27073d82bcf757ac644e6cd +https://conda.anaconda.org/conda-forge/noarch/thrift_sasl-0.4.3-pyhd8ed1ab_2.tar.bz2#0340a97c4990a5bb5ecf1a27fef9f9c3 +https://conda.anaconda.org/conda-forge/noarch/pyhive-0.7.0-pyhd8ed1ab_0.conda#a39884e69ebf0c6454a1f8bac6f8361b +https://conda.anaconda.org/conda-forge/linux-64/pykrb5-0.5.1-py310h98feede_1.conda#0329fda0ebbccee7b3e9dbf4a377d0ce +https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.4-pyha770c72_0.conda#37c47ea93ef00dd80d880fc4ba21256a +https://conda.anaconda.org/conda-forge/noarch/pylint-3.0.4-pyhd8ed1ab_0.conda#d536ee47166d8984c6acd8114ac26cf1 +https://conda.anaconda.org/conda-forge/linux-64/pyspnego-0.9.1-py310h2372a71_2.conda#0a99339b277686c7d824abf9de396901 +https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-24.3.7-pyh59ac667_0.conda#24c1a37849fcd4c74923a38b029b208f +https://conda.anaconda.org/conda-forge/linux-64/python-gssapi-1.8.3-py310h98feede_0.conda#a5ea028f63386c53a2b8ff4d09065259 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-jsonrpc-1.1.2-pyhd8ed1ab_0.conda#ff30dbdb341a54947c4fa183900380b7 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-base-1.10.1-pyhd8ed1ab_0.conda#1371f9394b20fd1fe7419a2aa9b38888 +https://conda.anaconda.org/conda-forge/noarch/pytoolconfig-1.2.5-pyhd8ed1ab_0.conda#2d6bdf5a69cfcd1fcc7f2b900cb4082f +https://conda.anaconda.org/conda-forge/noarch/rope-1.13.0-pyhd8ed1ab_0.conda#dffa002fbd3d86924b7992c718efa7bc +https://conda.anaconda.org/conda-forge/noarch/whatthepatch-1.0.5-pyhd8ed1ab_0.conda#e62ea65e1979c18c4c9034567e7105c5 +https://conda.anaconda.org/conda-forge/noarch/yapf-0.40.1-pyhd8ed1ab_0.conda#f269942e802d5e148632143d4c37acc9 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-1.10.1-pyhd8ed1ab_0.conda#15b849d7f03b7580a88a3f887db5ad40 +https://conda.anaconda.org/conda-forge/noarch/requests-kerberos-0.14.0-pyh707e725_1.conda#411293bff0dc86f9f9bc0c0e1f227623 +https://conda.anaconda.org/conda-forge/linux-64/ripgrep-14.1.0-he8a937b_0.conda#5a476f7033a8a1b9175626b5ebf86d1d +https://conda.anaconda.org/conda-forge/linux-64/sagemaker-code-editor-1.0.0-hcb28a07_0.conda#f53005657267d6b1233c2852fcb84707 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-headless-execution-driver-0.0.12-pyhd8ed1ab_0.conda#fe8919032eb413e76a7802f013a536ee +https://conda.anaconda.org/conda-forge/linux-64/y-py-0.6.2-py310hcb5633a_0.conda#892e912e08ba834aa77ff25f983a4e9e +https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.12.4-pyhd8ed1ab_0.conda#7f558701e9a089188cc81d620282ef28 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-common-0.1.14-pyhd8ed1ab_0.conda#27319d665d06aa5c25b6a07d04a4256f +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-emr-extension-0.1.9-pyhd8ed1ab_0.conda#589f97989a6db8b2f21a53881fdd1d97 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-0.2.0-pyhd8ed1ab_0.conda#9331340b5a844f5ac2c74eda353aa23e +https://conda.anaconda.org/conda-forge/noarch/sagemaker-kernel-wrapper-0.0.2-pyhd8ed1ab_0.conda#99480997ca2429b75169c896cc988cdb +https://conda.anaconda.org/conda-forge/noarch/schema-0.7.5-pyhd8ed1ab_1.conda#750d2ce4311d1502b51ad814407f043d +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.212.0-pyhd8ed1ab_0.conda#eb07d50e30f7b423929f9081118d3979 +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.0.21-pyhd8ed1ab_0.conda#fa0e9b0ca6c3e96d350711b6dbddaeb6 +https://conda.anaconda.org/conda-forge/linux-64/sasl-0.3.1-py310hd8f1fbe_2.tar.bz2#9b15d1759c99ad57ae43080cfca56d73 +https://conda.anaconda.org/conda-forge/linux-64/supervisor-4.2.5-py310hff52083_2.conda#7fe7fa4d80a99dc44ba15ef3e82707af +https://conda.anaconda.org/conda-forge/noarch/termcolor-2.4.0-pyhd8ed1ab_0.conda#a5033708ad9283907c3b1bc1f90d0d0d +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-base-2.12.1-cpu_py310h91b7bb3_1.conda#3133c1f0d7fba203c6af92843b7a6b8a +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-estimator-2.12.1-cpu_py310haacee6a_1.conda#23ed9579748a885ae9e52ae809ccae6a +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-2.12.1-cpu_py310hd1aba9c_1.conda#79f37d0e1a7badce42c40f869ac4ce3a +https://conda.anaconda.org/conda-forge/linux-64/uvicorn-0.28.1-py310hff52083_0.conda#2708791931977a77fa35bc601a571375 diff --git a/build_artifacts/v1/v1.6/v1.6.2/dirs/etc/code-editor/code_editor_machine_settings.json b/build_artifacts/v1/v1.6/v1.6.2/dirs/etc/code-editor/code_editor_machine_settings.json new file mode 100644 index 00000000..a391da92 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/dirs/etc/code-editor/code_editor_machine_settings.json @@ -0,0 +1,4 @@ +{ + "python.terminal.activateEnvironment": false, + "python.defaultInterpreterPath": "/opt/conda/bin/python" +} \ No newline at end of file diff --git a/build_artifacts/v1/v1.6/v1.6.2/dirs/etc/code-editor/extensions.txt b/build_artifacts/v1/v1.6/v1.6.2/dirs/etc/code-editor/extensions.txt new file mode 100644 index 00000000..ee18444b --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/dirs/etc/code-editor/extensions.txt @@ -0,0 +1,3 @@ +https://open-vsx.org/api/ms-toolsai/jupyter/2023.9.100/file/ms-toolsai.jupyter-2023.9.100.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/1.99.0/file/amazonwebservices.aws-toolkit-vscode-1.99.0.vsix \ No newline at end of file diff --git a/build_artifacts/v1/v1.6/v1.6.2/dirs/etc/conda/.condarc b/build_artifacts/v1/v1.6/v1.6.2/dirs/etc/conda/.condarc new file mode 100644 index 00000000..c3616df5 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/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/v1/v1.6/v1.6.2/dirs/etc/jupyter/jupyter_server_config.py b/build_artifacts/v1/v1.6/v1.6.2/dirs/etc/jupyter/jupyter_server_config.py new file mode 100644 index 00000000..e05997f2 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/dirs/etc/jupyter/jupyter_server_config.py @@ -0,0 +1,16 @@ +# 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 diff --git a/build_artifacts/v1/v1.6/v1.6.2/dirs/etc/supervisor/conf.d/supervisord-code-editor.conf b/build_artifacts/v1/v1.6/v1.6.2/dirs/etc/supervisor/conf.d/supervisord-code-editor.conf new file mode 100644 index 00000000..cac5669b --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/dirs/etc/supervisor/conf.d/supervisord-code-editor.conf @@ -0,0 +1,11 @@ +[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 +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/v1/v1.6/v1.6.2/dirs/etc/supervisor/conf.d/supervisord-common.conf b/build_artifacts/v1/v1.6/v1.6.2/dirs/etc/supervisor/conf.d/supervisord-common.conf new file mode 100644 index 00000000..27820d4c --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/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/v1/v1.6/v1.6.2/dirs/etc/supervisor/conf.d/supervisord-jupyter-lab.conf b/build_artifacts/v1/v1.6/v1.6.2/dirs/etc/supervisor/conf.d/supervisord-jupyter-lab.conf new file mode 100644 index 00000000..5694ac11 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/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/v1/v1.6/v1.6.2/dirs/etc/supervisor/conf.d/supervisord.conf b/build_artifacts/v1/v1.6/v1.6.2/dirs/etc/supervisor/conf.d/supervisord.conf new file mode 100644 index 00000000..686f4a5c --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/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/v1/v1.6/v1.6.2/dirs/usr/local/bin/entrypoint-code-editor b/build_artifacts/v1/v1.6/v1.6.2/dirs/usr/local/bin/entrypoint-code-editor new file mode 100755 index 00000000..677c9803 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/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 \ No newline at end of file diff --git a/build_artifacts/v1/v1.6/v1.6.2/dirs/usr/local/bin/entrypoint-jupyter-server b/build_artifacts/v1/v1.6/v1.6.2/dirs/usr/local/bin/entrypoint-jupyter-server new file mode 100755 index 00000000..ceda89d0 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/dirs/usr/local/bin/entrypoint-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)" + +# 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:]') + +# 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/v1/v1.6/v1.6.2/dirs/usr/local/bin/restart-jupyter-server b/build_artifacts/v1/v1.6/v1.6.2/dirs/usr/local/bin/restart-jupyter-server new file mode 100755 index 00000000..6f2af98d --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/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/v1/v1.6/v1.6.2/dirs/usr/local/bin/start-code-editor b/build_artifacts/v1/v1.6/v1.6.2/dirs/usr/local/bin/start-code-editor new file mode 100755 index 00000000..bc97106c --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/dirs/usr/local/bin/start-code-editor @@ -0,0 +1,25 @@ +#!/bin/bash +set -e + +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. 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 /opt/amazon/sagemaker/sagemaker-code-editor-server-data \ + --extensions-dir /opt/amazon/sagemaker/sagemaker-code-editor-server-data/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/v1/v1.6/v1.6.2/dirs/usr/local/bin/start-jupyter-server b/build_artifacts/v1/v1.6/v1.6.2/dirs/usr/local/bin/start-jupyter-server new file mode 100755 index 00000000..377a86d4 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/dirs/usr/local/bin/start-jupyter-server @@ -0,0 +1,35 @@ +#!/bin/bash +set -e + +eval "$(micromamba shell hook --shell=bash)" + +# Activate conda environment 'base', which is the default environment for Cosmos +micromamba activate base + +# Start Jupyter server in rtc mode for shared spaces +if [ -n "$SAGEMAKER_APP_TYPE_LOWERCASE" ] && [ "$SAGEMAKER_SPACE_TYPE_LOWERCASE" == "shared" ]; then + # 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/v1/v1.6/v1.6.2/gpu.arg_based_env.in b/build_artifacts/v1/v1.6/v1.6.2/gpu.arg_based_env.in new file mode 100644 index 00000000..51cba0a9 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/gpu.arg_based_env.in @@ -0,0 +1 @@ +conda-forge::cudatoolkit=$CUDA_MAJOR_MINOR_VERSION diff --git a/build_artifacts/v1/v1.6/v1.6.2/gpu.env.in b/build_artifacts/v1/v1.6/v1.6.2/gpu.env.in new file mode 100644 index 00000000..892cea33 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/gpu.env.in @@ -0,0 +1,51 @@ +# This file is auto-generated. +conda-forge::sagemaker-code-editor[version='>=1.0.0,<1.1.0'] +conda-forge::amazon_sagemaker_sql_editor[version='>=0.1.3,<0.2.0'] +conda-forge::amazon-sagemaker-sql-magic[version='>=0.1.0,<0.2.0'] +conda-forge::langchain[version='>=0.1.9,<0.2.0'] +conda-forge::fastapi[version='>=0.103.2,<0.104.0'] +conda-forge::uvicorn[version='>=0.28.1,<0.29.0'] +conda-forge::pytorch-gpu[version='>=2.0.0,<2.1.0'] +conda-forge::tensorflow[version='>=2.12.1,<2.13.0'] +conda-forge::python[version='>=3.10.13,<3.11.0'] +conda-forge::pip[version='>=23.3.2,<23.4.0'] +conda-forge::torchvision[version='>=0.15.2,<0.16.0'] +conda-forge::numpy[version='>=1.26.4,<1.27.0'] +conda-forge::pandas[version='>=2.1.4,<2.2.0'] +conda-forge::scikit-learn[version='>=1.4.1.post1,<1.5.0'] +conda-forge::jinja2[version='>=3.1.3,<3.2.0'] +conda-forge::matplotlib[version='>=3.8.3,<3.9.0'] +conda-forge::sagemaker-headless-execution-driver[version='>=0.0.12,<0.1.0'] +conda-forge::ipython[version='>=8.22.2,<8.23.0'] +conda-forge::scipy[version='>=1.11.4,<1.12.0'] +conda-forge::keras[version='>=2.12.0,<2.13.0'] +conda-forge::py-xgboost-gpu[version='>=1.7.6,<1.8.0'] +conda-forge::jupyterlab[version='>=4.1.5,<4.2.0'] +conda-forge::ipywidgets[version='>=8.1.2,<8.2.0'] +conda-forge::conda[version='>=23.11.0,<23.12.0'] +conda-forge::boto3[version='>=1.34.51,<1.35.0'] +conda-forge::sagemaker-python-sdk[version='>=2.212.0,<2.213.0'] +conda-forge::supervisor[version='>=4.2.5,<4.3.0'] +conda-forge::autogluon[version='>=0.8.2,<0.9.0'] +conda-forge::aws-glue-sessions[version='>=1.0.4,<1.1.0'] +conda-forge::sagemaker-kernel-wrapper[version='>=0.0.2,<0.1.0'] +conda-forge::jupyter-ai[version='>=2.11.0,<2.12.0'] +conda-forge::jupyter-scheduler[version='>=2.5.1,<2.6.0'] +conda-forge::nodejs[version='>=18.19.0,<18.20.0'] +conda-forge::jupyter-lsp[version='>=2.2.4,<2.3.0'] +conda-forge::jupyterlab-lsp[version='>=5.0.3,<5.1.0'] +conda-forge::python-lsp-server[version='>=1.10.1,<1.11.0'] +conda-forge::notebook[version='>=7.1.2,<7.2.0'] +conda-forge::altair[version='>=5.2.0,<5.3.0'] +conda-forge::sagemaker-studio-analytics-extension[version='>=0.0.21,<0.1.0'] +conda-forge::jupyter-dash[version='>=0.4.2,<0.5.0'] +conda-forge::sagemaker-jupyterlab-extension[version='>=0.2.0,<0.3.0'] +conda-forge::sagemaker-jupyterlab-emr-extension[version='>=0.1.9,<0.2.0'] +conda-forge::amazon-sagemaker-jupyter-scheduler[version='>=3.0.7,<3.1.0'] +conda-forge::jupyter-server-proxy[version='>=4.1.2,<4.2.0'] +conda-forge::amazon-codewhisperer-jupyterlab-ext[version='>=2.0.1,<2.1.0'] +conda-forge::jupyterlab-git[version='>=0.50.0,<0.51.0'] +conda-forge::sasl[version='>=0.3.1,<0.4.0'] +conda-forge::thrift_sasl[version='>=0.4.3,<0.5.0'] +conda-forge::pyhive[version='>=0.7.0,<0.8.0'] +conda-forge::python-gssapi[version='>=1.8.3,<1.9.0'] diff --git a/build_artifacts/v1/v1.6/v1.6.2/gpu.env.out b/build_artifacts/v1/v1.6/v1.6.2/gpu.env.out new file mode 100644 index 00000000..da8aa1fe --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/gpu.env.out @@ -0,0 +1,670 @@ +# 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/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_5.conda#d4ff227c46917d3b4565302a2bbb276b +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda#f36c115f1ee199da648e0597ec2047ad +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_5.conda#f6f6600d18a4047b54f803cf708b868a +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.5-hfc55251_0.conda#04b88013080254850d6c01ed54810589 +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-18.1.2-h4dfa4b3_0.conda#0118c8a03e3dbbb6b348ef71e94ac7af +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#562b26ba2e19059551a811e72ab7f793 +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/bzip2-1.0.8-hd590300_5.conda#69b8b6202a07720f448be700e300ccf4 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda#7aca3059a1729aa76c597603f10b0dd3 +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3 +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda#30fd6e37fe21f86f4bd26d6ee73eeec7 +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.45.2-h2797004_0.conda#866983a220e27a80cb75e85cb30466a1 +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.4.20240210-h59595ed_0.conda#97da8860a0da5413c7c98a3b3838a645 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.2.2-hbcca054_0.conda#2f4327a1cbe7f022401b236e915a5fef +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.2.1-hd590300_1.conda#9d731343cff6ee2e5a25c4a091bf8e2a +https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4 +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-2024a-h0c530f3_0.conda#161081fc7cec0bfda0d86d7cb595f8d8 +https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0 +https://conda.anaconda.org/conda-forge/linux-64/python-3.10.14-hd12c33a_0_cpython.conda#2b4ba962994e8bd4be9ff5b64b75aff2 +https://conda.anaconda.org/conda-forge/noarch/absl-py-2.1.0-pyhd8ed1ab_0.conda#035d1d58677c13ec93122d9eb6b8803b +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_5.conda#7a6bd7a12a4bd359e2afe6c0fa1acace +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_5.conda#e73e9cfd1191783392131e6238bdb3e9 +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.25-pthreads_h413a1c8_0.conda#d172b34a443b95f86089e8229ddc9a17 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-20_linux64_openblas.conda#2b7bb4f7562c8cf334fc2e20c2d28abc +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-20_linux64_openblas.conda#36d486d72ab64ffea932329a1d3729a3 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-20_linux64_openblas.conda#6fabc51f5e647d09cc010c40061557e0 +https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.10-4_cp310.conda#26322ec5d7712c3ded99dd656142b8ce +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py310hb13e2d6_0.conda#6593de64c935768b6bad3e19b3e978be +https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda#79002079284aa895f883c6b7f3f88fd6 +https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.8-py310h2372a71_0.conda#bd19b3096442ea342c4a5208379660b1 +https://conda.anaconda.org/conda-forge/linux-64/cudatoolkit-11.8.0-h4ba93d1_13.conda#eb43f5f1f16e2fad2eba22219c3e499b +https://conda.anaconda.org/conda-forge/noarch/cuda-version-11.8-h70ddcb2_3.conda#670f0e1593b8c1d84f57ad5fe5256799 +https://conda.anaconda.org/conda-forge/linux-64/cudnn-8.9.7.29-hbc23b4c_3.conda#4a2d5fab2871d95544de4e1752948d0f +https://conda.anaconda.org/conda-forge/noarch/filelock-3.13.3-pyhd8ed1ab_0.conda#ff15f46b0d34308f4d40c1c51df07592 +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py310h2372a71_0.conda#f6703fa0214a00bf49d1bef6dc7672d0 +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.3-pyhd8ed1ab_0.conda#e7d8df6509ba635247ff9aea31134262 +https://conda.anaconda.org/conda-forge/linux-64/libmagma-2.7.1-hc72dce7_6.conda#afd44491bd564d8dd6cda5d9aecaa452 +https://conda.anaconda.org/conda-forge/linux-64/libmagma_sparse-2.7.1-h8354cda_6.conda#5e835e8d48283880ea6ef11920c7fb14 +https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-3.21.12-hfc55251_2.conda#e3a7d4ba09b8dc939b98fef55f539220 +https://conda.anaconda.org/conda-forge/linux-64/magma-2.7.1-ha770c72_6.conda#f8ffd335f311e9749428727752e815bb +https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda#cc47e1facc155f91abd89b11e48e72ff +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda#d66573916ffcf376178462f1b61c941e +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.6-h232c23b_1.conda#6853448e9ca1cfd5f15382afd2a6d123 +https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.9.3-default_h554bfaf_1009.conda#f36ddc11ca46958197a45effdd286e45 +https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.11.0-h00ab1b0_1.conda#4531d2927578e7e254ff3bcf6457518c +https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.2.1-h84fe81f_16997.conda#a7ce56d5757f5b57e7daabe703ade5bb +https://conda.anaconda.org/conda-forge/linux-64/nccl-2.20.5.1-h6103f9b_0.conda#bedb0b33c5e3e6fbd4dce4f6f07fea72 +https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda#425fce3b531bed6ec3c74fab3e5f0a1c +https://conda.anaconda.org/conda-forge/linux-64/sleef-3.5.1-h9b69904_2.tar.bz2#6e016cf4c525d04a7bd038cee53ad3fd +https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-h59595ed_1.conda#e358c7c5f6824c272b5034b3816438a7 +https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h9458935_0.conda#4c28f3210b30250037a4a627eeee9e0f +https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-hfe3b2da_0.conda#289c71e83dc0daa7d4c81f04180778ca +https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.2-py310h3ec546c_1.tar.bz2#73f6fa50c32ddd985cf5fba7b890a75c +https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_0.conda#dbf6e2d89137da32fa6670f3bffc024e +https://conda.anaconda.org/conda-forge/noarch/sympy-1.12-pypyh9d50eac_103.conda#2f7d6347d7acf6edf1ac7f2189f44c8f +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.5.0-pyha770c72_0.conda#43e7d9e50261fb11deb76e17d8431aac +https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.0.0-cuda112py310he33e0d6_200.conda#87729716665c9fa180d7e42fde5c53ab +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.1-py310h2372a71_1.conda#bb010e368de4940771368bc3dc4c63e7 +https://conda.anaconda.org/conda-forge/noarch/accelerate-0.21.0-pyhd8ed1ab_0.conda#172fa1bba08cd6b431a1739090ab0ffc +https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.1-py310h2372a71_0.conda#f20cd4d9c1f4a8377d0818c819918bbb +https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2#d1e1eb7e21a9e2c74279d87dafb68156 +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.5.0-hd8ed1ab_0.conda#b3c594fde1a80a1fc3eb9cc4a5dfe392 +https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda#3ce482ec3066e6d809dbbb1d1679f215 +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.0.5-py310h2372a71_0.conda#d4c91d19e4f2f18b64753ac660edad79 +https://conda.anaconda.org/conda-forge/noarch/idna-3.6-pyhd8ed1ab_0.conda#1a76f09108576397c41c0b0c5bd84134 +https://conda.anaconda.org/conda-forge/linux-64/yarl-1.9.4-py310h2372a71_0.conda#4ad35c8f6a64a6ab708780dad603aef4 +https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.9.3-py310h2372a71_1.conda#dd21c88dfec3253cb9888c0e93fa5cd1 +https://conda.anaconda.org/conda-forge/noarch/aioitertools-0.11.0-pyhd8ed1ab_0.tar.bz2#59c40397276a286241c65faec5e1be3c +https://conda.anaconda.org/conda-forge/noarch/jmespath-1.0.1-pyhd8ed1ab_0.tar.bz2#2cfa3e1cf3fb51bb9b17acc5b5e9ea11 +https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda#2cf4264fffb9e6eff6031c5b6884d61c +https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.0.9-py310hd8f1fbe_9.conda#e2047ad2af52c01845f58b580c6cbd5c +https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025 +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.18-pyhd8ed1ab_0.conda#bf61cfd2a7f212efba378167a07d4a6a +https://conda.anaconda.org/conda-forge/noarch/botocore-1.34.51-pyge310_1234567_0.conda#f8980578a765dd28417953dddfefe5bc +https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py310h2372a71_0.conda#d9dc9c45bdc2b38403e6b388581e92f0 +https://conda.anaconda.org/conda-forge/noarch/aiobotocore-2.12.1-pyhd8ed1ab_0.conda#045560daef58c75a759c2638fbdb5c6a +https://conda.anaconda.org/conda-forge/noarch/aiosqlite-0.19.0-pyhd8ed1ab_0.conda#c60a47f9f29057417165a8af579396a8 +https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.11-hd590300_1.conda#0bb492cca54017ea314b809b1ee3a176 +https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda#2e4d6bc0b14e10f895fc6791a7d9b26a +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.10.0-pyha770c72_0.conda#ae2ad334f34040e147cc5824b450463b +https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda#c5d3907ad8bd7bf557521a1833cf7e6d +https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda#405678b942f2481cecdb3e010f4925d9 +https://conda.anaconda.org/conda-forge/linux-64/pyrsistent-0.20.0-py310h2372a71_0.conda#e7f8dc8c62e136573c84116a5e743aed +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.17.3-pyhd8ed1ab_0.conda#723268a468177cd44568eb8f794e0d80 +https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda#98206ea9954216ee7540f0c773f2104d +https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3-pyhd8ed1ab_0.conda#d3076b483092a435832603243567bc31 +https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.4-py310hcc13569_0.conda#410f7e83992a591e492c25049a859254 +https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.1-pyhd8ed1ab_0.conda#2fcb582444635e2c402e8569bb94e039 +https://conda.anaconda.org/conda-forge/noarch/altair-5.2.0-pyhd8ed1ab_1.conda#1aebb1cef46d9cb76e0d38eed822348a +https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.10.1-pyhd8ed1ab_0.conda#a41cafc1fb653ce0e48b9310226e90fd +https://conda.anaconda.org/conda-forge/noarch/boto3-1.34.51-pyhd8ed1ab_0.conda#bd19311f73611626b31afc608af438cd +https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda#3d081de3a6ea9f894bbb585e8e3a4dcb +https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda#8d652ea2ee8eaee02ed8dc820bc794aa +https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda#490730480d76cf9c8f8f2849719c6e2b +https://conda.anaconda.org/conda-forge/noarch/anyio-3.7.1-pyhd8ed1ab_0.conda#7b517e7a6f0790337906c055aa97ca49 +https://conda.anaconda.org/conda-forge/noarch/certifi-2024.2.2-pyhd8ed1ab_0.conda#0876280e409658fc6f9e75d035960333 +https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2#b21ed0883505ba1910994f1df031a428 +https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2#914d6646c4dbb1fd3ff539830a12fd71 +https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2#9f765cbfab6870c8435b9eefecd7a1f4 +https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2#b748fbf7060927a6e82df7cb5ee8f097 +https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.4-pyhd8ed1ab_0.conda#20f047662cf4fa8b97836111df87dbb4 +https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.0-pyhd8ed1ab_0.conda#9f359af5a886fd6ca6b2b6ea02e58332 +https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.10.0-hd8ed1ab_0.conda#c063ddbb9908499fd4f20b31dc67065a +https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.2-pyhd8ed1ab_0.conda#af5fa2d2186003472e766a23c46cae04 +https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda#948d84721b578d426294e17a02e24cbb +https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.1-py310hc6cd4ac_0.conda#1ea80564b80390fa25da16e4211eb801 +https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2#43afe5ab04e35e17ba28649471dd7364 +https://conda.anaconda.org/conda-forge/noarch/parso-0.8.3-pyhd8ed1ab_0.tar.bz2#17a565a0c3899244e938cdf417e7b094 +https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.1-pyhd8ed1ab_0.conda#81a3be0b2023e1ea8555781f0ad904a2 +https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.6-pyhd8ed1ab_0.tar.bz2#b21613793fcc81d944c76c9f2864a7de +https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263 +https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda#629f3203c99b32e0988910c93e77f3b6 +https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2#415f0ebb6198cc2801c73438a9fb5761 +https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda#68f0738df502a14213624b288c60c9ad +https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.42-pyha770c72_0.conda#0bf64bf10eee21f46ac83c161917fa86 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.17.2-pyhd8ed1ab_0.conda#140a7f159396547e9799aa98f9f0742e +https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda#5f25798dcefd8252ce5f9dc494d5f571 +https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda#e16be50e378d8a4533b989035b196ab8 +https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2#6784285c7e55cb7212efabc79e4c2883 +https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda#e7df0fdd404616638df5ece6e69ba7af +https://conda.anaconda.org/conda-forge/noarch/ipython-8.22.2-pyh707e725_0.conda#f0abe827c8a7c6d91bccdf90cb1fbee3 +https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.2.0-pyhd8ed1ab_0.conda#a0bc3eec34b0fab84be6b2da94e98e20 +https://conda.anaconda.org/conda-forge/linux-64/jupyter_core-5.7.2-py310hff52083_0.conda#cb92c27600d5716fd526a206aa43342c +https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2#c3788462a6fbddafdb413a9f9053e58d +https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h59595ed_1.conda#7fc9d3288d2420bb3637647621018000 +https://conda.anaconda.org/conda-forge/linux-64/pyzmq-25.1.2-py310h795f18f_0.conda#fa09f98f3acfd3f5de30bd2d27d5cb7f +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4-py310h2372a71_0.conda#48f39c24349d9ae5c8e8873c42fb6170 +https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.1-pyhd8ed1ab_0.conda#c03972cfce69ad913d520c652e5ed908 +https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda#6598c056f64dc8800d40add25e4e2c34 +https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.3-pyhd33586a_0.conda#e0deff12c601ce5cb7476f93718f3168 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py310h2fee648_0.conda#45846a970e71ac98fd327da5d40a0a2c +https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py310h2372a71_4.conda#68ee85860502d53c8cbfa0e4cef0f6cb +https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda#3afef1f55a1366b4d3b6a0d92e2235e4 +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_0.tar.bz2#642d35437078749ef23a5dca2c9bb1f3 +https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20240316-pyhd8ed1ab_0.conda#7831efa91d57475373ee52fb92e8d137 +https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda#b77d8c2313158e6e461ca0efb1c2c508 +https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2#4cb68948e0b8429534380243d063a27a +https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-2.4-py310hff52083_3.conda#08ec1463dbc5c806a32fc431874032ca +https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2#fed45fc5ea0813240707998abe49f520 +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_0.conda#0944dc65cb4a9b5b68522c3bb585d41c +https://conda.anaconda.org/conda-forge/noarch/webcolors-1.13-pyhd8ed1ab_0.conda#166212fe82dad8735550030488a01d03 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.17.3-pyhd8ed1ab_0.conda#7a709748e93f0b2c33d6b5b676b6d9d0 +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.6.3-pyhd8ed1ab_1.conda#2ac0d00a0fb3f1a4c81c460ba56bb23b +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_0.conda#219b3833aa8ed91d47d1be6ca03f30be +https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda#3f144b2c34f8cb5a9abd9ed23a39c561 +https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda#332493000404d8411859539a5a630865 +https://conda.anaconda.org/conda-forge/noarch/setuptools-69.2.0-pyhd8ed1ab_0.conda#da214ecd521a720a9d521c68047682dc +https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda#daf5160ff9cde3a468556965329085b9 +https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda#0ed9d7c0e9afa7c025807a9a8136ea3e +https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 +https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda#afcd1b53bcac8844540358e33f33d28f +https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda#5cbee699846772cc939bef23a0d524ed +https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.19.1-pyhd8ed1ab_0.conda#4d3ceee3af4b0f9a1f48f57176bf8625 +https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.3-pyhd8ed1ab_0.conda#ca3d437c0ef2e87f63d085822c74c49a +https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda#15b51397e0fe8ea7d7da60d83eb76ebc +https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9 +https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.2.1-pyhd8ed1ab_0.tar.bz2#7234c9eefff659501cd2fe0d2ede4d48 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.3-pyhd8ed1ab_0.conda#0cab42b4917e71df9dc2224b9940ef19 +https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2#eb67e3cace64c66233e2d35949e20f92 +https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda#24fba5a9d161ad8103d4e84c0e1a3ed4 +https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.20.0-pyhd8ed1ab_0.conda#9a19b94034dd3abb2b348c8b93388035 +https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.2-pyh41d4057_0.conda#ada5a17adcd10be4fc7e37e4166ba0e2 +https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.7.0-pyhd8ed1ab_0.conda#50ad31e07d706aae88b14a4ac9c73f23 +https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.10.0-pyhd8ed1ab_0.conda#016d56f5d81b9364d1da5f4895a2a9f8 +https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.4-pyhd8ed1ab_0.conda#91f93e1ebf6535be518715432d89fd92 +https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda#9669586875baeced8fc30c0826c3270e +https://conda.anaconda.org/conda-forge/noarch/json5-0.9.24-pyhd8ed1ab_0.conda#fc9780a517b51ea3798fc011c17ffd51 +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda#7f4a9e3fcff3f6356ae99244a014da6a +https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda#a30144e4156cdbb236f99ebb49828f8b +https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.24.0-pyhd8ed1ab_0.conda#327bfe1c99154f02259d29810bd70afc +https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda#3d85618e2c97ab896b5b5e298d32b5b3 +https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.1.5-pyhd8ed1ab_0.conda#04b1ca9d7ac414b3f5c3fb16066c6861 +https://conda.anaconda.org/conda-forge/noarch/amazon-codewhisperer-jupyterlab-ext-2.0.1-pyhd8ed1ab_0.conda#ab9bb3e630d872e9d38c8c18a0cba7b4 +https://conda.anaconda.org/conda-forge/noarch/aws-embedded-metrics-3.2.0-pyhd8ed1ab_0.conda#e1c511655b6e9eb0265c9715c7fa410f +https://conda.anaconda.org/conda-forge/noarch/croniter-1.4.1-pyhd8ed1ab_0.conda#7a4568626f8d6e7c63dcb25d5501a967 +https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.6.0-pyh1a96a4e_0.conda#50ea2067ec92dfcc38b4f07992d7e235 +https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.1.12.3-ha770c72_0.conda#cdea66892b19a454f939487318b6c517 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.3-hd8ed1ab_0.conda#1344bbd74e8bcd1acdd8ec0824e9840c +https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.3-hd8ed1ab_0.conda#b0c9bbbe54a11a6db3bec51eb0ef0281 +https://conda.anaconda.org/conda-forge/linux-64/pydantic-1.10.14-py310h2372a71_0.conda#6aca52bad315e6b841a32d6b3b0cdb82 +https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.3-py310hc6cd4ac_0.conda#fb478fd83c001cbf8ab01c29b857262e +https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-1.4.49-py310h2372a71_1.conda#cdeaf46006791202a7597bf2a0e6ad9e +https://conda.anaconda.org/conda-forge/noarch/jupyter_scheduler-2.5.1-pyha770c72_0.conda#3d250834fde789b6cb96dc11a43d1df2 +https://conda.anaconda.org/conda-forge/noarch/jupyter-scheduler-2.5.1-hd8ed1ab_0.conda#bb6463ad5d244321f64a231ba9b6cf2a +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-jupyter-scheduler-3.0.7-pyhd8ed1ab_1.conda#ee635c11a576839138a93fc46e0f389b +https://conda.anaconda.org/conda-forge/linux-64/cryptography-42.0.5-py310h75e40e8_0.conda#47e6ea7109182e9e48f8c5839f1bded7 +https://conda.anaconda.org/conda-forge/noarch/tenacity-8.2.3-pyhd8ed1ab_0.conda#1482e77f87c6a702a7e05ef22c9b197b +https://conda.anaconda.org/conda-forge/noarch/pyathena-3.5.1-pyhd8ed1ab_0.conda#1c302abfabf4d08375990de11ff98242 +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-4.9.4-py310hcfd0673_0.conda#d6df7beac08573177dd9a6a560d1d180 +https://conda.anaconda.org/conda-forge/noarch/asn1crypto-1.5.1-pyhd8ed1ab_0.tar.bz2#f3f2ab3ce28979a24d1a988ba211eb9b +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.0-pyhd8ed1ab_0.conda#4501c96a5e9f18239ae6e5944604d493 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-execution-0.1.3-pyhd8ed1ab_0.conda#4b2d24a39133e2dda52ece10bfe56810 +https://conda.anaconda.org/conda-forge/noarch/sqlparse-0.4.4-pyhd8ed1ab_0.conda#2e2f31b3b1c866c29636377e14f8c4c6 +https://conda.anaconda.org/conda-forge/noarch/amazon-sagemaker-sql-magic-0.1.1-pyhd8ed1ab_0.conda#2cbf8f2847bc726efb567b62e6913410 +https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_0.conda#4c33109f652b5d8c995ab243436c9370 +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.4-pyhd8ed1ab_0.conda#d9aa21e693982b6ca0341a9bf41db4a8 +https://conda.anaconda.org/conda-forge/linux-64/ansi2html-1.9.1-py310hff52083_0.conda#2213ea76fd340e7c848c1be0cbdfc579 +https://conda.anaconda.org/conda-forge/noarch/textwrap3-0.9.2-py_0.tar.bz2#1f84e74e9dbe2e5ae38c58496bffaca8 +https://conda.anaconda.org/conda-forge/noarch/ansiwrap-0.8.4-py_0.tar.bz2#f09557e2a7cbd2470a2ab6353000cebd +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.5.0-h27087fc_0.tar.bz2#a08150fd2298460cd1fcccf626305642 +https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.3-pyhd8ed1ab_0.conda#192278292e20704f663b9c766909d67b +https://conda.anaconda.org/conda-forge/linux-64/astroid-3.0.3-py310hff52083_0.conda#7d18b84331cda8271c9ed67d1ca05d47 +https://conda.anaconda.org/conda-forge/noarch/astunparse-1.6.3-pyhd8ed1ab_0.tar.bz2#000b6f68a0bfaba800ced7500c11780f +https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.43-hcad00b1_0.conda#8292dea9e022d9610a11fce5e0896ed8 +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.0-hf2295e7_1.conda#0725f6081030c29b109088639824ff90 +https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-hd4edc92_1.tar.bz2#6c72ec3e660a51736913ef6ea68c454b +https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2#d9c69a24ad678ffce24c6543a0176b00 +https://conda.anaconda.org/conda-forge/noarch/autogluon.common-0.8.2-pyhd8ed1ab_4.conda#e24166dee3b1430877a324715caf8f5d +https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.0-py310hd41b1e2_0.conda#85d2aaa7af046528d339da1e813c3a9f +https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda#5cd86562580f274031ede6aa6aa24441 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_9.conda#61641e239f96eae2b8492dc7e755828c +https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.0.9-h166bdaf_9.conda#081aa22f4581c08e4372b0b6c2f8478e +https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.0.9-h166bdaf_9.conda#1f0a03af852a9659ed2bf08f2f1704fd +https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_9.conda#d47dee1856d9cb955b8076eeff304a5b +https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_9.conda#4601544b4982ba1861fa9b9c607b2c06 +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-15.1.0-py310h2372a71_0.conda#72637c58d36d9475fda24700c9796f19 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.50.0-py310h2372a71_0.conda#85c48c98c9f2b72b384fb11c9004920b +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda#009981dd9cfcaa4dbfa25ffaed86bcae +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py310hd41b1e2_1.conda#b8d67603d43b23ce7e988a5d81a7ab79 +https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-2.1.5.1-hd590300_1.conda#323e90742f0f48fc22bea908735f55e6 +https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2#76bbff344f0134279f225174e9064c8f +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.18-h0b41bf4_0.conda#6aa9c9de5542ecb07fdda9ca626252d8 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.3.1-hd590300_0.conda#82bf6f63eb15ef719b556b63feec3a77 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.5.1-h8b53f26_1.conda#5b09e13d732dda1a2bc9adc711164f4d +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-haa2dc70_1.conda#980d8aca0bc23ca73fa8caa3e7c84c28 +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda#2c80dc38fface310c9bd81b17037fee5 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.15-h0b41bf4_0.conda#33277193f5b92bad9fdd230eb700929c +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.0-hfec8fc6_2.conda#5ce6a42505c6e9e6151c54c3ec8d68ea +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.5.0-py310h582fbeb_1.conda#cf62f6cff3536eafaaa0c740b0bf7465 +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda#b9a4dacf97241704529131a0dfc0494f +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.3-py310h62c0568_0.conda#4a7296c0273eb01dfbed728dd6a6725a +https://conda.anaconda.org/conda-forge/noarch/joblib-1.3.2-pyhd8ed1ab_0.conda#4da50d410f553db77e62ab62ffaa1abc +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.11.4-py310hb13e2d6_0.conda#f0063b2885bfae11324a00a693f88781 +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.4.0-pyhc1e730c_0.conda#b296278eef667c673bf51de6535bad88 +https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.4.1.post1-py310h1fdf081_0.conda#2706ad1a5f6cbad8b57d4094889d1e33 +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2#3faab06a954c2a04039983f2c4a50d99 +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.2-pyhd8ed1ab_0.conda#2b8dfb969f984497f3f98409a9545776 +https://conda.anaconda.org/conda-forge/linux-64/autogluon.core-0.8.2-light_py310h2d11d36_6.conda#9de8e45568202a91466af4d849c7e919 +https://conda.anaconda.org/conda-forge/noarch/autogluon.features-0.8.2-pyhd8ed1ab_3.conda#c827eccfb0ddb1484d0e00f45242b8f8 +https://conda.anaconda.org/conda-forge/linux-64/chardet-5.2.0-py310hff52083_1.conda#a677136a83b823803d2f92045f885be2 +https://conda.anaconda.org/conda-forge/noarch/binaryornot-0.4.4-py_1.tar.bz2#a556fa60840fcb9dd739d186bfd252f7 +https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda#f3ad426304898027fc619827ff428eca +https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_1.conda#ba8aba332d8868897ce44ad74015a7fe +https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_0.conda#4b11845622b3c3178c0e989235b53975 +https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda#776a8dd9e824f77abac30e6ef43a8f7a +https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda#93a8e71256479c62074356ef6ebf501b +https://conda.anaconda.org/conda-forge/noarch/rich-13.7.1-pyhd8ed1ab_0.conda#ba445bf767ae6f0d959ff2b40c20912b +https://conda.anaconda.org/conda-forge/noarch/cookiecutter-2.6.0-pyhca7485f_0.conda#d6260b53b9db90017321af0b45cc00da +https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda#78745f157d56877a2c6e7b386f66f3e2 +https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.22.0-pyhd8ed1ab_0.conda#c4dbdc593adfa072d40df9b1dd128444 +https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py310h2372a71_0.conda#efdca5c3783dae00552f389bd7b56c3d +https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.0-hd590300_0.conda#71b89db63b5b504e7afc8ad901172e1e +https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.1-hc309b26_1.conda#cc09293a2c2b7fd77aff284f370c12c0 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-h4d4d85c_2.conda#9ca99452635fe03eb5fa937f5ae604b0 +https://conda.anaconda.org/conda-forge/linux-64/s2n-1.3.49-h06160fa_0.conda#1d78349eb26366ecc034a4afe70a8534 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.32-he9a53bd_1.conda#8a24e5820f4a0ffd2ed9c4722cd5d7ca +https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.7.11-h00aa349_4.conda#cb932dff7328ff620ce8059c9968b095 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-h4d4d85c_1.conda#eba092fc6de212a01de0065f38fe8bbb +https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.3-h28f7589_1.conda#97503d3e565004697f1651753aa95b9e +https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.17-h4d4d85c_1.conda#30f9df85ce23cd14faa9a4dfa50cca2b +https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.3.1-h2e3709c_4.conda#2cf21b1cbc1c096a28ffa2892257a2c1 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.9.3-hb447be9_1.conda#c520669eb0be9269a5f0d8ef62531882 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.14-hf3aad02_1.conda#a968ffa7e9fe0c257628033d393e512f +https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.21.0-hb942446_5.conda#07d92ed5403ad7b5c66ffd7d5b8f7e57 +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.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.2-h659d440_0.conda#cd95826dbd331ed1be26bdf401432844 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.27.0-hd590300_0.conda#f6afff0e9ee08d2f1b897881a4f38cdb +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.58.0-h47da74e_1.conda#700ac6ea6d53d5510591c4344d5c989a +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda#1f5a58e686b13bcfde88b93f547d23fe +https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.6.0-hca28451_0.conda#704739398d858872cb91610f49f0ef29 +https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.10.57-h85b1a90_19.conda#0605d3d60857fc07bd6a11e878fe0f08 +https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-he1b5a44_1004.tar.bz2#cddaf2c63ea4a5901cf09524c490ecdc +https://conda.anaconda.org/conda-forge/linux-64/glog-0.6.0-h6f12383_0.tar.bz2#b31f3565cb84435407594e548a2fb7b2 +https://conda.anaconda.org/conda-forge/linux-64/libabseil-20230125.3-cxx17_h59595ed_0.conda#d1db1b8be7c3a8983dcbbbfe4f0765de +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/re2-2023.03.02-h8c504da_0.conda#206f8fa808748f6e90599c3368a1114e +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.conda#68c34ec6149623be41a1933ab996a209 +https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.54.3-hb20ce57_0.conda#7af7c59ab24db007dfd82e0a3a343f66 +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.12.0-hac9eb74_1.conda#0dee716254497604762957076ac76540 +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.18.1-h8fd135c_2.conda#bbf65f7688512872f063810623b755dc +https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2#ede4266dc02e875fe1ea77b25dd43747 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda#318b08df404f9c9be5712aaa5a6f0bb0 +https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.10-h9fff704_0.conda#e6d228cd0bb74a51dd18f5bfce0b4115 +https://conda.anaconda.org/conda-forge/linux-64/orc-1.9.0-h2f23424_1.conda#9571eb3eb0f7fe8b59956a7786babbcd +https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-hd590300_0.conda#8feeecae73aeef0a2985af46b5a2c1df +https://conda.anaconda.org/conda-forge/linux-64/rdma-core-28.9-h59595ed_1.conda#aeffb7c06b5f65e55e6c637408dc4100 +https://conda.anaconda.org/conda-forge/linux-64/ucx-1.14.1-h64cca9d_5.conda#39aa3b356d10d7e5add0c540945a0944 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-12.0.1-hb87d912_8_cpu.conda#3f3b11398fe79b578e3c44dd00a44e4a +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-12.0.1-py310h0576679_8_cpu.conda#27f55ccfd038d6665facb04a0aa572c5 +https://conda.anaconda.org/conda-forge/noarch/pyarrow-hotfix-0.6-pyhd8ed1ab_0.conda#ccc06e6ef2064ae129fab3286299abda +https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda#f08fb5c89edfc4aadee1c81d4cfb1fa1 +https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.4.1-py310h2372a71_0.conda#b631b889b0b4bc2fca7b8b977ca484b2 +https://conda.anaconda.org/conda-forge/noarch/datasets-2.18.0-pyhd8ed1ab_0.conda#3482c9b417757df305ff4e3a7e4b7c10 +https://conda.anaconda.org/conda-forge/noarch/responses-0.18.0-pyhd8ed1ab_0.tar.bz2#a10d30e613a2a1a78a89ceadf3832e7c +https://conda.anaconda.org/conda-forge/noarch/evaluate-0.4.1-pyhd8ed1ab_0.conda#ea228540526db4dde8ad8f2309bc1d40 +https://conda.anaconda.org/conda-forge/noarch/gdown-5.1.0-pyhd8ed1ab_0.conda#6f880647c0270648f710f334c60bc76c +https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.1.99-h180e1df_0.conda#056064bd3ef47439e3e78fac28449fbf +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.1.99-py310hebdb9f0_0.conda#b3a5908ac3912b26d6a8b77faebe6eca +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.1.99-h180e1df_0.conda#c67cc412366709c1c3225f19f8aed63b +https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.1.99-hff52083_0.conda#578969452de13e4ad69edf18ee2b3d5a +https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_3.tar.bz2#a362b2124b06aad102e2ee4581acee7d +https://conda.anaconda.org/conda-forge/linux-64/regex-2023.12.25-py310h2372a71_0.conda#4a9ba4e7af60356e63b38a6d419acad6 +https://conda.anaconda.org/conda-forge/noarch/sacremoses-0.0.53-pyhd8ed1ab_0.tar.bz2#76c3c384fe0941f1b08193736e8e277a +https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.2-py310hcb5633a_0.conda#a1e978544ef765ef9ac2f2320e43bacd +https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.13.3-py310he1f1126_0.conda#ea2281fe0bf70c1c83393565342a8a8c +https://conda.anaconda.org/conda-forge/noarch/transformers-4.31.0-pyhd8ed1ab_0.conda#8cccf394a00fbfef2f3d6028422ae5cc +https://conda.anaconda.org/conda-forge/noarch/nlpaug-1.1.11-pyhd8ed1ab_1.conda#4e231f0fa7db9388cf4c8539d623ac62 +https://conda.anaconda.org/conda-forge/noarch/nltk-3.8.1-pyhd8ed1ab_0.conda#518c769ca4273480a99be6e559a26192 +https://conda.anaconda.org/conda-forge/noarch/typish-1.9.3-pyhd8ed1ab_0.tar.bz2#81b3f3101aa2af117924d908a1b33c67 +https://conda.anaconda.org/conda-forge/noarch/nptyping-2.4.1-pyhd8ed1ab_0.tar.bz2#7929b4ae7565a66f0fab4b70cfb90594 +https://conda.anaconda.org/conda-forge/noarch/omegaconf-2.2.3-pyhd8ed1ab_0.conda#cebc9f0fc6eebdcc368bb30ba30f2fd5 +https://conda.anaconda.org/conda-forge/noarch/markdown-3.6-pyhd8ed1ab_0.conda#06e9bebf748a0dea03ecbe1f0e27e909 +https://conda.anaconda.org/conda-forge/noarch/ordered-set-4.1.0-pyhd8ed1ab_0.tar.bz2#9a8714decb3967b290263817e876d8a9 +https://conda.anaconda.org/conda-forge/noarch/model-index-0.1.11-pyhd8ed1ab_0.conda#6aecca21351e44095ffd2901ee46337a +https://conda.anaconda.org/conda-forge/noarch/wheel-0.43.0-pyhd8ed1ab_0.conda#6e43a94e0ee67523b5e781f0faba5c45 +https://conda.anaconda.org/conda-forge/noarch/pip-23.3.2-pyhd8ed1ab_0.conda#8591c748f98dcc02253003533bc2e4b1 +https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_1.tar.bz2#4759805cce2d914c38472f70bf4d8bcb +https://conda.anaconda.org/conda-forge/noarch/openmim-0.3.7-pyhd8ed1ab_0.conda#e081b8fa91b884435725f0caa13866ff +https://conda.anaconda.org/conda-forge/linux-64/protobuf-4.21.12-py310heca2aa9_0.conda#90bb7e1b729c4b50272cf78be97ab912 +https://conda.anaconda.org/conda-forge/noarch/pytesseract-0.3.10-pyhd8ed1ab_0.tar.bz2#04f4becceb0c032c5dbdae6ad18bd95e +https://conda.anaconda.org/conda-forge/noarch/lightning-utilities-0.11.1-pyhd8ed1ab_0.conda#b3e6a8dac4cdfd01c23211c7fb50bfee +https://conda.anaconda.org/conda-forge/noarch/torchmetrics-1.0.3-pyhd8ed1ab_0.conda#4e8849ba2fa06393b7ab5a50c6a4256c +https://conda.anaconda.org/conda-forge/noarch/pytorch-lightning-2.0.9-pyhd8ed1ab_0.conda#3e96ed529412338e38af9004e22267de +https://conda.anaconda.org/conda-forge/noarch/pytorch-metric-learning-1.7.3-pyhd8ed1ab_0.conda#139aa590e345e10f4572812a329806f4 +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.2.1-pyhd8ed1ab_0.conda#b325bfc4cff7d7f8a868f1f7ecc4ed16 +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.3-py310h2372a71_0.conda#21362970a6fea90ca507c253c20465f2 +https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 +https://conda.anaconda.org/conda-forge/noarch/partd-1.4.1-pyhd8ed1ab_0.conda#acf4b7c0bcd5fa3b0e05801c4d2accd6 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.3.1-pyhd8ed1ab_0.conda#52dd56ce3afa6a52c2f3d3116875ff32 +https://conda.anaconda.org/conda-forge/noarch/imageio-2.34.0-pyh4b66e23_0.conda#b8853659d596f967c661f544dd89ede7 +https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.4.1-py310h1f7b6fc_1.conda#be6f0382440ccbf9fb01bb19ab1f1fc0 +https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.5-h0f2a231_0.conda#009521b7ed97cca25f8f997f9e745976 +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.0.7-h0b41bf4_0.conda#49e8329110001f04923fe7e864990b0c +https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.13.2-hb4ffafa_0.conda#976aaf1afd331ed7346d649da5c5c1ee +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.1-h0b41bf4_3.conda#96f3b11872ef6fad973eac856cd2624f +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/libavif-0.11.1-h8182462_2.conda#41c399ed4c439e37b844c24ab5621b5a +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-h59595ed_0.conda#fd486bffbf0d6841cf1456a8f2e3a995 +https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2023.8.12-py310hc929067_0.conda#61caf809753610c4c87d583765b1d478 +https://conda.anaconda.org/conda-forge/noarch/tifffile-2024.2.12-pyhd8ed1ab_0.conda#d5c8bef52be4e70c48b1400eec3eecc8 +https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.19.3-py310h769672d_2.tar.bz2#c0391107b0cd0010708d6969ed759e8b +https://conda.anaconda.org/conda-forge/noarch/seqeval-1.2.2-pyhd3deb0d_0.tar.bz2#d4436c8a8b9fb6d60fe4e7b9f097f9bb +https://conda.anaconda.org/conda-forge/noarch/cachetools-5.3.3-pyhd8ed1ab_0.conda#cd4c26c702a9bcdc70ff05b609ddacbe +https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.5.1-pyhd8ed1ab_0.conda#fb1a800972b072aa4d16450983c81418 +https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.3.0-pyhd8ed1ab_0.conda#26db749166cdca55e5ef1ffdc7767d0e +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda#b50aec2c744a5c493c09cce9e2e7533e +https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_0.tar.bz2#caabbeaa83928d0c3e3949261daa18eb +https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2#03bf410858b2cefc267316408a77c436 +https://conda.anaconda.org/conda-forge/noarch/google-auth-2.29.0-pyhca7485f_0.conda#a12a2abc807053bc378b218a2a525c7d +https://conda.anaconda.org/conda-forge/noarch/blinker-1.7.0-pyhd8ed1ab_0.conda#550da20b2c2e38be9cc44bb819fda5d5 +https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.8.0-pyhd8ed1ab_1.conda#74f76d4868dbba5870f2cf1d9b12d8f3 +https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.2.2-pyhd8ed1ab_0.tar.bz2#8f882b197fd9c4941a787926baea4868 +https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-2.0.0-pyhd8ed1ab_0.conda#87ce3f09ae7e1d3d0f748a1a634ea3b7 +https://conda.anaconda.org/conda-forge/noarch/google-auth-oauthlib-1.0.0-pyhd8ed1ab_1.conda#569e62e95b01b53e4ec7d9abe83b7385 +https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.54.3-py310heca2aa9_0.conda#7c82ea96968976ee2eb66a52f2decd8e +https://conda.anaconda.org/conda-forge/linux-64/tensorboard-data-server-0.7.0-py310h75e40e8_1.conda#e562478facfa960813945204273ecac5 +https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.0.1-pyhd8ed1ab_0.conda#af8d825d93dbe6331ee6d61c69869ca0 +https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.12.3-pyhd8ed1ab_0.conda#429d39f86cef8d0859d639804ae67aaf +https://conda.anaconda.org/conda-forge/linux-64/torchvision-0.15.2-cuda112py310h0801bf5_1.conda#f5680c812c287a92c4390dc245df2e5d +https://conda.anaconda.org/conda-forge/noarch/timm-0.9.16-pyhd8ed1ab_0.conda#bc15401d946adb3fbce34c4ba351dd20 +https://conda.anaconda.org/conda-forge/noarch/autogluon.multimodal-0.8.2-pyha770c72_5.conda#a8ca42e2b4ee0fd6dce729bc226dd0cc +https://conda.anaconda.org/conda-forge/noarch/plotly-5.19.0-pyhd8ed1ab_0.conda#669cd7065794633b9e64e6a9612ec700 +https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda#e7ba12deb7020dd080c6c70e7b6f6a3d +https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda#53fb86322bdb89496d7579fe3f02fd61 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda#0f69b688f52ff6da70bccb7ff7001d1d +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_1.conda#6185f640c43843e5ad6fd1c5372c3f80 +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/pixman-0.43.2-h59595ed_0.conda#71004cbf7924e19c02746ccde9fd7123 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda#b462a33c0be1421532f28bfe8f4a7514 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda#93ee23f12bc2e684548181256edd2cf6 +https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2#4b230e8381279d76131116660f5a241a +https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda#bce9f945da8ad2ae9b1d7165a64d0f87 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2#b4a4381d54784606820704f7b5f05a15 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.7-h8ee46fc_0.conda#49e482d882669206653b095f5206c05b +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda#82b6df12252e6f32402b96dacc656fec +https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2#06feff3d2634e3097ce2fe681474b534 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda#ed67c36f215b310412b2af935bf3e530 +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-h3faef2a_0.conda#f907bb958910dc404647326ca80c263e +https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h6b639ba_2.conda#ee8220db21db8094998005990418fe5b +https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h58526e2_1001.tar.bz2#8c54672728e8ec6aa6db90cf2806d220 +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.3.0-h3d44ed6_0.conda#5a6f6c00ef982a9bc83558d9ac8f64a0 +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.52.1-ha41ecd1_0.conda#5c0cc002bf4eaa56448b0729efd6e96c +https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h280cfa0_4.conda#410f86e58e880dcc7b0e910a8e89c05c +https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda#4d8df0b0db060d33c9a702ada998a8fe +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.3.1-hbf2b3c1_0.conda#4963f3f12db45a576f2b8fbe9a0b8569 +https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h74d50f4_7.conda#3453ac94a99ad9daf17e8a313d274567 +https://conda.anaconda.org/conda-forge/linux-64/gettext-0.21.1-h27087fc_0.tar.bz2#14947d8770185e5153fdd04d4673ed37 +https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.56.3-he3f83f7_1.conda#03bd1ddcc942867a19528877143b9852 +https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.7-h27087fc_0.conda#f204c8ba400ec475452737094fb81d52 +https://conda.anaconda.org/conda-forge/linux-64/graphviz-8.1.0-h28d9a01_0.conda#33628e0e3de7afd2c8172f76439894cb +https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.20.3-pyh717bed2_0.conda#031c005eb6d4513013d99ed163dd5f59 +https://conda.anaconda.org/conda-forge/linux-64/catboost-1.2.3-py310hff52083_2.conda#e063c808181593406d4d3d321ee7ffff +https://conda.anaconda.org/conda-forge/noarch/fastcore-1.5.29-pyhd8ed1ab_0.conda#155c898255baddd6b2cb95894791eeca +https://conda.anaconda.org/conda-forge/noarch/fastprogress-1.0.3-pyhd8ed1ab_0.tar.bz2#1690639d3647fde6edf4f00c8f87c263 +https://conda.anaconda.org/conda-forge/noarch/fastdownload-0.0.7-pyhd8ed1ab_0.conda#29c29999a420c2d28c3a46b3eadb9373 +https://conda.anaconda.org/conda-forge/linux-64/catalogue-2.0.10-py310hff52083_0.conda#a20390cd5f5fe4d8c5f6f2e7fa6c54cf +https://conda.anaconda.org/conda-forge/linux-64/cymem-2.0.8-py310hc6cd4ac_1.conda#8e4dada89998e0cb4f97b835dff6dc7e +https://conda.anaconda.org/conda-forge/noarch/langcodes-3.3.0-pyhd8ed1ab_0.tar.bz2#aacac9c3804912c38087d1c295708493 +https://conda.anaconda.org/conda-forge/linux-64/murmurhash-1.0.10-py310hc6cd4ac_1.conda#2b0c4b4532c601ece4537cc7f3558464 +https://conda.anaconda.org/conda-forge/noarch/smart_open-5.2.1-pyhd8ed1ab_0.tar.bz2#c7a838c38e38c82edde371a9054e6c92 +https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda#d08db09a552699ee9e7eec56b4eb3899 +https://conda.anaconda.org/conda-forge/noarch/typer-0.9.4-pyhd8ed1ab_0.conda#01a14596daee2aff9cdc1167786231ea +https://conda.anaconda.org/conda-forge/noarch/pathy-0.10.2-pyhd8ed1ab_0.conda#69d84b5c17aea4d7350f3536bcde7296 +https://conda.anaconda.org/conda-forge/linux-64/preshed-3.0.9-py310hc6cd4ac_1.conda#a2a27c2eafd1e280555ae954df088fc3 +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/srsly-2.4.8-py310hc6cd4ac_1.conda#7cd9d4be6f55ccb53cbd7125f2e6a0fb +https://conda.anaconda.org/conda-forge/linux-64/confection-0.1.4-py310h17c5347_0.conda#72b63825959fc040cab8ed0f12f2040e +https://conda.anaconda.org/conda-forge/linux-64/cython-blis-0.7.10-py310h1f7b6fc_2.conda#6a0165d9e76c443ed66d2e8b733aa133 +https://conda.anaconda.org/conda-forge/linux-64/wasabi-1.1.2-py310hff52083_0.conda#8ed9f04ed8e1373063cd03b9d5c86ce3 +https://conda.anaconda.org/conda-forge/linux-64/thinc-8.2.2-py310hcb52e73_0.conda#550b37537f05740f1c9a38d63d843b3c +https://conda.anaconda.org/conda-forge/noarch/cloudpathlib-0.16.0-pyhd8ed1ab_0.conda#8d75941f621306e58b7642394a8bad87 +https://conda.anaconda.org/conda-forge/noarch/weasel-0.3.4-pyhd8ed1ab_0.conda#a53c82e61a1173c887e84fc50842eec4 +https://conda.anaconda.org/conda-forge/linux-64/spacy-3.7.2-py310hcb52e73_0.conda#c966d5a09c130d0bcfce4126643ddc74 +https://conda.anaconda.org/conda-forge/noarch/fastai-2.7.14-pyhd8ed1ab_0.conda#9854ef355cc4bd1e2aac40998f721fed +https://conda.anaconda.org/conda-forge/linux-64/lightgbm-3.3.5-py310heca2aa9_0.conda#d2595ddab22cbca7409b28e3105afd0a +https://conda.anaconda.org/conda-forge/linux-64/libxgboost-1.7.6-cuda118_hd3b444d_6.conda#78509401d0879ef5aac72b8d1e104493 +https://conda.anaconda.org/conda-forge/linux-64/py-xgboost-1.7.6-cuda118_py310h9840055_6.conda#1d3da6268c67fe8b84c32cd0dc174bb4 +https://conda.anaconda.org/conda-forge/linux-64/xgboost-1.7.6-cuda118_py310h9840055_6.conda#f6a6f34c91b92f72dfdb47d3c7efcbbe +https://conda.anaconda.org/conda-forge/noarch/autogluon.tabular-0.8.2-pyha770c72_4.conda#17fad1cdb563ddad16ab0ba4c085bcb3 +https://conda.anaconda.org/conda-forge/noarch/gluonts-0.13.7-pyhd8ed1ab_0.conda#1684b578508d9918b2dcadd4c365c61a +https://conda.anaconda.org/conda-forge/linux-64/libllvm14-14.0.6-hcd5def8_4.conda#73301c133ded2bf71906aa2104edae8b +https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.42.0-py310h1b8f574_1.conda#e2a5e9f92629c8e4c8611883a35745b4 +https://conda.anaconda.org/conda-forge/linux-64/numba-0.59.0-py310h7dc5dd1_1.conda#966bc2bc095723310d746106e7c91791 +https://conda.anaconda.org/conda-forge/noarch/window-ops-0.0.15-pyhd8ed1ab_0.conda#b5ffd7d8295d4eda512216e23cf75a0f +https://conda.anaconda.org/conda-forge/noarch/mlforecast-0.7.3-pyhd8ed1ab_0.conda#7a2b34b4c9bff2545200b3746da70f11 +https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.6-pyhd8ed1ab_0.conda#a5b55d1cb110cdcedc748b5c3e16e687 +https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.1-py310h1f7b6fc_0.conda#d98c3749dd466513dd921f5818f4b001 +https://conda.anaconda.org/conda-forge/noarch/statsforecast-1.4.0-pyhd8ed1ab_0.conda#aa803f915587fe4306dfe0234215caa9 +https://conda.anaconda.org/conda-forge/linux-64/ujson-5.9.0-py310hc6cd4ac_0.conda#cab4b543b897dcf548edb3018fe45f9e +https://conda.anaconda.org/conda-forge/noarch/autogluon.timeseries-0.8.2-pyhd8ed1ab_4.conda#a64157275daf72a557fe4a9d843a9e1d +https://conda.anaconda.org/conda-forge/noarch/autogluon-0.8.2-pyhd8ed1ab_4.conda#7ff9ac51e09bd5991970a7df53b4bee6 +https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.11.1-pyhd8ed1ab_0.conda#29ff12b36df16bb66fdccd4206aaebfb +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.10-pyhd8ed1ab_0.conda#16b73b2c4ff7dda8bbecf88aadfe2027 +https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.10-pyhd8ed1ab_0.conda#521f489e3babeddeec638c2add7e9e64 +https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.2-pyhd8ed1ab_0.conda#67f86478c78637f68c1f3858973021f2 +https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.42-hd8ed1ab_0.conda#85a2189ecd2fcdd86e92b2d4ea8fe461 +https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_0.conda#7cf6f52a66f8e3cd9d8b6c231262dcab +https://conda.anaconda.org/conda-forge/noarch/notebook-7.1.2-pyhd8ed1ab_0.conda#fa781da51f05c9211b75b5e7bcff8136 +https://conda.anaconda.org/conda-forge/noarch/qtpy-2.4.1-pyhd8ed1ab_0.conda#7f391bd70d2abfb70f304ba5aa4e1261 +https://conda.anaconda.org/conda-forge/noarch/qtconsole-base-5.5.1-pyha770c72_0.conda#5528a3eda283b421055c89bface19a1c +https://conda.anaconda.org/conda-forge/noarch/jupyter-1.0.0-pyhd8ed1ab_10.conda#056b8cc3d9b03f54fc49e6d70d7dc359 +https://conda.anaconda.org/conda-forge/noarch/mock-5.1.0-pyhd8ed1ab_0.conda#926c67c0310094cf421ad13f7d3f38e5 +https://conda.anaconda.org/conda-forge/noarch/nose-1.3.7-py_1006.tar.bz2#382019d5f8e9362ef6f60a8d4e7bce8f +https://conda.anaconda.org/conda-forge/noarch/hdijupyterutils-0.21.0-pyh1a96a4e_0.conda#4db6232a9b934edc1c1e2f7b7d5a5d40 +https://conda.anaconda.org/conda-forge/noarch/autovizwidget-0.21.0-pyh1a96a4e_0.conda#7db56991c3c823ddb394ed85df9b54f5 +https://conda.anaconda.org/conda-forge/noarch/aws-glue-sessions-1.0.4-pyhd8ed1ab_0.conda#169c4c0a396d83164215f54024031ec8 +https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.1.2-py310hcb5633a_0.conda#6dd3d49f65ceb05dbd527a5b6301611b +https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda#4eccaeba205f0aed9ac3a9ea58568ca3 +https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda#17064acba08d3686f1135b5ec1b32b12 +https://conda.anaconda.org/conda-forge/linux-64/black-24.3.0-py310hff52083_0.conda#12960fe9118cbb71fb802a52870f7874 +https://conda.anaconda.org/conda-forge/noarch/boltons-23.1.1-pyhd8ed1ab_0.conda#56febe65315cc388a5d20adf2b39a74d +https://conda.anaconda.org/conda-forge/linux-64/fmt-10.2.1-h00ab1b0_0.conda#35ef8bc24bd34074ebae3c943d551728 +https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h516909a_1000.tar.bz2#bb14fcb13341b81d5eb386423b9d2bac +https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.7.2-h2aa1ff5_1.conda#3bf887827d1968275978361a6e405e4f +https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.28-hfc55251_1.conda#84271c00f5804bbc1ef7c525d1e4f405 +https://conda.anaconda.org/conda-forge/linux-64/reproc-14.2.4.post0-hd590300_1.conda#82ca53502dfd5a64a80dee76dae14685 +https://conda.anaconda.org/conda-forge/linux-64/reproc-cpp-14.2.4.post0-h59595ed_1.conda#715e1d720ec1a03715bebd237972fca5 +https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h59595ed_0.conda#965eaacd7c18eb8361fd12bb9e7a57d7 +https://conda.anaconda.org/conda-forge/linux-64/libmamba-1.5.8-had39da4_0.conda#def669885dc103d8acb7ac2ac35e0b2f +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.8-py310h39ff949_0.conda#37f8aa15b73c4691eeec15caf45aab25 +https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-24.1.0-pyhd8ed1ab_0.conda#304dc78ad6e52e0fd663df1d484c1531 +https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.22.0-py310h1275a96_0.conda#54698ba13cd3494547b289cd86a2176a +https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.9.0-pyhd8ed1ab_0.conda#38253361efb303deead3eab39ae9269b +https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.2.0-pyh38be061_0.conda#8a3ae7f6318376aa08ea753367bb7dd6 +https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_0.conda#bbdb409974cd6cb30071b1d978302726 +https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_0.conda#bfdb7c5c6ad1077c82a69a8642c87aff +https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.0.2-py310hff52083_0.conda#4837faab0d3e665df57fef662148c6a3 +https://conda.anaconda.org/conda-forge/noarch/pluggy-1.4.0-pyhd8ed1ab_0.conda#139e9feb65187e916162917bb2484976 +https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py310h2372a71_0.conda#0adaac9a86d59adae2bc86b3cdef2df1 +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py310h2372a71_0.conda#dcf6d2535586c77b31425ed835610c54 +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.6-py310h2372a71_0.conda#50b7d9b39099cdbabf65bf27df73a793 +https://conda.anaconda.org/conda-forge/noarch/truststore-0.8.0-pyhd8ed1ab_0.conda#08316d001eca8854392cf2837828ea11 +https://conda.anaconda.org/conda-forge/linux-64/conda-23.11.0-py310hff52083_1.conda#d5278ac990c67d5ed51584998aa16c5a +https://conda.anaconda.org/conda-forge/noarch/contextlib2-21.6.0-pyhd8ed1ab_0.tar.bz2#5b26a831440be04c39531a8ce20f5d71 +https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.4-h7f98852_1002.tar.bz2#e728e874159b042d92b90238a3cb0dc2 +https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.27-h54b06d7_7.conda#dce22f70b4e5a407ce88f2be046f4ceb +https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.1.2-pyhd8ed1ab_0.tar.bz2#3c3de74912f11d2b590184f03c7cd09b +https://conda.anaconda.org/conda-forge/noarch/flask-3.0.2-pyhd8ed1ab_0.conda#7f88df670921cc31c309719e30c22021 +https://conda.anaconda.org/conda-forge/noarch/retrying-1.3.3-py_2.tar.bz2#a11f356d6f93b74b4a84e9501afd48b4 +https://conda.anaconda.org/conda-forge/noarch/dash-2.16.1-pyhd8ed1ab_0.conda#016bd4f61878a57f19c8cd744708a1f1 +https://conda.anaconda.org/conda-forge/noarch/marshmallow-3.21.1-pyhd8ed1ab_0.conda#ae303aa7dc100bc3bc01b5a3b7ca3567 +https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_0.conda#9e924b76b91908a17e28a19a0ab88687 +https://conda.anaconda.org/conda-forge/noarch/dataclasses-json-0.6.4-pyhd8ed1ab_0.conda#1190a6456351690603b2d64d1cbf5b4a +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d +https://conda.anaconda.org/conda-forge/noarch/deepmerge-1.1.1-pyhd8ed1ab_0.conda#d91c3d8ac3f2ab36ca4ea32ac42f731e +https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.7-py310hd41b1e2_0.conda#dc5263dcaa1347e5a456ead3537be27d +https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2#6d6552722448103793743dabfbda532d +https://conda.anaconda.org/conda-forge/noarch/tblib-2.0.0-pyhd8ed1ab_0.conda#f5580336fe091d46f9a2ea97da044550 +https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda#cf30c2c15b82aacb07f9c09e28ff2275 +https://conda.anaconda.org/conda-forge/noarch/distributed-2024.3.1-pyhd8ed1ab_0.conda#b0ad5ef44595ef37c3008fc04ecd2abf +https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.5.0-py310h2372a71_3.conda#a29a0825809cd3a780097472be176618 +https://conda.anaconda.org/conda-forge/noarch/paramiko-3.4.0-pyhd8ed1ab_0.conda#a5e792523b028b06d7ce6e65a6cd4a33 +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.0.0-pyhd8ed1ab_0.conda#aec5f308cb9055e83c59afecd5fcb58a +https://conda.anaconda.org/conda-forge/noarch/docstring-to-markdown-0.15-pyhd8ed1ab_0.conda#a3a1e6af2926a3affcd6f2072871f551 +https://conda.anaconda.org/conda-forge/linux-64/libfaiss-1.7.4-hf47d654_0_cpu.conda#8fd132db65c8d51caea2ae7cde4b450c +https://conda.anaconda.org/conda-forge/linux-64/libfaiss-avx2-1.7.4-h1234567_0_cpu.conda#7eb943c067a63c4d8af526c2df9f2c1b +https://conda.anaconda.org/conda-forge/linux-64/faiss-1.7.4-py310h9ed8947_0_cpu.conda#99665c710087f7a964915b5ea0097465 +https://conda.anaconda.org/conda-forge/linux-64/faiss-cpu-1.7.4-h718b53a_0.conda#7a9e6f72c36ff5a5eeb61660fd6fdf8d +https://conda.anaconda.org/conda-forge/noarch/starlette-0.27.0-pyhd8ed1ab_0.conda#6facb6fc201d334257db8004439705d3 +https://conda.anaconda.org/conda-forge/noarch/fastapi-0.103.2-pyhd8ed1ab_0.conda#fb243b6796ab7d64b14e00c279620c04 +https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_0.tar.bz2#34fc335fc50eef0b5ea708f2b5f54e0c +https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.2.0-pyhd8ed1ab_0.conda#0cf7fef6aa123df28adb21a590065e3d +https://conda.anaconda.org/conda-forge/noarch/flake8-7.0.0-pyhd8ed1ab_0.conda#15bc58c860fc0a9abc26ec902df35252 +https://conda.anaconda.org/conda-forge/linux-64/flatbuffers-23.5.26-h59595ed_1.conda#913a1c6fd00b66f33392a129e835ceca +https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_0.conda#650a7807e689642dddd3590eb817beed +https://conda.anaconda.org/conda-forge/noarch/gast-0.4.0-pyh9f0ad1d_0.tar.bz2#42323c77b73462199fca93bc8ac9279d +https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2#62f26a3d1387acee31322208f0cfa3e0 +https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda#623b19f616f2ca0c261441067e18ae40 +https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.42-pyhd8ed1ab_0.conda#6bc8e496351bafd761c0922c3ebd989a +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.80.0-hde27a5a_1.conda#939ddd853b1d98bf6fd22cc0adeda317 +https://conda.anaconda.org/conda-forge/linux-64/glib-2.80.0-hf2295e7_1.conda#d3bcc5c186f78feba6f39ea047c35950 +https://conda.anaconda.org/conda-forge/noarch/google-pasta-0.2.0-pyh8c360ce_0.tar.bz2#26e27d7d3d7fe2336b543dd8e0f12cbf +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.22.9-h98fc4e7_1.conda#f502076ed4db50d9ee5c907036a5a172 +https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2#6e8cc2173440d77708196c5b93771680 +https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f +https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 +https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.22.9-hfa15dee_1.conda#b66ddd883308a836ed86c247231aab82 +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_h4f84152_100.conda#d471a5c3abc984b662d9bae3bb7fd8a5 +https://conda.anaconda.org/conda-forge/linux-64/h5py-3.10.0-nompi_py310h65828d5_101.conda#44c185c5b133ad6d1d449839407aa863 +https://conda.anaconda.org/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_0.conda#1d25ed2b95b92b026aaa795eabec8d91 +https://conda.anaconda.org/conda-forge/linux-64/ml_dtypes-0.3.2-py310hcc13569_0.conda#1ad84020b1ab816d7ab3f3d0859faf40 +https://conda.anaconda.org/conda-forge/linux-64/jaxlib-0.4.14-cpu_py310h67d73b5_1.conda#392c325994aa96727edd0069a0620e31 +https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.3.0-pyhc1e730c_2.conda#7a94ac68b892daa9f17ae8a52b31ed81 +https://conda.anaconda.org/conda-forge/noarch/opt-einsum-3.3.0-hd8ed1ab_2.conda#ab262acd95cb73f3ed9426cc4204ac3a +https://conda.anaconda.org/conda-forge/noarch/jax-0.4.20-pyhd8ed1ab_0.conda#5abbd950bd427bc9d929e35ecbf814d1 +https://conda.anaconda.org/conda-forge/noarch/ply-3.11-py_1.tar.bz2#7205635cd71531943440fbfe3b6b5727 +https://conda.anaconda.org/conda-forge/noarch/jsonpath-ng-1.6.1-pyhd8ed1ab_0.conda#a698a41f5b52fe96049fd8c926ac3086 +https://conda.anaconda.org/conda-forge/linux-64/orjson-3.9.15-py310hcb5633a_0.conda#da1b180ccf1dce5d87d145ad2fc14e5a +https://conda.anaconda.org/conda-forge/noarch/langsmith-0.1.31-pyhd8ed1ab_0.conda#031cb2cb0387f028379c1a58217fe929 +https://conda.anaconda.org/conda-forge/noarch/langchain-core-0.1.33-pyhd8ed1ab_0.conda#a0454a06df0bf2de641c21ac1e455530 +https://conda.anaconda.org/conda-forge/noarch/langchain-community-0.0.29-pyhd8ed1ab_0.conda#7dfaffe1c95ee7718624be16cb57dfbd +https://conda.anaconda.org/conda-forge/noarch/langchain-0.1.9-pyhd8ed1ab_0.conda#2ad37682610ac2643b46e4cc0215f410 +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-magics-2.11.0-pyhd8ed1ab_0.conda#aee09f3966655f81d05fcfb5bae3612d +https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.5.2-py310h47bb294_0.conda#a83ae186d0a4b78c98b32781d7c15d48 +https://conda.anaconda.org/conda-forge/noarch/jupyter-ai-2.11.0-pyhd8ed1ab_0.conda#e8ab7975630aff4624d3ed1fa32ac552 +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-pyh5bfe37b_1.conda#11ca195fc8a16770661a387bcce27c36 +https://conda.anaconda.org/conda-forge/noarch/simpervisor-1.0.0-pyhd8ed1ab_0.conda#1f6df17b16d6295a484d59e844fef6ee +https://conda.anaconda.org/conda-forge/noarch/jupyter-server-proxy-4.1.2-pyhd8ed1ab_0.conda#3671520b52215a5a084de08003e6d8cd +https://conda.anaconda.org/conda-forge/noarch/nbdime-4.0.1-pyhd8ed1ab_0.conda#dd76d44a144499f8ff3254fd20cdb7a2 +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-git-0.50.0-pyhd8ed1ab_1.conda#5020cacc18e3d5f62a81513f26ac2cac +https://conda.anaconda.org/conda-forge/noarch/keras-2.12.0-pyhd8ed1ab_0.conda#e6e18b33e8d62200099f2eed98a263b6 +https://conda.anaconda.org/conda-forge/noarch/keras-preprocessing-1.1.2-pyhd8ed1ab_0.tar.bz2#a79b00989a0d89791021902f37fe2f9e +https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2#a8832b479f93521a9e7b5b743803be51 +https://conda.anaconda.org/conda-forge/linux-64/libcap-2.69-h0f662aa_0.conda#25cb5999faa414e5ccb2c1388f62d3d5 +https://conda.anaconda.org/conda-forge/linux-64/libllvm15-15.0.7-hb3ce162_4.conda#8a35df3cbc0c8b12cc8af9473ae75eef +https://conda.anaconda.org/conda-forge/linux-64/libclang13-15.0.7-default_h5d6823c_5.conda#2d694a9ffdcc30e89dea34a8dcdab6ae +https://conda.anaconda.org/conda-forge/linux-64/libclang-15.0.7-default_h127d8a8_5.conda#09b94dd3a7e304df5b83176239347920 +https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda#d4529f4dff3057982a7617c7ac58fde3 +https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda#ee48bf17cc83a00f59ca1494d5646869 +https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.48-h71f35ed_0.conda#4d18d86916705d352d5f4adfb7f0edd3 +https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.10.3-hd590300_0.conda#32d16ad533c59bb0a3c5ffaf16110829 +https://conda.anaconda.org/conda-forge/linux-64/libpq-15.6-h088ca5b_0.conda#99dca02fb74a8dfa3653c6673674f90c +https://conda.anaconda.org/conda-forge/linux-64/libsecret-0.18.8-h329b89f_2.tar.bz2#9d6698e3c9585a75156d86f7ef229093 +https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.4-h59595ed_0.conda#3f1017b4141e943d9bc8739237f749e8 +https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda#ef1910918dd895516a769ed36b5b3a4e +https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-255-h3516f8a_1.conda#3366af27f0b593544a6cd453c7932ac5 +https://conda.anaconda.org/conda-forge/linux-64/libuv-1.46.0-hd590300_0.conda#d23c76f7e6dcd6243d1b6ef5e62d17d2 +https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.41-hd590300_0.conda#81f740407b45e3f9047b3174fa94eb9e +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.7.0-h662e7e4_0.conda#b32c0da42b1f24a98577bb3d7fc0b995 +https://conda.anaconda.org/conda-forge/linux-64/sip-6.7.12-py310hc6cd4ac_0.conda#68d5bfccaba2d89a7812098dd3966d9b +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.12.2-py310hc6cd4ac_5.conda#ef5333594a958b25912002886b82b253 +https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.33-hf1915f5_6.conda#80bf3b277c120dd294b51d404b931a75 +https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.33-hca2cd23_6.conda#e87530d1b12dd7f4e0f856dc07358d60 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda#da0ec11a6454ae19bff5b02ed881a2b1 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.98-h1d7d5a4_0.conda#54b56c2fdf973656b748e0378900ec13 +https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-16.1-hb77b528_5.conda#ac902ff3c1c6d750dd0dfc93a974ab74 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.0-hd590300_1.conda#9bfac7ccd94d54fd21a0501296d60424 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-h8ee46fc_1.conda#9d7bcddf49cbf727730af10e71022c73 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.0-h8ee46fc_1.conda#632413adcd8bc16b515cab87a2932913 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.9-hd590300_1.conda#e995b155d938b6779da6ace6c6b13816 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.1-h8ee46fc_1.conda#90108a432fb5c6150ccfee3f03388656 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xf86vidmodeproto-2.3.1-h7f98852_1002.tar.bz2#3ceea9668625c18f19530de98b15d5b0 +https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.8-hc47bfe8_16.conda#a8dd2dfcd570e3965c73be6c5e03e74f +https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.9-py310h04931ad_5.conda#f4fe7a6e3d7c78c9de048ea9dda21690 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.8.3-py310hff52083_0.conda#e91d183a307d7bd667003291f690cbb0 +https://conda.anaconda.org/conda-forge/linux-64/nodejs-18.19.0-hb753e55_0.conda#0b4a67051e3b3812818ccf2f4ee2fd4e +https://conda.anaconda.org/conda-forge/noarch/papermill-2.5.0-pyhd8ed1ab_0.conda#e6e69b90afd3d0597da8f1f74cc4bd58 +https://conda.anaconda.org/conda-forge/noarch/pox-0.3.4-pyhd8ed1ab_0.conda#d5502ff0ec33b87f7ab7bc373d0e42ff +https://conda.anaconda.org/conda-forge/noarch/ppft-1.7.6.8-pyhd8ed1ab_0.conda#a104e8b98901dc1bc0b916f7e18b5e39 +https://conda.anaconda.org/conda-forge/noarch/pathos-0.3.2-pyhd8ed1ab_1.conda#22ed208c1b54e7c2ec6616665fba6b0f +https://conda.anaconda.org/conda-forge/noarch/pure-sasl-0.6.2-pyhd8ed1ab_0.tar.bz2#ac695eecf21ab48093bc33fd60b4102d +https://conda.anaconda.org/conda-forge/linux-64/py-xgboost-gpu-1.7.6-py310h9840055_6.conda#f148fc36e36779537fd0845178f8a619 +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_0.conda#7e23a61a7fbaedfef6eb0e1ac775c8e5 +https://conda.anaconda.org/conda-forge/linux-64/thrift-0.20.0-py310hc6cd4ac_0.conda#8c6970b9c27073d82bcf757ac644e6cd +https://conda.anaconda.org/conda-forge/noarch/thrift_sasl-0.4.3-pyhd8ed1ab_2.tar.bz2#0340a97c4990a5bb5ecf1a27fef9f9c3 +https://conda.anaconda.org/conda-forge/noarch/pyhive-0.7.0-pyhd8ed1ab_0.conda#a39884e69ebf0c6454a1f8bac6f8361b +https://conda.anaconda.org/conda-forge/linux-64/pykrb5-0.5.1-py310h98feede_1.conda#0329fda0ebbccee7b3e9dbf4a377d0ce +https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.4-pyha770c72_0.conda#37c47ea93ef00dd80d880fc4ba21256a +https://conda.anaconda.org/conda-forge/noarch/pylint-3.0.4-pyhd8ed1ab_0.conda#d536ee47166d8984c6acd8114ac26cf1 +https://conda.anaconda.org/conda-forge/linux-64/pyspnego-0.9.1-py310h2372a71_2.conda#0a99339b277686c7d824abf9de396901 +https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-24.3.7-pyh59ac667_0.conda#24c1a37849fcd4c74923a38b029b208f +https://conda.anaconda.org/conda-forge/linux-64/python-gssapi-1.8.3-py310h98feede_0.conda#a5ea028f63386c53a2b8ff4d09065259 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-jsonrpc-1.1.2-pyhd8ed1ab_0.conda#ff30dbdb341a54947c4fa183900380b7 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-base-1.10.1-pyhd8ed1ab_0.conda#1371f9394b20fd1fe7419a2aa9b38888 +https://conda.anaconda.org/conda-forge/noarch/pytoolconfig-1.2.5-pyhd8ed1ab_0.conda#2d6bdf5a69cfcd1fcc7f2b900cb4082f +https://conda.anaconda.org/conda-forge/noarch/rope-1.13.0-pyhd8ed1ab_0.conda#dffa002fbd3d86924b7992c718efa7bc +https://conda.anaconda.org/conda-forge/noarch/whatthepatch-1.0.5-pyhd8ed1ab_0.conda#e62ea65e1979c18c4c9034567e7105c5 +https://conda.anaconda.org/conda-forge/noarch/yapf-0.40.1-pyhd8ed1ab_0.conda#f269942e802d5e148632143d4c37acc9 +https://conda.anaconda.org/conda-forge/noarch/python-lsp-server-1.10.1-pyhd8ed1ab_0.conda#15b849d7f03b7580a88a3f887db5ad40 +https://conda.anaconda.org/conda-forge/linux-64/pytorch-gpu-2.0.0-cuda112py310h9871d0b_200.conda#7d0ebb619bd0c1a451d167886d2cc904 +https://conda.anaconda.org/conda-forge/noarch/requests-kerberos-0.14.0-pyh707e725_1.conda#411293bff0dc86f9f9bc0c0e1f227623 +https://conda.anaconda.org/conda-forge/linux-64/ripgrep-14.1.0-he8a937b_0.conda#5a476f7033a8a1b9175626b5ebf86d1d +https://conda.anaconda.org/conda-forge/linux-64/sagemaker-code-editor-1.0.0-hcb28a07_0.conda#f53005657267d6b1233c2852fcb84707 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-headless-execution-driver-0.0.12-pyhd8ed1ab_0.conda#fe8919032eb413e76a7802f013a536ee +https://conda.anaconda.org/conda-forge/linux-64/y-py-0.6.2-py310hcb5633a_0.conda#892e912e08ba834aa77ff25f983a4e9e +https://conda.anaconda.org/conda-forge/noarch/ypy-websocket-0.12.4-pyhd8ed1ab_0.conda#7f558701e9a089188cc81d620282ef28 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-common-0.1.14-pyhd8ed1ab_0.conda#27319d665d06aa5c25b6a07d04a4256f +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-emr-extension-0.1.9-pyhd8ed1ab_0.conda#589f97989a6db8b2f21a53881fdd1d97 +https://conda.anaconda.org/conda-forge/noarch/sagemaker-jupyterlab-extension-0.2.0-pyhd8ed1ab_0.conda#9331340b5a844f5ac2c74eda353aa23e +https://conda.anaconda.org/conda-forge/noarch/sagemaker-kernel-wrapper-0.0.2-pyhd8ed1ab_0.conda#99480997ca2429b75169c896cc988cdb +https://conda.anaconda.org/conda-forge/noarch/schema-0.7.5-pyhd8ed1ab_1.conda#750d2ce4311d1502b51ad814407f043d +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.212.0-pyhd8ed1ab_0.conda#eb07d50e30f7b423929f9081118d3979 +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.0.21-pyhd8ed1ab_0.conda#fa0e9b0ca6c3e96d350711b6dbddaeb6 +https://conda.anaconda.org/conda-forge/linux-64/sasl-0.3.1-py310hd8f1fbe_2.tar.bz2#9b15d1759c99ad57ae43080cfca56d73 +https://conda.anaconda.org/conda-forge/linux-64/supervisor-4.2.5-py310hff52083_2.conda#7fe7fa4d80a99dc44ba15ef3e82707af +https://conda.anaconda.org/conda-forge/noarch/termcolor-2.4.0-pyhd8ed1ab_0.conda#a5033708ad9283907c3b1bc1f90d0d0d +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-base-2.12.1-cuda112py310h1d65785_1.conda#4aa4b1fa72143cf84ff5776275f8b40d +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-estimator-2.12.1-cuda112py310ha5e6de5_1.conda#bb21f985bf64adc3751a3a1578a0a69e +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-2.12.1-cuda112py310h457873b_1.conda#eee4abf81acd7c5205f476838713cfba +https://conda.anaconda.org/conda-forge/linux-64/uvicorn-0.28.1-py310hff52083_0.conda#2708791931977a77fa35bc601a571375 diff --git a/build_artifacts/v1/v1.6/v1.6.2/patch_glue_pyspark.json b/build_artifacts/v1/v1.6/v1.6.2/patch_glue_pyspark.json new file mode 100644 index 00000000..ab70fd8d --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/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 and Ray", + "env": {"request_origin": "SageMakerStudioPySparkNotebook", "glue_version": "3.0"}, + "language": "python" +} + diff --git a/build_artifacts/v1/v1.6/v1.6.2/patch_glue_spark.json b/build_artifacts/v1/v1.6/v1.6.2/patch_glue_spark.json new file mode 100644 index 00000000..1bd168e7 --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/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/v1/v1.6/v1.6.2/source-version.txt b/build_artifacts/v1/v1.6/v1.6.2/source-version.txt new file mode 100644 index 00000000..2eda823f --- /dev/null +++ b/build_artifacts/v1/v1.6/v1.6.2/source-version.txt @@ -0,0 +1 @@ +1.6.1 \ No newline at end of file diff --git a/environment.yml b/environment.yml index fbe6253f..78a32952 100644 --- a/environment.yml +++ b/environment.yml @@ -10,3 +10,7 @@ dependencies: - pytest-mock - pytest-xdist - semver + - autoflake + - black + - isort + - pre-commit diff --git a/src/changelog_generator.py b/src/changelog_generator.py index e6a343b2..f4ab3bb8 100644 --- a/src/changelog_generator.py +++ b/src/changelog_generator.py @@ -1,67 +1,65 @@ import os -from utils import ( - get_dir_for_version, - get_semver, - get_match_specs, -) + from semver import Version +from utils import get_dir_for_version, get_match_specs, get_semver + -def _derive_changeset(target_version_dir, source_version_dir, image_config) -> (dict[str, - list[str]], dict[str, str]): - env_in_file_name = image_config['build_args']['ENV_IN_FILENAME'] - env_out_file_name = image_config['env_out_filename'] - required_packages_from_target = get_match_specs( - target_version_dir + "/" + env_in_file_name - ).keys() +def _derive_changeset(target_version_dir, source_version_dir, image_config) -> (dict[str, list[str]], dict[str, str]): + env_in_file_name = image_config["build_args"]["ENV_IN_FILENAME"] + env_out_file_name = image_config["env_out_filename"] + required_packages_from_target = get_match_specs(target_version_dir + "/" + env_in_file_name).keys() target_match_spec_out = get_match_specs(target_version_dir + "/" + env_out_file_name) source_match_spec_out = get_match_specs(source_version_dir + "/" + env_out_file_name) # Note: required_packages_from_source is not currently used. # In the future, If we remove any packages from env.in, at that time required_packages_from_source will be needed. # We only care about the packages which are present in the target version env.in file - installed_packages_from_target = {k: str(v.get('version')).removeprefix('==') - for k, v in target_match_spec_out.items() - if k in required_packages_from_target} + installed_packages_from_target = { + k: str(v.get("version")).removeprefix("==") + for k, v in target_match_spec_out.items() + if k in required_packages_from_target + } # Note: A required package in the target version might not be a required package in the source version # But source version could still have this package pulled as a dependency of a dependency. - installed_packages_from_source = {k: str(v.get('version')).removeprefix('==') for - k, v in source_match_spec_out.items() - if k in required_packages_from_target} - upgrades = {k: [installed_packages_from_source[k], v] for k, v in installed_packages_from_target.items() - if k in installed_packages_from_source and installed_packages_from_source[k] != v} - new_packages = {k: v for k, v in installed_packages_from_target.items() - if k not in installed_packages_from_source} + installed_packages_from_source = { + k: str(v.get("version")).removeprefix("==") + for k, v in source_match_spec_out.items() + if k in required_packages_from_target + } + upgrades = { + k: [installed_packages_from_source[k], v] + for k, v in installed_packages_from_target.items() + if k in installed_packages_from_source and installed_packages_from_source[k] != v + } + new_packages = {k: v for k, v in installed_packages_from_target.items() if k not in installed_packages_from_source} # TODO: Add support for removed packages. return upgrades, new_packages def generate_change_log(target_version: Version, image_config): target_version_dir = get_dir_for_version(target_version) - source_version_txt_file_path = f'{target_version_dir}/source-version.txt' + source_version_txt_file_path = f"{target_version_dir}/source-version.txt" if not os.path.exists(source_version_txt_file_path): - print('[WARN]: Generating CHANGELOG is skipped because \'source-version.txt\' isn\'t ' - 'found.') + print("[WARN]: Generating CHANGELOG is skipped because 'source-version.txt' isn't " "found.") return - with open(source_version_txt_file_path, 'r') as f: + with open(source_version_txt_file_path, "r") as f: source_patch_version = f.readline() source_version = get_semver(source_patch_version) source_version_dir = get_dir_for_version(source_version) - image_type = image_config['image_type'] - upgrades, new_packages = _derive_changeset(target_version_dir, source_version_dir, - image_config) - with open(f'{target_version_dir}/CHANGELOG-{image_type}.md', 'w') as f: - f.write('# Change log: ' + str(target_version) + '(' + image_type + ')\n\n') + image_type = image_config["image_type"] + upgrades, new_packages = _derive_changeset(target_version_dir, source_version_dir, image_config) + with open(f"{target_version_dir}/CHANGELOG-{image_type}.md", "w") as f: + f.write("# Change log: " + str(target_version) + "(" + image_type + ")\n\n") if len(upgrades) != 0: - f.write('## Upgrades: \n\n') - f.write('Package | Previous Version | Current Version\n') - f.write('---|---|---\n') + f.write("## Upgrades: \n\n") + f.write("Package | Previous Version | Current Version\n") + f.write("---|---|---\n") for package in upgrades: - f.write(package + '|' + upgrades[package][0] + '|' - + upgrades[package][1] + '\n') + f.write(package + "|" + upgrades[package][0] + "|" + upgrades[package][1] + "\n") if len(new_packages) != 0: - f.write('\n## What\'s new: \n\n') - f.write('Package | Version \n') - f.write('---|---\n') + f.write("\n## What's new: \n\n") + f.write("Package | Version \n") + f.write("---|---\n") for package in new_packages: - f.write(package + '|' + new_packages[package] + '\n') + f.write(package + "|" + new_packages[package] + "\n") diff --git a/src/config.py b/src/config.py index 9afb899e..1b654e6d 100644 --- a/src/config.py +++ b/src/config.py @@ -1,26 +1,26 @@ _image_generator_configs = [ { - 'build_args': { - 'TAG_FOR_BASE_MICROMAMBA_IMAGE': 'jammy-cuda-11.8.0', - 'CUDA_MAJOR_MINOR_VERSION': '11.8', # Should match the previous one. - 'ENV_IN_FILENAME': 'gpu.env.in', - 'ARG_BASED_ENV_IN_FILENAME': 'gpu.arg_based_env.in', + "build_args": { + "TAG_FOR_BASE_MICROMAMBA_IMAGE": "jammy-cuda-11.8.0", + "CUDA_MAJOR_MINOR_VERSION": "11.8", # Should match the previous one. + "ENV_IN_FILENAME": "gpu.env.in", + "ARG_BASED_ENV_IN_FILENAME": "gpu.arg_based_env.in", }, - 'additional_packages_env_in_file': 'gpu.additional_packages_env.in', - 'image_tag_generator': '{image_version}-gpu', - 'env_out_filename': 'gpu.env.out', - 'pytest_flags': ['--use-gpu'], - 'image_type': 'gpu' + "additional_packages_env_in_file": "gpu.additional_packages_env.in", + "image_tag_generator": "{image_version}-gpu", + "env_out_filename": "gpu.env.out", + "pytest_flags": ["--use-gpu"], + "image_type": "gpu", }, { - 'build_args': { - 'TAG_FOR_BASE_MICROMAMBA_IMAGE': 'jammy', - 'ENV_IN_FILENAME': 'cpu.env.in', + "build_args": { + "TAG_FOR_BASE_MICROMAMBA_IMAGE": "jammy", + "ENV_IN_FILENAME": "cpu.env.in", }, - 'additional_packages_env_in_file': 'cpu.additional_packages_env.in', - 'image_tag_generator': '{image_version}-cpu', - 'env_out_filename': 'cpu.env.out', - 'pytest_flags': [], - 'image_type': 'cpu' - } + "additional_packages_env_in_file": "cpu.additional_packages_env.in", + "image_tag_generator": "{image_version}-cpu", + "env_out_filename": "cpu.env.out", + "pytest_flags": [], + "image_type": "cpu", + }, ] diff --git a/src/dependency_upgrader.py b/src/dependency_upgrader.py index 6d7703e1..e8b0c9da 100644 --- a/src/dependency_upgrader.py +++ b/src/dependency_upgrader.py @@ -1,31 +1,31 @@ from semver import Version -_MAJOR = 'major' -_MINOR = 'minor' -_PATCH = 'patch' +_MAJOR = "major" +_MINOR = "minor" +_PATCH = "patch" def _get_dependency_upper_bound_for_runtime_upgrade(dependency_name: str, lower_bound: str, runtime_upgrade_type): metadata = _dependency_metadata.get(dependency_name, None) - version_upgrade_strategy = 'semver' if metadata is None else metadata['version_upgrade_strategy'] + version_upgrade_strategy = "semver" if metadata is None else metadata["version_upgrade_strategy"] - func = _version_upgrade_metadata[version_upgrade_strategy]['func'] + func = _version_upgrade_metadata[version_upgrade_strategy]["func"] # Version strings on conda-forge follow PEP standards rather than SemVer, which support # version strings such as X.Y.Z.postN, X.Y.Z.preN. These cause errors in semver.Version.parse # so we keep the first 3 entries as version string. - if lower_bound.count('.') > 2: - lower_bound = '.'.join(lower_bound.split('.')[:3]) + if lower_bound.count(".") > 2: + lower_bound = ".".join(lower_bound.split(".")[:3]) return func(lower_bound, runtime_upgrade_type) def _get_dependency_upper_bound_for_semver(lower_bound: str, runtime_upgrade_type): lower_semver = Version.parse(lower_bound, optional_minor_and_patch=True) if runtime_upgrade_type == _MAJOR: - return '' # No upper bound. + return "" # No upper bound. elif runtime_upgrade_type == _MINOR: - return f',<{lower_semver.bump_major()}' + return f",<{lower_semver.bump_major()}" elif runtime_upgrade_type == _PATCH: - return f',<{lower_semver.bump_minor()}' + return f",<{lower_semver.bump_minor()}" else: raise Exception() @@ -33,11 +33,11 @@ def _get_dependency_upper_bound_for_semver(lower_bound: str, runtime_upgrade_typ def _get_dependency_upper_bound_for_pythonesque(lower_bound: str, runtime_upgrade_type): lower_semver = Version.parse(lower_bound, optional_minor_and_patch=True) if runtime_upgrade_type == _MAJOR: - return '' # No upper bound. + return "" # No upper bound. elif runtime_upgrade_type == _MINOR: - return f',<{lower_semver.bump_minor()}' + return f",<{lower_semver.bump_minor()}" elif runtime_upgrade_type == _PATCH: - return f',<{lower_semver.bump_minor()}' + return f",<{lower_semver.bump_minor()}" else: raise Exception() @@ -50,21 +50,13 @@ def _get_dependency_upper_bound_for_pythonesque(lower_bound: str, runtime_upgrad # happens in the given month). So, 2nd release in December 2022 was versioned as '2022.12.1'. # In Amazon SageMaker Distribution, we want to move to a new month only during a minor version upgrade and new year # during a major version upgrade. - 'semver': { - 'func': _get_dependency_upper_bound_for_semver - }, + "semver": {"func": _get_dependency_upper_bound_for_semver}, # Some dependencies follow, for lack of a better word, "python style" release cycles. For e.g., even if Python does # a minor version upgrade from 3.9 to 3.10, we will only introduce 3.10 in Amazon SageMaker Distribution as part of # a major version upgrade. In other words, for dependencies below, minor version upgrades are treated as major # version upgrades in Amazon SageMaker Distribution. - 'pythonesque': { - 'func': _get_dependency_upper_bound_for_pythonesque - } + "pythonesque": {"func": _get_dependency_upper_bound_for_pythonesque}, } -_dependency_metadata = { - 'python': { - 'version_upgrade_strategy': 'pythonesque' - } -} +_dependency_metadata = {"python": {"version_upgrade_strategy": "pythonesque"}} diff --git a/src/main.py b/src/main.py index c1448f1b..464053af 100644 --- a/src/main.py +++ b/src/main.py @@ -4,7 +4,6 @@ import glob import os import shutil -from typing import List import boto3 import docker @@ -13,16 +12,21 @@ from docker.errors import BuildError, ContainerError from semver import Version -from dependency_upgrader import _get_dependency_upper_bound_for_runtime_upgrade, _MAJOR, _MINOR, _PATCH from changelog_generator import generate_change_log -from release_notes_generator import generate_release_notes from config import _image_generator_configs +from dependency_upgrader import ( + _MAJOR, + _MINOR, + _PATCH, + _get_dependency_upper_bound_for_runtime_upgrade, +) from package_staleness import generate_package_staleness_report +from release_notes_generator import generate_release_notes from utils import ( get_dir_for_version, - is_exists_dir_for_version, + get_match_specs, get_semver, - get_match_specs + is_exists_dir_for_version, ) _docker_client = docker.from_env() @@ -44,8 +48,9 @@ def create_and_get_semver_dir(version: Version, exist_ok: bool = False): def _delete_all_files_except_additional_packages_input_files(base_version_dir): - additional_package_env_in_files = [image_generator_config['additional_packages_env_in_file'] - for image_generator_config in _image_generator_configs] + additional_package_env_in_files = [ + image_generator_config["additional_packages_env_in_file"] for image_generator_config in _image_generator_configs + ] for filename in os.listdir(base_version_dir): if filename not in additional_package_env_in_files: file_path = os.path.join(base_version_dir, filename) @@ -55,18 +60,18 @@ def _delete_all_files_except_additional_packages_input_files(base_version_dir): elif os.path.isdir(file_path): shutil.rmtree(file_path) except Exception as e: - print('Failed to delete %s. Reason: %s' % (file_path, e)) + print("Failed to delete %s. Reason: %s" % (file_path, e)) def _create_new_version_artifacts(args): runtime_version_upgrade_type = args.runtime_version_upgrade_type if runtime_version_upgrade_type == _PATCH: - runtime_version_upgrade_func = 'bump_patch' + runtime_version_upgrade_func = "bump_patch" elif runtime_version_upgrade_type == _MINOR: - runtime_version_upgrade_func = 'bump_minor' + runtime_version_upgrade_func = "bump_minor" elif runtime_version_upgrade_type == _MAJOR: - runtime_version_upgrade_func = 'bump_major' + runtime_version_upgrade_func = "bump_major" else: raise Exception() @@ -85,18 +90,19 @@ def _create_new_version_artifacts(args): new_version_dir = create_and_get_semver_dir(next_version, args.force) for image_generator_config in _image_generator_configs: - _create_new_version_conda_specs(base_version_dir, new_version_dir, runtime_version_upgrade_type, - image_generator_config) + _create_new_version_conda_specs( + base_version_dir, new_version_dir, runtime_version_upgrade_type, image_generator_config + ) _copy_static_files(base_version_dir, new_version_dir, str(next_version.major), runtime_version_upgrade_type) - with open(f'{new_version_dir}/source-version.txt', 'w') as f: + with open(f"{new_version_dir}/source-version.txt", "w") as f: f.write(args.base_patch_version) def _copy_static_files(base_version_dir, new_version_dir, new_version_major, runtime_version_upgrade_type): - for f in glob.glob(f'{base_version_dir}/gpu.arg_based_env.in'): + for f in glob.glob(f"{base_version_dir}/gpu.arg_based_env.in"): shutil.copy2(f, new_version_dir) - for f in glob.glob(f'{base_version_dir}/patch_*'): + for f in glob.glob(f"{base_version_dir}/patch_*"): shutil.copy2(f, new_version_dir) # For patches, get Dockerfile+dirs from base patch @@ -104,26 +110,27 @@ def _copy_static_files(base_version_dir, new_version_dir, new_version_major, run if runtime_version_upgrade_type == _PATCH: base_path = base_version_dir else: - base_path = f'template/v{new_version_major}' - for f in glob.glob(os.path.relpath(f'{base_path}/Dockerfile')): + base_path = f"template/v{new_version_major}" + for f in glob.glob(os.path.relpath(f"{base_path}/Dockerfile")): shutil.copy2(f, new_version_dir) if int(new_version_major) >= 1: # dirs directory doesn't exist for v0. It was introduced only for v1 - dirs_relative_path = os.path.relpath(f'{base_path}/dirs') + dirs_relative_path = os.path.relpath(f"{base_path}/dirs") for f in glob.glob(dirs_relative_path): - shutil.copytree(f, os.path.join(new_version_dir, 'dirs')) + shutil.copytree(f, os.path.join(new_version_dir, "dirs")) + -def _create_new_version_conda_specs(base_version_dir, new_version_dir, runtime_version_upgrade_type, - image_generator_config): - env_in_filename = image_generator_config['build_args']['ENV_IN_FILENAME'] - additional_packages_env_in_filename = image_generator_config['additional_packages_env_in_file'] - env_out_filename = image_generator_config['env_out_filename'] +def _create_new_version_conda_specs( + base_version_dir, new_version_dir, runtime_version_upgrade_type, image_generator_config +): + env_in_filename = image_generator_config["build_args"]["ENV_IN_FILENAME"] + additional_packages_env_in_filename = image_generator_config["additional_packages_env_in_file"] + env_out_filename = image_generator_config["env_out_filename"] - base_match_specs_in = get_match_specs(f'{base_version_dir}/{env_in_filename}') + base_match_specs_in = get_match_specs(f"{base_version_dir}/{env_in_filename}") - base_match_specs_out = get_match_specs(f'{base_version_dir}/{env_out_filename}') - additional_packages_match_specs_in = \ - get_match_specs(f'{new_version_dir}/{additional_packages_env_in_filename}') + base_match_specs_out = get_match_specs(f"{base_version_dir}/{env_out_filename}") + additional_packages_match_specs_in = get_match_specs(f"{new_version_dir}/{additional_packages_env_in_filename}") # Add all the match specs from the previous version. # If a package is present in both additional packages as well as the previous version, then @@ -140,17 +147,17 @@ def _create_new_version_conda_specs(base_version_dir, new_version_dir, runtime_v else: channel = match_out.get("channel").channel_name - min_version_inclusive = match_out.get('version') - assert str(min_version_inclusive).startswith('==') - min_version_inclusive = str(min_version_inclusive).removeprefix('==') + min_version_inclusive = match_out.get("version") + assert str(min_version_inclusive).startswith("==") + min_version_inclusive = str(min_version_inclusive).removeprefix("==") - max_version_str = _get_dependency_upper_bound_for_runtime_upgrade(package_name, - min_version_inclusive, - runtime_version_upgrade_type) + max_version_str = _get_dependency_upper_bound_for_runtime_upgrade( + package_name, min_version_inclusive, runtime_version_upgrade_type + ) out.append(f"{channel}::{package_name}[version='>={min_version_inclusive}{max_version_str}']") - with open(f'{new_version_dir}/{env_in_filename}', 'w') as f: + with open(f"{new_version_dir}/{env_in_filename}", "w") as f: f.write("# This file is auto-generated.\n") f.write("\n".join(out)) f.write("\n") # This new line is pretty important. See code documentation in Dockerfile for the reasoning. @@ -170,62 +177,65 @@ def create_patch_version_artifacts(args): def build_images(args): target_version = get_semver(args.target_patch_version) - image_ids, image_versions = _build_local_images(target_version, args.target_ecr_repo, - args.force, args.skip_tests) + image_ids, image_versions = _build_local_images(target_version, args.target_ecr_repo, args.force, args.skip_tests) generate_release_notes(target_version) + # Upload to ECR before running tests so that only the exact image which we tested goes to public + # TODO: Move after tests are stabilized + if args.target_ecr_repo is not None: + _push_images_upstream(image_versions, args.region) + if not args.skip_tests: - print(f'Will now run tests against: {image_ids}') + print(f"Will now run tests against: {image_ids}") _test_local_images(image_ids, args.target_patch_version) else: - print('Will skip tests.') - - # We only upload to ECR once all images are successfully built locally. - if args.target_ecr_repo is not None: - _push_images_upstream(image_versions, args.region) + print("Will skip tests.") def _push_images_upstream(image_versions_to_push: list[dict[str, str]], region: str): - print(f'Will now push the images to ECR: {image_versions_to_push}') + print(f"Will now push the images to ECR: {image_versions_to_push}") for i in image_versions_to_push: - username, password = _get_ecr_credentials(region, i['repository']) - _docker_client.images.push(repository=i['repository'], tag=i['tag'], - auth_config={'username': username, 'password': password}) + username, password = _get_ecr_credentials(region, i["repository"]) + _docker_client.images.push( + repository=i["repository"], tag=i["tag"], auth_config={"username": username, "password": password} + ) - print(f'Successfully pushed these images to ECR: {image_versions_to_push}') + print(f"Successfully pushed these images to ECR: {image_versions_to_push}") def _test_local_images(image_ids_to_test: list[str], target_version: str): assert len(image_ids_to_test) == len(_image_generator_configs) - for (image_id, config) in zip(image_ids_to_test, _image_generator_configs): - exit_code = pytest.main(['-n', 'auto', '-m', config['image_type'], '--local-image-version', - target_version, *config['pytest_flags']]) + exit_codes = [] + image_ids = [] + for image_id, config in zip(image_ids_to_test, _image_generator_configs): + exit_code = pytest.main( + ["-n", "2", "-m", config["image_type"], "--local-image-version", target_version, *config["pytest_flags"]] + ) - assert exit_code == 0, f'Tests failed with exit code: {exit_code} against: {image_id}' + assert exit_code == 0, f"Tests failed with exit codes: {exit_codes} against: {image_ids}" - print(f'Tests ran successfully against: {image_ids_to_test}') + print(f"Tests ran successfully against: {image_ids_to_test}") def _get_config_for_image(target_version_dir: str, image_generator_config, force_rebuild) -> dict: - if not os.path.exists(target_version_dir + "/" + image_generator_config["env_out_filename"]) \ - or force_rebuild: + if not os.path.exists(target_version_dir + "/" + image_generator_config["env_out_filename"]) or force_rebuild: return image_generator_config config_for_image = copy.deepcopy(image_generator_config) # Use the existing env.out to create the conda environment. Pass that as env.in - config_for_image['build_args']['ENV_IN_FILENAME'] = \ - image_generator_config["env_out_filename"] + config_for_image["build_args"]["ENV_IN_FILENAME"] = image_generator_config["env_out_filename"] # Remove ARG_BASED_ENV_IN_FILENAME if it exists - config_for_image['build_args'].pop('ARG_BASED_ENV_IN_FILENAME', None) + config_for_image["build_args"].pop("ARG_BASED_ENV_IN_FILENAME", None) return config_for_image # Returns a tuple of: 1/ list of actual images generated; 2/ list of tagged images. A given image can be tagged by # multiple different strings - for e.g., a CPU image can be tagged as '1.3.2-cpu', '1.3-cpu', '1-cpu' and/or # 'latest-cpu'. Therefore, (1) is strictly a subset of (2). -def _build_local_images(target_version: Version, target_ecr_repo_list: list[str], force: bool, - skip_tests=False) -> (list[str], list[dict[str, str]]): +def _build_local_images( + target_version: Version, target_ecr_repo_list: list[str], force: bool, skip_tests=False +) -> (list[str], list[dict[str, str]]): target_version_dir = get_dir_for_version(target_version) generated_image_ids = [] @@ -234,26 +244,27 @@ def _build_local_images(target_version: Version, target_ecr_repo_list: list[str] for image_generator_config in _image_generator_configs: config = _get_config_for_image(target_version_dir, image_generator_config, force) try: - image, log_gen = _docker_client.images.build(path=target_version_dir, rm=True, - pull=True, buildargs=config['build_args']) + image, log_gen = _docker_client.images.build( + path=target_version_dir, rm=True, pull=True, buildargs=config["build_args"] + ) except BuildError as e: for line in e.build_log: - if 'stream' in line: - print(line['stream'].strip()) + if "stream" in line: + print(line["stream"].strip()) # After printing the logs, raise the exception (which is the old behavior) raise - print(f'Successfully built an image with id: {image.id}') + print(f"Successfully built an image with id: {image.id}") generated_image_ids.append(image.id) try: - container_logs = _docker_client.containers.run(image=image.id, detach=False, - auto_remove=True, - command='micromamba env export --explicit') + container_logs = _docker_client.containers.run( + image=image.id, detach=False, auto_remove=True, command="micromamba env export --explicit" + ) except ContainerError as e: - print(e.container.logs().decode('utf-8')) + print(e.container.logs().decode("utf-8")) # After printing the logs, raise the exception (which is the old behavior) raise - with open(f'{target_version_dir}/{config["env_out_filename"]}', 'wb') as f: + with open(f'{target_version_dir}/{config["env_out_filename"]}', "wb") as f: f.write(container_logs) # Generate change logs. Use the original image generator config which contains the name @@ -261,17 +272,18 @@ def _build_local_images(target_version: Version, target_ecr_repo_list: list[str] generate_change_log(target_version, image_generator_config) version_tags_to_apply = _get_version_tags(target_version, config["env_out_filename"]) - image_tags_to_apply = [config['image_tag_generator'].format(image_version=i) for i in version_tags_to_apply] + image_tags_to_apply = [config["image_tag_generator"].format(image_version=i) for i in version_tags_to_apply] if target_ecr_repo_list is not None: for target_ecr_repo in target_ecr_repo_list: for t in image_tags_to_apply: image.tag(target_ecr_repo, tag=t) - generated_image_versions.append({'repository': target_ecr_repo, 'tag': t}) + generated_image_versions.append({"repository": target_ecr_repo, "tag": t}) # Tag the image for testing - image.tag('localhost/sagemaker-distribution', - config['image_tag_generator'].format(image_version=str(target_version))) + image.tag( + "localhost/sagemaker-distribution", config["image_tag_generator"].format(image_version=str(target_version)) + ) return generated_image_ids, generated_image_versions @@ -289,7 +301,7 @@ def _get_version_tags(target_version: Version, env_out_file_name: str) -> list[s # If we were to add '2.6', check if '2.6.(x+1)' is present. if not is_exists_dir_for_version(target_version.bump_patch(), env_out_file_name): - res.append(f'{target_version.major}.{target_version.minor}') + res.append(f"{target_version.major}.{target_version.minor}") else: return res @@ -301,19 +313,19 @@ def _get_version_tags(target_version: Version, env_out_file_name: str) -> list[s # If we were to add 'latest', check if '3.0.0' is present. if not is_exists_dir_for_version(target_version.bump_major(), env_out_file_name): - res.append('latest') + res.append("latest") return res def _get_ecr_credentials(region, repository: str) -> (str, str): - _ecr_client_config_name = 'ecr-public' if repository.startswith('public.ecr.aws') else 'ecr' + _ecr_client_config_name = "ecr-public" if repository.startswith("public.ecr.aws") else "ecr" _ecr_client = boto3.client(_ecr_client_config_name, region_name=region) - _authorization_data = _ecr_client.get_authorization_token()['authorizationData'] - if _ecr_client_config_name == 'ecr': + _authorization_data = _ecr_client.get_authorization_token()["authorizationData"] + if _ecr_client_config_name == "ecr": # If we are using the ecr private client, then fetch the first index from authorizationData _authorization_data = _authorization_data[0] - return base64.b64decode(_authorization_data['authorizationToken']).decode().split(':') + return base64.b64decode(_authorization_data["authorizationToken"]).decode().split(":") def get_arg_parser(): @@ -324,85 +336,68 @@ def get_arg_parser(): subparsers = parser.add_subparsers(dest="subcommand") create_major_version_parser = subparsers.add_parser( - "create-major-version-artifacts", - help="Creates a new major version of Amazon SageMaker Distribution." + "create-major-version-artifacts", help="Creates a new major version of Amazon SageMaker Distribution." ) - create_major_version_parser.set_defaults(func=create_major_version_artifacts, - runtime_version_upgrade_type=_MAJOR) + create_major_version_parser.set_defaults(func=create_major_version_artifacts, runtime_version_upgrade_type=_MAJOR) create_minor_version_parser = subparsers.add_parser( - "create-minor-version-artifacts", - help="Creates a new minor version of Amazon SageMaker Distribution." + "create-minor-version-artifacts", help="Creates a new minor version of Amazon SageMaker Distribution." ) - create_minor_version_parser.set_defaults(func=create_minor_version_artifacts, - runtime_version_upgrade_type=_MINOR) + create_minor_version_parser.set_defaults(func=create_minor_version_artifacts, runtime_version_upgrade_type=_MINOR) create_patch_version_parser = subparsers.add_parser( - "create-patch-version-artifacts", - help="Creates a new patch version of Amazon SageMaker Distribution." + "create-patch-version-artifacts", help="Creates a new patch version of Amazon SageMaker Distribution." ) - create_patch_version_parser.set_defaults(func=create_patch_version_artifacts, - runtime_version_upgrade_type=_PATCH) + create_patch_version_parser.set_defaults(func=create_patch_version_artifacts, runtime_version_upgrade_type=_PATCH) # Common arguments for p in [create_major_version_parser, create_minor_version_parser, create_patch_version_parser]: p.add_argument( "--base-patch-version", required=True, - help="Specify the base patch version from which a new version should be created." + help="Specify the base patch version from which a new version should be created.", ) p.add_argument( "--pre-release-identifier", - help="Optionally specify the pre-release identifier for this new version that should " - "be created." + help="Optionally specify the pre-release identifier for this new version that should " "be created.", ) p.add_argument( "--force", - action='store_true', - help="Overwrites any existing directory corresponding to the new version that will be generated." + action="store_true", + help="Overwrites any existing directory corresponding to the new version that will be generated.", ) - build_image_parser = subparsers.add_parser( - "build", - help="Builds a new image from the Dockerfile." - ) + build_image_parser = subparsers.add_parser("build", help="Builds a new image from the Dockerfile.") build_image_parser.add_argument( "--target-patch-version", required=True, - help="Specify the target version of Amazon SageMaker Distribution for which an image needs to be built." + help="Specify the target version of Amazon SageMaker Distribution for which an image needs to be built.", ) build_image_parser.add_argument( - "--skip-tests", - action='store_true', - help="Disable running tests against the newly generated Docker image." + "--skip-tests", action="store_true", help="Disable running tests against the newly generated Docker image." ) build_image_parser.add_argument( "--force", - action='store_true', + action="store_true", help="Builds a new docker image which will fetch the latest versions of each package in " - "the conda environment. Any existing env.out file will be overwritten." + "the conda environment. Any existing env.out file will be overwritten.", ) build_image_parser.add_argument( "--target-ecr-repo", - action='append', - help="Specify the AWS ECR repository in which this image needs to be uploaded." - ) - build_image_parser.add_argument( - "--region", - help="Specify the region of the ECR repository." + action="append", + help="Specify the AWS ECR repository in which this image needs to be uploaded.", ) + build_image_parser.add_argument("--region", help="Specify the region of the ECR repository.") build_image_parser.set_defaults(func=build_images) package_staleness_parser = subparsers.add_parser( "generate-staleness-report", - help="Generates package staleness report for each of the marquee packages in the given " - "image version." + help="Generates package staleness report for each of the marquee packages in the given " "image version.", ) package_staleness_parser.set_defaults(func=generate_package_staleness_report) package_staleness_parser.add_argument( "--target-patch-version", required=True, - help="Specify the base patch version for which the package staleness report needs to be " - "generated." + help="Specify the base patch version for which the package staleness report needs to be " "generated.", ) return parser @@ -415,5 +410,5 @@ def parse_args(parser): args.func(args) -if __name__ == '__main__': +if __name__ == "__main__": parse_args(get_arg_parser()) diff --git a/src/package_staleness.py b/src/package_staleness.py index 21d4482a..6a113860 100644 --- a/src/package_staleness.py +++ b/src/package_staleness.py @@ -1,17 +1,14 @@ -import conda.cli.python_api import json -from utils import ( - get_dir_for_version, - get_semver, - get_match_specs, -) + +import conda.cli.python_api +from conda.models.match_spec import MatchSpec + from config import _image_generator_configs from dependency_upgrader import _dependency_metadata -from conda.models.match_spec import MatchSpec +from utils import get_dir_for_version, get_match_specs, get_semver -def _get_package_versions_in_upstream(target_packages_match_spec_out, target_version) \ - -> dict[str, str]: +def _get_package_versions_in_upstream(target_packages_match_spec_out, target_version) -> dict[str, str]: package_to_version_mapping = {} is_major_version_release = target_version.minor == 0 and target_version.patch == 0 is_minor_version_release = target_version.patch == 0 and not is_major_version_release @@ -19,13 +16,13 @@ def _get_package_versions_in_upstream(target_packages_match_spec_out, target_ver # Execute a conda search api call in the linux-64 subdirectory # packages such as pytorch-gpu are present only in linux-64 sub directory match_spec_out = target_packages_match_spec_out[package] - package_version = str(match_spec_out.get("version")).removeprefix('==') + package_version = str(match_spec_out.get("version")).removeprefix("==") package_version = get_semver(package_version) channel = match_spec_out.get("channel").channel_name - subdir_filter = '[subdir=' + match_spec_out.get('subdir') + ']' - search_result = conda.cli.python_api.run_command('search', channel + '::' + package + - '>=' + str(package_version) + - subdir_filter, '--json') + subdir_filter = "[subdir=" + match_spec_out.get("subdir") + "]" + search_result = conda.cli.python_api.run_command( + "search", channel + "::" + package + ">=" + str(package_version) + subdir_filter, "--json" + ) # Load the first result as json. The API sends a json string inside an array package_metadata = json.loads(search_result[0])[package] # Response is of the structure @@ -33,58 +30,62 @@ def _get_package_versions_in_upstream(target_packages_match_spec_out, target_ver # }, ..., {'url':, 'dependencies': , 'version': # }] # We only care about the version number in the last index - package_version_in_conda = '' + package_version_in_conda = "" if is_major_version_release: - latest_package_version_in_conda = package_metadata[-1]['version'] + latest_package_version_in_conda = package_metadata[-1]["version"] elif is_minor_version_release: package_major_version_prefix = str(package_version.major) + "." - latest_package_version_in_conda = [x['version'] for x in package_metadata if - x['version'].startswith(package_major_version_prefix)][-1] + latest_package_version_in_conda = [ + x["version"] for x in package_metadata if x["version"].startswith(package_major_version_prefix) + ][-1] else: - package_minor_version_prefix = \ - ".".join([str(package_version.major), str(package_version.minor)]) + "." - latest_package_version_in_conda = [x['version'] for x in package_metadata if - x['version'].startswith(package_minor_version_prefix)][-1] + package_minor_version_prefix = ".".join([str(package_version.major), str(package_version.minor)]) + "." + latest_package_version_in_conda = [ + x["version"] for x in package_metadata if x["version"].startswith(package_minor_version_prefix) + ][-1] package_to_version_mapping[package] = latest_package_version_in_conda return package_to_version_mapping -def _generate_report(package_versions_in_upstream, target_packages_match_spec_out, image_config, - version): - print('\n# Staleness Report: ' + str(version) + '(' + image_config['image_type'] + ')\n') - print('Package | Current Version in the Distribution image | Latest Relevant Version in ' - 'Upstream') - print('---|---|---') +def _generate_report(package_versions_in_upstream, target_packages_match_spec_out, image_config, version): + print("\n# Staleness Report: " + str(version) + "(" + image_config["image_type"] + ")\n") + print("Package | Current Version in the Distribution image | Latest Relevant Version in " "Upstream") + print("---|---|---") for package in package_versions_in_upstream: - version_in_sagemaker_distribution = \ - str(target_packages_match_spec_out[package].get('version')).removeprefix('==') + version_in_sagemaker_distribution = str(target_packages_match_spec_out[package].get("version")).removeprefix( + "==" + ) if version_in_sagemaker_distribution == package_versions_in_upstream[package]: - print(package + '|' + version_in_sagemaker_distribution + '|' + - package_versions_in_upstream[package]) + print(package + "|" + version_in_sagemaker_distribution + "|" + package_versions_in_upstream[package]) else: - print('${\color{red}' + package + '}$' + '|' + version_in_sagemaker_distribution + - '|' + package_versions_in_upstream[package]) + print( + "${\color{red}" + + package + + "}$" + + "|" + + version_in_sagemaker_distribution + + "|" + + package_versions_in_upstream[package] + ) -def _get_installed_package_versions_and_conda_versions(image_config, target_version_dir, - target_version) \ - -> (dict[str, MatchSpec], dict[str, str]): - env_in_file_name = image_config['build_args']['ENV_IN_FILENAME'] - env_out_file_name = image_config['env_out_filename'] - required_packages_from_target = get_match_specs( - target_version_dir + "/" + env_in_file_name - ).keys() +def _get_installed_package_versions_and_conda_versions( + image_config, target_version_dir, target_version +) -> (dict[str, MatchSpec], dict[str, str]): + env_in_file_name = image_config["build_args"]["ENV_IN_FILENAME"] + env_out_file_name = image_config["env_out_filename"] + required_packages_from_target = get_match_specs(target_version_dir + "/" + env_in_file_name).keys() match_spec_out = get_match_specs(target_version_dir + "/" + env_out_file_name) # We only care about packages which are present in env.in # Remove Python from the dictionary, we don't want to track python version as part of our # staleness report. - target_packages_match_spec_out = {k: v for k, v in match_spec_out.items() - if k in required_packages_from_target and k - not in _dependency_metadata} - latest_package_versions_in_upstream = \ - _get_package_versions_in_upstream(target_packages_match_spec_out, - target_version) + target_packages_match_spec_out = { + k: v for k, v in match_spec_out.items() if k in required_packages_from_target and k not in _dependency_metadata + } + latest_package_versions_in_upstream = _get_package_versions_in_upstream( + target_packages_match_spec_out, target_version + ) return target_packages_match_spec_out, latest_package_versions_in_upstream @@ -92,8 +93,10 @@ def generate_package_staleness_report(args): target_version = get_semver(args.target_patch_version) target_version_dir = get_dir_for_version(target_version) for image_config in _image_generator_configs: - target_packages_match_spec_out, latest_package_versions_in_upstream = \ - _get_installed_package_versions_and_conda_versions(image_config, target_version_dir, - target_version) - _generate_report(latest_package_versions_in_upstream, target_packages_match_spec_out, - image_config, target_version) + ( + target_packages_match_spec_out, + latest_package_versions_in_upstream, + ) = _get_installed_package_versions_and_conda_versions(image_config, target_version_dir, target_version) + _generate_report( + latest_package_versions_in_upstream, target_packages_match_spec_out, image_config, target_version + ) diff --git a/src/release_notes_generator.py b/src/release_notes_generator.py index 83c45c3c..9993aa92 100644 --- a/src/release_notes_generator.py +++ b/src/release_notes_generator.py @@ -1,25 +1,25 @@ import os -from config import _image_generator_configs -from utils import ( - get_dir_for_version, - get_match_specs, -) + from semver import Version +from config import _image_generator_configs +from utils import get_dir_for_version, get_match_specs + -def _get_installed_packages(target_version_dir, image_config) -> (dict[str, str]): - env_in_file_name = image_config['build_args']['ENV_IN_FILENAME'] - env_out_file_name = image_config['env_out_filename'] +def _get_installed_packages(target_version_dir, image_config) -> dict[str, str]: + env_in_file_name = image_config["build_args"]["ENV_IN_FILENAME"] + env_out_file_name = image_config["env_out_filename"] env_in_file_path = target_version_dir + "/" + env_in_file_name if not os.path.exists(env_in_file_path): return {} - required_packages_from_target = get_match_specs( - target_version_dir + "/" + env_in_file_name - ).keys() + required_packages_from_target = get_match_specs(target_version_dir + "/" + env_in_file_name).keys() target_match_spec_out = get_match_specs(target_version_dir + "/" + env_out_file_name) # We only care about the packages which are present in the target version env.in file - return {k: str(v.get('version')).removeprefix('==') - for k, v in target_match_spec_out.items() if k in required_packages_from_target} + return { + k: str(v.get("version")).removeprefix("==") + for k, v in target_match_spec_out.items() + if k in required_packages_from_target + } def _get_package_to_image_type_mapping(image_type_package_metadata): @@ -39,8 +39,9 @@ def _get_package_to_image_type_mapping(image_type_package_metadata): def _get_image_type_package_metadata(target_version_dir): image_type_package_metadata = {} for image_generator_config in _image_generator_configs: - image_type_package_metadata[image_generator_config['image_type']] = _get_installed_packages( - target_version_dir, image_generator_config) + image_type_package_metadata[image_generator_config["image_type"]] = _get_installed_packages( + target_version_dir, image_generator_config + ) return image_type_package_metadata @@ -51,19 +52,22 @@ def generate_release_notes(target_version: Version): image_type_package_metadata = _get_image_type_package_metadata(target_version_dir) package_to_image_type_mapping = _get_package_to_image_type_mapping(image_type_package_metadata) - with open(f'{target_version_dir}/RELEASE.md', 'w') as f: - f.write('# Release notes: ' + str(target_version) + '\n\n') - f.write('Package ') - table_separator = '---' + with open(f"{target_version_dir}/RELEASE.md", "w") as f: + f.write("# Release notes: " + str(target_version) + "\n\n") + f.write("Package ") + table_separator = "---" for image_type in image_type_package_metadata.keys(): - f.write('| ' + image_type) - table_separator += '|---' - f.write('\n') - f.write(table_separator + '\n') + f.write("| " + image_type) + table_separator += "|---" + f.write("\n") + f.write(table_separator + "\n") for package in package_to_image_type_mapping.keys(): f.write(package) for image_type in image_type_package_metadata.keys(): - version = package_to_image_type_mapping[package][image_type] if image_type in \ - package_to_image_type_mapping[package] else ' ' - f.write('|' + version) - f.write('\n') + version = ( + package_to_image_type_mapping[package][image_type] + if image_type in package_to_image_type_mapping[package] + else " " + ) + f.write("|" + version) + f.write("\n") diff --git a/src/utils.py b/src/utils.py index eec0776d..daf1e17e 100644 --- a/src/utils.py +++ b/src/utils.py @@ -1,33 +1,36 @@ import os -from semver import Version -from conda.models.match_spec import MatchSpec + from conda.env.specs import RequirementsSpec +from conda.models.match_spec import MatchSpec +from semver import Version def get_dir_for_version(version: Version) -> str: - version_prerelease_suffix = f'/v{version.major}.{version.minor}.{version.patch}-' \ - f'{version.prerelease}' if version.prerelease else '' - return os.path.relpath(f'build_artifacts/v{version.major}/v{version.major}.{version.minor}/' - f'v{version.major}.{version.minor}.{version.patch}' - f'{version_prerelease_suffix}') + version_prerelease_suffix = ( + f"/v{version.major}.{version.minor}.{version.patch}-" f"{version.prerelease}" if version.prerelease else "" + ) + return os.path.relpath( + f"build_artifacts/v{version.major}/v{version.major}.{version.minor}/" + f"v{version.major}.{version.minor}.{version.patch}" + f"{version_prerelease_suffix}" + ) -def is_exists_dir_for_version(version: Version, file_name_to_verify_existence='Dockerfile') -> bool: +def is_exists_dir_for_version(version: Version, file_name_to_verify_existence="Dockerfile") -> bool: dir_path = get_dir_for_version(version) # Also validate whether this directory is not generated due to any pre-release builds/ # additional packages. # This can be validated by checking whether {cpu/gpu}.env.{in/out}/Dockerfile exists in the # directory. - return os.path.exists(dir_path) and os.path.exists(dir_path + "/" + - file_name_to_verify_existence) + return os.path.exists(dir_path) and os.path.exists(dir_path + "/" + file_name_to_verify_existence) def get_semver(version_str) -> Version: # Version strings on conda-forge follow PEP standards rather than SemVer, which support # version strings such as X.Y.Z.postN, X.Y.Z.preN. These cause errors in semver.Version.parse # so we keep the first 3 entries as version string. - if version_str.count('.') > 2: - version_str = '.'.join(version_str.split('.')[:3]) + if version_str.count(".") > 2: + version_str = ".".join(version_str.split(".")[:3]) version = Version.parse(version_str) if version.build is not None: raise Exception() @@ -44,7 +47,6 @@ def get_match_specs(file_path) -> dict[str, MatchSpec]: requirement_spec = read_env_file(file_path) assert len(requirement_spec.environment.dependencies) == 1 - assert 'conda' in requirement_spec.environment.dependencies + assert "conda" in requirement_spec.environment.dependencies - return {MatchSpec(i).get('name'): MatchSpec(i) for i in - requirement_spec.environment.dependencies['conda']} + return {MatchSpec(i).get("name"): MatchSpec(i) for i in requirement_spec.environment.dependencies["conda"]} diff --git a/template/v0/Dockerfile b/template/v0/Dockerfile index 8746f7a3..3b5c3c55 100644 --- a/template/v0/Dockerfile +++ b/template/v0/Dockerfile @@ -10,8 +10,12 @@ 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 + ENV SAGEMAKER_LOGGING_DIR="/var/log/sagemaker/" ENV STUDIO_LOGGING_DIR="/var/log/studio/" +ENV EDITOR="nano" USER root RUN usermod "--login=${NB_USER}" "--home=/home/${NB_USER}" --move-home "-u ${NB_UID}" "${MAMBA_USER}" && \ @@ -24,7 +28,7 @@ ENV MAMBA_USER=$NB_USER ENV USER=$NB_USER RUN apt-get update && \ - apt-get install -y --no-install-recommends sudo gettext-base wget curl unzip git rsync build-essential openssh-client && \ + apt-get install -y --no-install-recommends sudo gettext-base wget curl unzip git rsync build-essential openssh-client nano cron less && \ # 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 && \ @@ -97,6 +101,32 @@ USER $MAMBA_USER ENV PATH="/opt/conda/bin:/opt/conda/condabin:$PATH" WORKDIR "/home/${NB_USER}" +# 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/ +RUN 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://www.openssl.org/source/openssl-$FIPS_VALIDATED_SSL.tar.gz > openssl-$FIPS_VALIDATED_SSL.tar.gz && \ + curl -L https://www.openssl.org/source/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 +RUN 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 +ENV OPENSSL_MODULES=/opt/conda/lib64/ossl-modules/ + # Install Kerberos. # Make sure no dependency is added/updated RUN pip install "krb5>=0.5.1,<0.6" && \ diff --git a/template/v1/Dockerfile b/template/v1/Dockerfile index 40a79752..592f2d08 100644 --- a/template/v1/Dockerfile +++ b/template/v1/Dockerfile @@ -12,8 +12,12 @@ 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 + ENV SAGEMAKER_LOGGING_DIR="/var/log/sagemaker/" ENV STUDIO_LOGGING_DIR="/var/log/studio/" +ENV EDITOR="nano" USER root RUN usermod "--login=${NB_USER}" "--home=/home/${NB_USER}" --move-home "-u ${NB_UID}" "${MAMBA_USER}" && \ @@ -26,7 +30,7 @@ ENV MAMBA_USER=$NB_USER ENV USER=$NB_USER RUN apt-get update && \ - apt-get install -y --no-install-recommends sudo gettext-base wget curl unzip git rsync build-essential openssh-client nano && \ + apt-get install -y --no-install-recommends sudo gettext-base wget curl unzip git rsync build-essential openssh-client nano cron less && \ # 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 && \ @@ -41,6 +45,23 @@ RUN apt-get update && \ : RUN echo "source /usr/local/bin/_activate_current_env.sh" | tee --append /etc/profile +# CodeEditor - create server, user data dirs +RUN 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 + +# Merge in OS directory tree contents. +RUN 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 +RUN 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/ @@ -60,6 +81,17 @@ RUN micromamba install -y --name base --file /tmp/$ENV_IN_FILENAME && \ ARG MAMBA_DOCKERFILE_ACTIVATE=1 RUN sudo ln -s $(which python3) /usr/bin/python +# Configure CodeEditor - Install extensions and set preferences +RUN \ + 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 + # Install glue kernels, and move to shared directory # Also patching base kernel so Studio background code doesn't start session silently RUN install-glue-kernels && \ @@ -87,18 +119,15 @@ RUN HOME_DIR="/home/${NB_USER}/licenses" \ && ${HOME_DIR}/oss_compliance/generate_oss_compliance.sh ${HOME_DIR} python \ && rm -rf ${HOME_DIR}/oss_compliance* -# Merge in OS directory tree contents. -RUN 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} - # 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} +# Clean up CodeEditor artifacts +RUN rm -rf /etc/code-editor + # Create supervisord runtime directory RUN mkdir -p /var/run/supervisord && \ chmod a+rw /var/run/supervisord @@ -107,6 +136,32 @@ USER $MAMBA_USER ENV PATH="/opt/conda/bin:/opt/conda/condabin:$PATH" WORKDIR "/home/${NB_USER}" +# 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/ +RUN 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://www.openssl.org/source/openssl-$FIPS_VALIDATED_SSL.tar.gz > openssl-$FIPS_VALIDATED_SSL.tar.gz && \ + curl -L https://www.openssl.org/source/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 +RUN 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 +ENV OPENSSL_MODULES=/opt/conda/lib64/ossl-modules/ + # Install Kerberos. # Make sure no dependency is added/updated RUN pip install "krb5>=0.5.1,<0.6" && \ diff --git a/template/v1/dirs/etc/code-editor/code_editor_machine_settings.json b/template/v1/dirs/etc/code-editor/code_editor_machine_settings.json new file mode 100644 index 00000000..44fb8ef7 --- /dev/null +++ b/template/v1/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/template/v1/dirs/etc/code-editor/extensions.txt b/template/v1/dirs/etc/code-editor/extensions.txt new file mode 100644 index 00000000..29d683eb --- /dev/null +++ b/template/v1/dirs/etc/code-editor/extensions.txt @@ -0,0 +1,3 @@ +https://open-vsx.org/api/ms-toolsai/jupyter/2023.9.100/file/ms-toolsai.jupyter-2023.9.100.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/1.99.0/file/amazonwebservices.aws-toolkit-vscode-1.99.0.vsix diff --git a/template/v1/dirs/etc/jupyter/jupyter_server_config.py b/template/v1/dirs/etc/jupyter/jupyter_server_config.py index e05997f2..0182cc23 100644 --- a/template/v1/dirs/etc/jupyter/jupyter_server_config.py +++ b/template/v1/dirs/etc/jupyter/jupyter_server_config.py @@ -1,16 +1,28 @@ # Default Jupyter server config -# Note: those config can be overridden by user-level configs. +# 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 } +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. +# 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 +# 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/template/v1/dirs/etc/supervisor/conf.d/supervisord-code-editor.conf b/template/v1/dirs/etc/supervisor/conf.d/supervisord-code-editor.conf new file mode 100644 index 00000000..cac5669b --- /dev/null +++ b/template/v1/dirs/etc/supervisor/conf.d/supervisord-code-editor.conf @@ -0,0 +1,11 @@ +[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 +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/template/v1/dirs/etc/supervisor/conf.d/supervisord-common.conf b/template/v1/dirs/etc/supervisor/conf.d/supervisord-common.conf new file mode 100644 index 00000000..27820d4c --- /dev/null +++ b/template/v1/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/template/v1/dirs/etc/supervisor/conf.d/supervisord-jupyter-lab.conf b/template/v1/dirs/etc/supervisor/conf.d/supervisord-jupyter-lab.conf new file mode 100644 index 00000000..5694ac11 --- /dev/null +++ b/template/v1/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/template/v1/dirs/usr/local/bin/entrypoint-code-editor b/template/v1/dirs/usr/local/bin/entrypoint-code-editor new file mode 100755 index 00000000..bf55a371 --- /dev/null +++ b/template/v1/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/template/v1/dirs/usr/local/bin/start-code-editor b/template/v1/dirs/usr/local/bin/start-code-editor new file mode 100755 index 00000000..bc97106c --- /dev/null +++ b/template/v1/dirs/usr/local/bin/start-code-editor @@ -0,0 +1,25 @@ +#!/bin/bash +set -e + +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. 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 /opt/amazon/sagemaker/sagemaker-code-editor-server-data \ + --extensions-dir /opt/amazon/sagemaker/sagemaker-code-editor-server-data/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/template/v1/dirs/usr/local/bin/start-jupyter-server b/template/v1/dirs/usr/local/bin/start-jupyter-server index 3b04daf1..626c3f8e 100755 --- a/template/v1/dirs/usr/local/bin/start-jupyter-server +++ b/template/v1/dirs/usr/local/bin/start-jupyter-server @@ -6,8 +6,22 @@ eval "$(micromamba shell hook --shell=bash)" # Activate conda environment 'base', which is the default environment for Cosmos micromamba activate base +# Start Jupyter server in rtc mode for shared spaces +if [ -n "$SAGEMAKER_APP_TYPE_LOWERCASE" ] && [ "$SAGEMAKER_SPACE_TYPE_LOWERCASE" == "shared" ]; then + # 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 -if [ -n "$SAGEMAKER_APP_TYPE_LOWERCASE" ]; then +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 \ diff --git a/template/v2/dirs/etc/jupyter/jupyter_server_config.py b/template/v2/dirs/etc/jupyter/jupyter_server_config.py index e05997f2..0182cc23 100644 --- a/template/v2/dirs/etc/jupyter/jupyter_server_config.py +++ b/template/v2/dirs/etc/jupyter/jupyter_server_config.py @@ -1,16 +1,28 @@ # Default Jupyter server config -# Note: those config can be overridden by user-level configs. +# 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 } +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. +# 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 +# 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/test/conftest.py b/test/conftest.py index 36c3fa75..df98aa2f 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -3,15 +3,14 @@ def pytest_addoption(parser): parser.addoption( - "--local-image-version", help="Version of a locally available SageMaker Distribution " - "Docker image against which the tests should run. Note: " - "We expect the local docker image to have " - "'localhost/sagemaker-distribution' as the repository and " - "'-{cpu/gpu}' as the tag" - ) - parser.addoption( - "--use-gpu", action='store_true', help="Boolean on whether to use GPUs or not" + "--local-image-version", + help="Version of a locally available SageMaker Distribution " + "Docker image against which the tests should run. Note: " + "We expect the local docker image to have " + "'localhost/sagemaker-distribution' as the repository and " + "'-{cpu/gpu}' as the tag", ) + parser.addoption("--use-gpu", action="store_true", help="Boolean on whether to use GPUs or not") @pytest.fixture diff --git a/test/test_artifacts/v0/autogluon.test.Dockerfile b/test/test_artifacts/v0/autogluon.test.Dockerfile index 34867534..238e6553 100644 --- a/test/test_artifacts/v0/autogluon.test.Dockerfile +++ b/test/test_artifacts/v0/autogluon.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE as base +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE as base ARG MAMBA_DOCKERFILE_ACTIVATE=1 diff --git a/test/test_artifacts/v0/aws-glue-sessions/run_glue_sessions_notebook.sh b/test/test_artifacts/v0/aws-glue-sessions/run_glue_sessions_notebook.sh index fbf5faf2..1aa73e37 100644 --- a/test/test_artifacts/v0/aws-glue-sessions/run_glue_sessions_notebook.sh +++ b/test/test_artifacts/v0/aws-glue-sessions/run_glue_sessions_notebook.sh @@ -8,4 +8,3 @@ nb='script' for kernel in ${kernels[@]}; do papermill 'glue_notebook.ipynb' 'nb_output.ipynb' -k $kernel done - diff --git a/test/test_artifacts/v0/boto3.test.Dockerfile b/test/test_artifacts/v0/boto3.test.Dockerfile index c0c88104..dc88bb39 100644 --- a/test/test_artifacts/v0/boto3.test.Dockerfile +++ b/test/test_artifacts/v0/boto3.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 RUN sudo apt-get update && sudo apt-get install -y git && \ diff --git a/test/test_artifacts/v0/glue-sessions.test.Dockerfile b/test/test_artifacts/v0/glue-sessions.test.Dockerfile index 46606021..221f82b9 100644 --- a/test/test_artifacts/v0/glue-sessions.test.Dockerfile +++ b/test/test_artifacts/v0/glue-sessions.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 diff --git a/test/test_artifacts/v0/keras.test.Dockerfile b/test/test_artifacts/v0/keras.test.Dockerfile index a022f0a4..74690920 100644 --- a/test/test_artifacts/v0/keras.test.Dockerfile +++ b/test/test_artifacts/v0/keras.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 @@ -17,4 +17,3 @@ COPY --chown=$MAMBA_USER:$MAMBA_USER scripts/run_keras_tests.sh . RUN chmod +x run_keras_tests.sh # Run tests in run_keras_tests.sh CMD ["./run_keras_tests.sh"] - diff --git a/test/test_artifacts/v0/matplotlib.test.Dockerfile b/test/test_artifacts/v0/matplotlib.test.Dockerfile index 95b63731..4d290016 100644 --- a/test/test_artifacts/v0/matplotlib.test.Dockerfile +++ b/test/test_artifacts/v0/matplotlib.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 @@ -16,4 +16,3 @@ COPY --chown=$MAMBA_USER:$MAMBA_USER scripts/run_matplotlib_tests.sh . RUN chmod +x run_matplotlib_tests.sh # Run tests in run_matplotlib_tests.sh CMD ["./run_matplotlib_tests.sh"] - diff --git a/test/test_artifacts/v0/numpy.test.Dockerfile b/test/test_artifacts/v0/numpy.test.Dockerfile index e0cb73dc..91035599 100644 --- a/test/test_artifacts/v0/numpy.test.Dockerfile +++ b/test/test_artifacts/v0/numpy.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 diff --git a/test/test_artifacts/v0/pandas.test.Dockerfile b/test/test_artifacts/v0/pandas.test.Dockerfile index 59df0d7d..a893b549 100644 --- a/test/test_artifacts/v0/pandas.test.Dockerfile +++ b/test/test_artifacts/v0/pandas.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 RUN pip install pandas[test] diff --git a/test/test_artifacts/v0/pytorch.examples.Dockerfile b/test/test_artifacts/v0/pytorch.examples.Dockerfile index ca4e6615..d9a42c7a 100644 --- a/test/test_artifacts/v0/pytorch.examples.Dockerfile +++ b/test/test_artifacts/v0/pytorch.examples.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 RUN sudo apt-get update && \ diff --git a/test/test_artifacts/v0/run_pandas_tests.py b/test/test_artifacts/v0/run_pandas_tests.py index 4cc8086c..08953750 100644 --- a/test/test_artifacts/v0/run_pandas_tests.py +++ b/test/test_artifacts/v0/run_pandas_tests.py @@ -1,4 +1,8 @@ -import pandas, sys, os, site +import os +import site +import sys + +import pandas # We change the working directory here because there is at least one test (`test_html_template_extends_options`) which # expects the directory to be 'pandas'. Ideally, we would have changed directories through a `WORKDIR` in Dockerfile @@ -13,8 +17,8 @@ # expectation is just ">=3.6.1". Our image contains v3.7.1, so it meets the latter requirement but not the former. This # particular test, however, only works with the former requirement. (We verified that the test succeeds if we manually # drop the version to v3.6.x) So, we skip it. -tests_succeeded = pandas.test([ - '-m', '(not slow and not network and not db)', - '-k', '(not test_network and not s3 and not test_plain_axes)']) +tests_succeeded = pandas.test( + ["-m", "(not slow and not network and not db)", "-k", "(not test_network and not s3 and not test_plain_axes)"] +) sys.exit(not tests_succeeded) diff --git a/test/test_artifacts/v0/sagemaker-headless-execution-driver.test.Dockerfile b/test/test_artifacts/v0/sagemaker-headless-execution-driver.test.Dockerfile index f4a579aa..094b1066 100644 --- a/test/test_artifacts/v0/sagemaker-headless-execution-driver.test.Dockerfile +++ b/test/test_artifacts/v0/sagemaker-headless-execution-driver.test.Dockerfile @@ -1,8 +1,8 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 # Execute execution_driver module to for sagemaker-headless-execution-driver installation -CMD ["python", "-c", "import sagemaker_headless_execution_driver.headless_execution as execution_driver"] \ No newline at end of file +CMD ["python", "-c", "import sagemaker_headless_execution_driver.headless_execution as execution_driver"] diff --git a/test/test_artifacts/v0/sagemaker-studio-analytics-extension.test.Dockerfile b/test/test_artifacts/v0/sagemaker-studio-analytics-extension.test.Dockerfile index ba835032..0aba7650 100644 --- a/test/test_artifacts/v0/sagemaker-studio-analytics-extension.test.Dockerfile +++ b/test/test_artifacts/v0/sagemaker-studio-analytics-extension.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 diff --git a/test/test_artifacts/v0/scipy.test.Dockerfile b/test/test_artifacts/v0/scipy.test.Dockerfile index 106a0384..b93ad8bf 100644 --- a/test/test_artifacts/v0/scipy.test.Dockerfile +++ b/test/test_artifacts/v0/scipy.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 diff --git a/test/test_artifacts/v0/scripts/run_autogluon_tests.sh b/test/test_artifacts/v0/scripts/run_autogluon_tests.sh index 036d1432..09d70554 100644 --- a/test/test_artifacts/v0/scripts/run_autogluon_tests.sh +++ b/test/test_artifacts/v0/scripts/run_autogluon_tests.sh @@ -12,6 +12,6 @@ python -c "import torch; exit(0) if torch.cuda.is_available() else exit(1)" ret=$? if [ $ret -eq 0 ] -then +then jupyter nbconvert --execute --to python docs/tutorials/multimodal/multimodal_prediction/multimodal-quick-start.ipynb fi diff --git a/test/test_artifacts/v0/scripts/run_matplotlib_tests.sh b/test/test_artifacts/v0/scripts/run_matplotlib_tests.sh index 13aa3fb3..848e7421 100644 --- a/test/test_artifacts/v0/scripts/run_matplotlib_tests.sh +++ b/test/test_artifacts/v0/scripts/run_matplotlib_tests.sh @@ -3,5 +3,3 @@ for file in *.py; do python "$file" || exit $? done - - diff --git a/test/test_artifacts/v0/sm-python-sdk.test.Dockerfile b/test/test_artifacts/v0/sm-python-sdk.test.Dockerfile index 4a9c8d7d..1e9426d1 100644 --- a/test/test_artifacts/v0/sm-python-sdk.test.Dockerfile +++ b/test/test_artifacts/v0/sm-python-sdk.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 RUN sudo apt-get update && sudo apt-get install -y git && \ diff --git a/test/test_artifacts/v0/tensorflow.examples.Dockerfile b/test/test_artifacts/v0/tensorflow.examples.Dockerfile index f88bc9f2..7d5d6e64 100644 --- a/test/test_artifacts/v0/tensorflow.examples.Dockerfile +++ b/test/test_artifacts/v0/tensorflow.examples.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 RUN sudo apt-get update && \ diff --git a/test/test_artifacts/v1/altair.test.Dockerfile b/test/test_artifacts/v1/altair.test.Dockerfile index ae25a698..3747904b 100644 --- a/test/test_artifacts/v1/altair.test.Dockerfile +++ b/test/test_artifacts/v1/altair.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 diff --git a/test/test_artifacts/v1/amazon-codewhisperer-jupyterlab-ext.test.Dockerfile b/test/test_artifacts/v1/amazon-codewhisperer-jupyterlab-ext.test.Dockerfile index f05fd674..1ef68a71 100644 --- a/test/test_artifacts/v1/amazon-codewhisperer-jupyterlab-ext.test.Dockerfile +++ b/test/test_artifacts/v1/amazon-codewhisperer-jupyterlab-ext.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 diff --git a/test/test_artifacts/v1/amazon-sagemaker-sql-magic.test.Dockerfile b/test/test_artifacts/v1/amazon-sagemaker-sql-magic.test.Dockerfile new file mode 100644 index 00000000..642c9e6a --- /dev/null +++ b/test/test_artifacts/v1/amazon-sagemaker-sql-magic.test.Dockerfile @@ -0,0 +1,6 @@ +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE + +ARG MAMBA_DOCKERFILE_ACTIVATE=1 + +CMD ["python", "-c", "import amazon_sagemaker_sql_magic"] diff --git a/test/test_artifacts/v1/amazon_sagemaker_sql_editor.test.Dockerfile b/test/test_artifacts/v1/amazon_sagemaker_sql_editor.test.Dockerfile new file mode 100644 index 00000000..2182ba15 --- /dev/null +++ b/test/test_artifacts/v1/amazon_sagemaker_sql_editor.test.Dockerfile @@ -0,0 +1,6 @@ +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE + +ARG MAMBA_DOCKERFILE_ACTIVATE=1 + +CMD ["python", "-c", "import amazon_sagemaker_sql_editor"] diff --git a/test/test_artifacts/v1/autogluon.test.Dockerfile b/test/test_artifacts/v1/autogluon.test.Dockerfile index 6b448697..fb02d1ab 100644 --- a/test/test_artifacts/v1/autogluon.test.Dockerfile +++ b/test/test_artifacts/v1/autogluon.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE as base +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE as base ARG MAMBA_DOCKERFILE_ACTIVATE=1 diff --git a/test/test_artifacts/v1/aws-glue-sessions/run_glue_sessions_notebook.sh b/test/test_artifacts/v1/aws-glue-sessions/run_glue_sessions_notebook.sh index fbf5faf2..1aa73e37 100644 --- a/test/test_artifacts/v1/aws-glue-sessions/run_glue_sessions_notebook.sh +++ b/test/test_artifacts/v1/aws-glue-sessions/run_glue_sessions_notebook.sh @@ -8,4 +8,3 @@ nb='script' for kernel in ${kernels[@]}; do papermill 'glue_notebook.ipynb' 'nb_output.ipynb' -k $kernel done - diff --git a/test/test_artifacts/v1/boto3.test.Dockerfile b/test/test_artifacts/v1/boto3.test.Dockerfile index 5223f561..e195e39c 100644 --- a/test/test_artifacts/v1/boto3.test.Dockerfile +++ b/test/test_artifacts/v1/boto3.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 RUN sudo apt-get update && sudo apt-get install -y git && \ diff --git a/test/test_artifacts/v1/glue-sessions.test.Dockerfile b/test/test_artifacts/v1/glue-sessions.test.Dockerfile index 9f87a400..b820533e 100644 --- a/test/test_artifacts/v1/glue-sessions.test.Dockerfile +++ b/test/test_artifacts/v1/glue-sessions.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 diff --git a/test/test_artifacts/v1/jupyter-ai.test.Dockerfile b/test/test_artifacts/v1/jupyter-ai.test.Dockerfile index e231adf7..34ddaa3f 100644 --- a/test/test_artifacts/v1/jupyter-ai.test.Dockerfile +++ b/test/test_artifacts/v1/jupyter-ai.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 diff --git a/test/test_artifacts/v1/jupyter-dash.test.Dockerfile b/test/test_artifacts/v1/jupyter-dash.test.Dockerfile index b4b92126..540527ad 100644 --- a/test/test_artifacts/v1/jupyter-dash.test.Dockerfile +++ b/test/test_artifacts/v1/jupyter-dash.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 diff --git a/test/test_artifacts/v1/jupyterlab-git.test.Dockerfile b/test/test_artifacts/v1/jupyterlab-git.test.Dockerfile index 11732655..7d5cbd96 100644 --- a/test/test_artifacts/v1/jupyterlab-git.test.Dockerfile +++ b/test/test_artifacts/v1/jupyterlab-git.test.Dockerfile @@ -1,7 +1,6 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 CMD ["python", "-c", "import jupyterlab_git"] - diff --git a/test/test_artifacts/v1/jupyterlab-lsp.test.Dockerfile b/test/test_artifacts/v1/jupyterlab-lsp.test.Dockerfile index 0aed1baf..c13df62a 100644 --- a/test/test_artifacts/v1/jupyterlab-lsp.test.Dockerfile +++ b/test/test_artifacts/v1/jupyterlab-lsp.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 diff --git a/test/test_artifacts/v1/keras.test.Dockerfile b/test/test_artifacts/v1/keras.test.Dockerfile index 0d03504f..f5cb224f 100644 --- a/test/test_artifacts/v1/keras.test.Dockerfile +++ b/test/test_artifacts/v1/keras.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 @@ -8,7 +8,7 @@ RUN sudo apt-get update && sudo apt-get install -y git graphviz && \ : # Some of the keras guides requires pydot and graphviz to be installed -RUN micromamba install -y --freeze-installed conda-forge::pydot nvidia::cuda-nvcc +RUN micromamba install -y --freeze-installed conda-forge::pydot "nvidia::cuda-nvcc>=11.8,<11.9" ENV XLA_FLAGS=--xla_gpu_cuda_data_dir=/opt/conda WORKDIR "keras-io/guides" @@ -22,4 +22,3 @@ COPY --chown=$MAMBA_USER:$MAMBA_USER scripts/run_keras_tests.sh . RUN chmod +x run_keras_tests.sh # Run tests in run_keras_tests.sh CMD ["./run_keras_tests.sh"] - diff --git a/test/test_artifacts/v1/matplotlib.test.Dockerfile b/test/test_artifacts/v1/matplotlib.test.Dockerfile index 95b63731..4d290016 100644 --- a/test/test_artifacts/v1/matplotlib.test.Dockerfile +++ b/test/test_artifacts/v1/matplotlib.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 @@ -16,4 +16,3 @@ COPY --chown=$MAMBA_USER:$MAMBA_USER scripts/run_matplotlib_tests.sh . RUN chmod +x run_matplotlib_tests.sh # Run tests in run_matplotlib_tests.sh CMD ["./run_matplotlib_tests.sh"] - diff --git a/test/test_artifacts/v1/notebook.test.Dockerfile b/test/test_artifacts/v1/notebook.test.Dockerfile index 16ca7e39..9afb9e08 100644 --- a/test/test_artifacts/v1/notebook.test.Dockerfile +++ b/test/test_artifacts/v1/notebook.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 diff --git a/test/test_artifacts/v1/numpy.test.Dockerfile b/test/test_artifacts/v1/numpy.test.Dockerfile index 6e622f40..bab08af3 100644 --- a/test/test_artifacts/v1/numpy.test.Dockerfile +++ b/test/test_artifacts/v1/numpy.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 diff --git a/test/test_artifacts/v1/pandas.test.Dockerfile b/test/test_artifacts/v1/pandas.test.Dockerfile index 68b0bfa0..f3c2f73e 100644 --- a/test/test_artifacts/v1/pandas.test.Dockerfile +++ b/test/test_artifacts/v1/pandas.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 RUN micromamba install -y --freeze-installed -c conda-forge pytest hypothesis pytest-asyncio lxml diff --git a/test/test_artifacts/v1/python-lsp-server.test.Dockerfile b/test/test_artifacts/v1/python-lsp-server.test.Dockerfile index 24b38e7f..eb73f0e0 100644 --- a/test/test_artifacts/v1/python-lsp-server.test.Dockerfile +++ b/test/test_artifacts/v1/python-lsp-server.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 diff --git a/test/test_artifacts/v1/pytorch.examples.Dockerfile b/test/test_artifacts/v1/pytorch.examples.Dockerfile index ca4e6615..f2c3231a 100644 --- a/test/test_artifacts/v1/pytorch.examples.Dockerfile +++ b/test/test_artifacts/v1/pytorch.examples.Dockerfile @@ -1,11 +1,12 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 -RUN sudo apt-get update && \ - sudo apt-get install -y git && \ - git clone --recursive https://github.com/pytorch/examples && \ - : +RUN git clone --recursive https://github.com/pytorch/examples + +# During automation some tests fails with `libcuda.so: cannot open shared object file: No such file or directory` +# But libcuda.so.1 exists. Adding this resolves, but also adding `2>/dev/null` to ignore if not needed. +RUN sudo ln -s /usr/lib/x86_64-linux-gnu/libcuda.so.1 /usr/lib/x86_64-linux-gnu/libcuda.so 2>/dev/null WORKDIR "examples" diff --git a/test/test_artifacts/v1/run_pandas_tests.py b/test/test_artifacts/v1/run_pandas_tests.py index 00127f2d..2995581f 100644 --- a/test/test_artifacts/v1/run_pandas_tests.py +++ b/test/test_artifacts/v1/run_pandas_tests.py @@ -1,4 +1,8 @@ -import pandas, sys, os, site +import os +import site +import sys + +import pandas # We change the working directory here because there is at least one test (`test_html_template_extends_options`) which # expects the directory to be 'pandas'. Ideally, we would have changed directories through a `WORKDIR` in Dockerfile @@ -14,10 +18,16 @@ # particular test, however, only works with the former requirement. (We verified that the test succeeds if we manually # drop the version to v3.6.x) So, we skip it. # Also skipping specific TestFrameFlexArithmetic test; failing due to known issue https://github.com/pandas-dev/pandas/issues/54546 -tests_succeeded = pandas.test([ - '-m', '(not slow and not network and not db)', - '-k', '(not test_network and not s3 and not test_plain_axes)', - '--no-strict-data-files', - '--ignore', 'pandas/tests/frame/test_arithmetic.py::TestFrameFlexArithmetic::test_floordiv_axis0_numexpr_path']) +tests_succeeded = pandas.test( + [ + "-m", + "(not slow and not network and not db)", + "-k", + "(not test_network and not s3 and not test_plain_axes)", + "--no-strict-data-files", + "--ignore", + "pandas/tests/frame/test_arithmetic.py::TestFrameFlexArithmetic::test_floordiv_axis0_numexpr_path", + ] +) sys.exit(not tests_succeeded) diff --git a/test/test_artifacts/v1/sagemaker-code-editor.test.Dockerfile b/test/test_artifacts/v1/sagemaker-code-editor.test.Dockerfile new file mode 100644 index 00000000..aca7efdf --- /dev/null +++ b/test/test_artifacts/v1/sagemaker-code-editor.test.Dockerfile @@ -0,0 +1,9 @@ +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE + +ARG MAMBA_DOCKERFILE_ACTIVATE=1 + +COPY --chown=$MAMBA_USER:$MAMBA_USER scripts/run_sagemaker_code_editor_tests.sh ./ +RUN chmod +x run_sagemaker_code_editor_tests.sh + +CMD ["./run_sagemaker_code_editor_tests.sh"] diff --git a/test/test_artifacts/v1/sagemaker-headless-execution-driver.test.Dockerfile b/test/test_artifacts/v1/sagemaker-headless-execution-driver.test.Dockerfile index 675960df..5f57f316 100644 --- a/test/test_artifacts/v1/sagemaker-headless-execution-driver.test.Dockerfile +++ b/test/test_artifacts/v1/sagemaker-headless-execution-driver.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 diff --git a/test/test_artifacts/v1/sagemaker-studio-analytics-extension.test.Dockerfile b/test/test_artifacts/v1/sagemaker-studio-analytics-extension.test.Dockerfile index ba835032..0aba7650 100644 --- a/test/test_artifacts/v1/sagemaker-studio-analytics-extension.test.Dockerfile +++ b/test/test_artifacts/v1/sagemaker-studio-analytics-extension.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 diff --git a/test/test_artifacts/v1/scipy.test.Dockerfile b/test/test_artifacts/v1/scipy.test.Dockerfile index cf88992a..e117b158 100644 --- a/test/test_artifacts/v1/scipy.test.Dockerfile +++ b/test/test_artifacts/v1/scipy.test.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 diff --git a/test/test_artifacts/v1/scripts/run_altair_example_notebooks.sh b/test/test_artifacts/v1/scripts/run_altair_example_notebooks.sh index 47762d0f..1bb4f370 100644 --- a/test/test_artifacts/v1/scripts/run_altair_example_notebooks.sh +++ b/test/test_artifacts/v1/scripts/run_altair_example_notebooks.sh @@ -15,4 +15,3 @@ example_notebooks=('02-Tutorial.ipynb' for nb in ${example_notebooks[@]}; do papermill $nb 'nb_output.ipynb' done - diff --git a/test/test_artifacts/v1/scripts/run_autogluon_tests.sh b/test/test_artifacts/v1/scripts/run_autogluon_tests.sh index 036d1432..7a136c25 100644 --- a/test/test_artifacts/v1/scripts/run_autogluon_tests.sh +++ b/test/test_artifacts/v1/scripts/run_autogluon_tests.sh @@ -1,6 +1,6 @@ #!/bin/bash -AUTOGLUON_VERSION=$(micromamba list | grep autogluon | tr -s ' ' | cut -d ' ' -f 3) +AUTOGLUON_VERSION=$(micromamba list | grep autogluon | tr -s ' ' | head -n 1 | cut -d ' ' -f 3) git checkout tags/v$AUTOGLUON_VERSION # Run autogluon quick start as end-to-end check @@ -12,6 +12,6 @@ python -c "import torch; exit(0) if torch.cuda.is_available() else exit(1)" ret=$? if [ $ret -eq 0 ] -then +then jupyter nbconvert --execute --to python docs/tutorials/multimodal/multimodal_prediction/multimodal-quick-start.ipynb fi diff --git a/test/test_artifacts/v1/scripts/run_matplotlib_tests.sh b/test/test_artifacts/v1/scripts/run_matplotlib_tests.sh index 13aa3fb3..848e7421 100644 --- a/test/test_artifacts/v1/scripts/run_matplotlib_tests.sh +++ b/test/test_artifacts/v1/scripts/run_matplotlib_tests.sh @@ -3,5 +3,3 @@ for file in *.py; do python "$file" || exit $? done - - diff --git a/test/test_artifacts/v1/scripts/run_sagemaker_code_editor_tests.sh b/test/test_artifacts/v1/scripts/run_sagemaker_code_editor_tests.sh new file mode 100644 index 00000000..0b7dda58 --- /dev/null +++ b/test/test_artifacts/v1/scripts/run_sagemaker_code_editor_tests.sh @@ -0,0 +1,70 @@ +#!/bin/bash + +# Exit immediately if a command exits with a non-zero status. +set -e + +sagemaker-code-editor --version +echo "Verified that sagemaker-code-editor is installed" + +# Verify that data dirs are created and have correct ownership +data_dirs=("/opt/amazon/sagemaker/sagemaker-code-editor-server-data" "/opt/amazon/sagemaker/sagemaker-code-editor-user-data") +data_dirs_owner="sagemaker-user" + +for dir in "${data_dirs[@]}"; do + if [[ -d "$dir" ]]; then + echo "$dir exists." + if [[ $(stat -c '%U' "$dir") == "$data_dirs_owner" ]]; then + echo "$dir is owned by $data_dirs_owner." + else + echo "Error: $dir is not owned by $data_dirs_owner." + exit 1 + fi + else + echo "Error: $dir does not exist." + exit 1 + fi +done + +# Check that extensions are installed correctly +extensions_base_dir="/opt/amazon/sagemaker/sagemaker-code-editor-server-data/extensions" +if [[ ! -d $extensions_base_dir ]]; then + echo "Extension base directory $extensions_base_dir does not exist." + exit 1 +fi + +installed_extensions=("ms-python.python" "ms-toolsai.jupyter" "amazonwebservices.aws-toolkit-vscode") +for extension in "${installed_extensions[@]}"; do + # In this pattern, we're looking for versioning to follow immediately after the extension name + # For ex - ms-toolsai.jupyter-2023.9.100 + pattern="${extension}-[0-9]*" + + # Use the find command to search for directories matching the current pattern + found_dirs=$(find "$extensions_base_dir" -maxdepth 1 -type d -name "$pattern") + + if [[ -z $found_dirs ]]; then + echo "Directory matching pattern '$pattern' does not exist in $extensions_base_dir." + exit 1 + else + echo "Directory exists for pattern '$pattern':" + echo "$found_dirs" + fi +done +echo "Verified that all extension folders are present in $extensions_base_dir." + +# Check that settings file is copied +MACHINE_SETTINGS_FILE_PATH="/opt/amazon/sagemaker/sagemaker-code-editor-server-data/data/Machine/settings.json" +if [ ! -f "$MACHINE_SETTINGS_FILE_PATH" ]; then + echo "Error: Settings file does not exist at $MACHINE_SETTINGS_FILE_PATH." + exit 1 +fi + +echo "Settings file exists at $FILE_PATH." + +# Check that code-editor artifacts folder is deleted +ARTIFACTS_DIR="/etc/code-editor" +if [ ! -d "$ARTIFACTS_DIR" ]; then + echo "Directory $ARTIFACTS_DIR has been successfully removed." +else + echo "Error: Directory $ARTIFACTS_DIR still exists." + exit 1 +fi diff --git a/test/test_artifacts/v1/serve.test.Dockerfile b/test/test_artifacts/v1/serve.test.Dockerfile index 671fd73a..19dd8d5d 100644 --- a/test/test_artifacts/v1/serve.test.Dockerfile +++ b/test/test_artifacts/v1/serve.test.Dockerfile @@ -1,6 +1,6 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 -CMD ["python", "-c", "import fastapi, uvicorn, langchain"] \ No newline at end of file +CMD ["python", "-c", "import fastapi, uvicorn, langchain"] diff --git a/test/test_artifacts/v1/sm-python-sdk.test.Dockerfile b/test/test_artifacts/v1/sm-python-sdk.test.Dockerfile index 4a9c8d7d..623efbf6 100644 --- a/test/test_artifacts/v1/sm-python-sdk.test.Dockerfile +++ b/test/test_artifacts/v1/sm-python-sdk.test.Dockerfile @@ -1,10 +1,9 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 -RUN sudo apt-get update && sudo apt-get install -y git && \ - git clone --recursive https://github.com/aws/sagemaker-python-sdk.git && \ - : +RUN git clone --recursive https://github.com/aws/sagemaker-python-sdk.git + # Sagemaker Python SDK's unit tests requires AWS_DEFAULT_REGION to be set. So, using an arbitrary value of us-east-1 ENV AWS_DEFAULT_REGION=us-east-1 WORKDIR "sagemaker-python-sdk" diff --git a/test/test_artifacts/v1/tensorflow.examples.Dockerfile b/test/test_artifacts/v1/tensorflow.examples.Dockerfile index f88bc9f2..7d5d6e64 100644 --- a/test/test_artifacts/v1/tensorflow.examples.Dockerfile +++ b/test/test_artifacts/v1/tensorflow.examples.Dockerfile @@ -1,5 +1,5 @@ -ARG COSMOS_IMAGE -FROM $COSMOS_IMAGE +ARG SAGEMAKER_DISTRIBUTION_IMAGE +FROM $SAGEMAKER_DISTRIBUTION_IMAGE ARG MAMBA_DOCKERFILE_ACTIVATE=1 RUN sudo apt-get update && \ diff --git a/test/test_artifacts/v2/run_pandas_tests.py b/test/test_artifacts/v2/run_pandas_tests.py index 00127f2d..2995581f 100644 --- a/test/test_artifacts/v2/run_pandas_tests.py +++ b/test/test_artifacts/v2/run_pandas_tests.py @@ -1,4 +1,8 @@ -import pandas, sys, os, site +import os +import site +import sys + +import pandas # We change the working directory here because there is at least one test (`test_html_template_extends_options`) which # expects the directory to be 'pandas'. Ideally, we would have changed directories through a `WORKDIR` in Dockerfile @@ -14,10 +18,16 @@ # particular test, however, only works with the former requirement. (We verified that the test succeeds if we manually # drop the version to v3.6.x) So, we skip it. # Also skipping specific TestFrameFlexArithmetic test; failing due to known issue https://github.com/pandas-dev/pandas/issues/54546 -tests_succeeded = pandas.test([ - '-m', '(not slow and not network and not db)', - '-k', '(not test_network and not s3 and not test_plain_axes)', - '--no-strict-data-files', - '--ignore', 'pandas/tests/frame/test_arithmetic.py::TestFrameFlexArithmetic::test_floordiv_axis0_numexpr_path']) +tests_succeeded = pandas.test( + [ + "-m", + "(not slow and not network and not db)", + "-k", + "(not test_network and not s3 and not test_plain_axes)", + "--no-strict-data-files", + "--ignore", + "pandas/tests/frame/test_arithmetic.py::TestFrameFlexArithmetic::test_floordiv_axis0_numexpr_path", + ] +) sys.exit(not tests_succeeded) diff --git a/test/test_dependency_upgrader.py b/test/test_dependency_upgrader.py index b3e2a62b..caebf730 100644 --- a/test/test_dependency_upgrader.py +++ b/test/test_dependency_upgrader.py @@ -4,50 +4,50 @@ pytestmark = pytest.mark.unit from dependency_upgrader import ( - _get_dependency_upper_bound_for_runtime_upgrade, - _get_dependency_upper_bound_for_semver, - _get_dependency_upper_bound_for_pythonesque, _MAJOR, _MINOR, - _PATCH + _PATCH, + _get_dependency_upper_bound_for_pythonesque, + _get_dependency_upper_bound_for_runtime_upgrade, + _get_dependency_upper_bound_for_semver, ) def test_get_dependency_upper_bound_for_runtime_upgrade(): # case 1: Runtime upgrade type is MINOR, dependency name is python => use pythonesque - assert _get_dependency_upper_bound_for_runtime_upgrade('python', '1.2.5', _MINOR) == ',<1.3.0' + assert _get_dependency_upper_bound_for_runtime_upgrade("python", "1.2.5", _MINOR) == ",<1.3.0" # case 1: Runtime upgrade type is MINOR, dependency name is node => use semver - assert _get_dependency_upper_bound_for_runtime_upgrade('node', '1.2.5', _MINOR) == ',<2.0.0' + assert _get_dependency_upper_bound_for_runtime_upgrade("node", "1.2.5", _MINOR) == ",<2.0.0" def test_get_dependency_upper_bound_for_semver(): # case 1: Runtime upgrade type is MAJOR. - assert _get_dependency_upper_bound_for_semver('1.2.5', _MAJOR) == '' + assert _get_dependency_upper_bound_for_semver("1.2.5", _MAJOR) == "" # case 2: Runtime upgrade type is MINOR. - assert _get_dependency_upper_bound_for_semver('1.2.5', _MINOR) == ',<2.0.0' + assert _get_dependency_upper_bound_for_semver("1.2.5", _MINOR) == ",<2.0.0" # case 3: Runtime upgrade type is PATCH. - assert _get_dependency_upper_bound_for_semver('1.2.5', _PATCH) == ',<1.3.0' + assert _get_dependency_upper_bound_for_semver("1.2.5", _PATCH) == ",<1.3.0" # case 4: Throw exception for any other runtime_upgrade_type with pytest.raises(Exception): - _get_dependency_upper_bound_for_semver('1.2.5', 'prerelease') + _get_dependency_upper_bound_for_semver("1.2.5", "prerelease") def test_get_dependency_upper_bound_for_pythonesque(): # case 1: Runtime upgrade type is MAJOR. - assert _get_dependency_upper_bound_for_pythonesque('1.2.5', _MAJOR) == '' + assert _get_dependency_upper_bound_for_pythonesque("1.2.5", _MAJOR) == "" # case 2: Runtime upgrade type is MINOR. - assert _get_dependency_upper_bound_for_pythonesque('1.2.5', _MINOR) == ',<1.3.0' + assert _get_dependency_upper_bound_for_pythonesque("1.2.5", _MINOR) == ",<1.3.0" # case 3: Runtime upgrade type is PATCH. For pythonesque, we will bump minor version. - assert _get_dependency_upper_bound_for_pythonesque('1.2.5', _PATCH) == ',<1.3.0' + assert _get_dependency_upper_bound_for_pythonesque("1.2.5", _PATCH) == ",<1.3.0" # case 4: Throw exception for any other runtime_upgrade_type with pytest.raises(Exception): - _get_dependency_upper_bound_for_pythonesque('1.2.5', 'prerelease') + _get_dependency_upper_bound_for_pythonesque("1.2.5", "prerelease") def test_get_dependency_upper_bound_for_post_pre_release(): - assert _get_dependency_upper_bound_for_runtime_upgrade('python', '1.2.5.post1', _PATCH) == ',<1.3.0' - assert _get_dependency_upper_bound_for_runtime_upgrade('node', '1.2.5.post1', _PATCH) == ',<1.3.0' - assert _get_dependency_upper_bound_for_runtime_upgrade('python', '1.2.5.post1', _MINOR) == ',<1.3.0' - assert _get_dependency_upper_bound_for_runtime_upgrade('node', '1.2.5.post1', _MINOR) == ',<2.0.0' - assert _get_dependency_upper_bound_for_runtime_upgrade('python', '1.2.5.post1', _MAJOR) == '' - assert _get_dependency_upper_bound_for_runtime_upgrade('node', '1.2.5.post1', _MAJOR) == '' + assert _get_dependency_upper_bound_for_runtime_upgrade("python", "1.2.5.post1", _PATCH) == ",<1.3.0" + assert _get_dependency_upper_bound_for_runtime_upgrade("node", "1.2.5.post1", _PATCH) == ",<1.3.0" + assert _get_dependency_upper_bound_for_runtime_upgrade("python", "1.2.5.post1", _MINOR) == ",<1.3.0" + assert _get_dependency_upper_bound_for_runtime_upgrade("node", "1.2.5.post1", _MINOR) == ",<2.0.0" + assert _get_dependency_upper_bound_for_runtime_upgrade("python", "1.2.5.post1", _MAJOR) == "" + assert _get_dependency_upper_bound_for_runtime_upgrade("node", "1.2.5.post1", _MAJOR) == "" diff --git a/test/test_dockerfile_based_harness.py b/test/test_dockerfile_based_harness.py index 50e8ecaf..5e1c4b88 100644 --- a/test/test_dockerfile_based_harness.py +++ b/test/test_dockerfile_based_harness.py @@ -1,86 +1,91 @@ -import subprocess import os +import subprocess +from typing import List + import docker import pytest -from config import _image_generator_configs from docker.errors import BuildError from semver import Version -from typing import List -from utils import ( - get_dir_for_version, - get_semver, - get_match_specs, -) + +from config import _image_generator_configs +from utils import get_dir_for_version, get_match_specs, get_semver _docker_client = docker.from_env() @pytest.mark.cpu -@pytest.mark.parametrize("dockerfile_path, required_packages", [ - ("keras.test.Dockerfile", ['keras']), - ("autogluon.test.Dockerfile", ['autogluon']), - ("matplotlib.test.Dockerfile", ['matplotlib']), - ("sagemaker-headless-execution-driver.test.Dockerfile", ['sagemaker-headless-execution-driver']), - ("scipy.test.Dockerfile", ['scipy']), - ("numpy.test.Dockerfile", ['numpy']), - ("boto3.test.Dockerfile", ['boto3']), - ("pandas.test.Dockerfile", ['pandas']), - ("sm-python-sdk.test.Dockerfile", ['sagemaker-python-sdk']), - ("pytorch.examples.Dockerfile", ['pytorch']), - ("tensorflow.examples.Dockerfile", ['tensorflow']), - ("jupyter-ai.test.Dockerfile", ['jupyter-ai']), - ("jupyter-dash.test.Dockerfile", ['jupyter-dash']), - ("jupyterlab-lsp.test.Dockerfile", ['jupyterlab-lsp']), - ("jupyter-lsp-server.test.Dockerfile", ['jupyter-lsp-server']), - ("notebook.test.Dockerfile", ['notebook']), - ("glue-sessions.test.Dockerfile", ['aws-glue-sessions']), - ("altair.test.Dockerfile", ['altair']), - ("sagemaker-studio-analytics-extension.test.Dockerfile", ['sagemaker-studio-analytics-extension']), - ("amazon-codewhisperer-jupyterlab-ext.test.Dockerfile", ['amazon-codewhisperer-jupyterlab-ext']), - ("jupyterlab-git.test.Dockerfile", ['jupyterlab-git']), - ("maxdome_jupyter_server_extension.test.Dockerfile", ['maxdome_jupyter_server_extension']), - ("maxdome_jupyter_session_manager.test.Dockerfile", ['maxdome_jupyter_session_manager']), - ("maxdome_toolkit_cli.test.Dockerfile",['maxdome_toolkit_cli']), - ("git-remote-codecommit.test.Dockerfile",['git-remote-codecommit']), - ("serve.test.Dockerfile", ['serve-langchain'])]) -def test_dockerfiles_for_cpu(dockerfile_path: str, required_packages: List[str], - local_image_version: str, use_gpu: bool): - _validate_docker_images(dockerfile_path, required_packages, local_image_version, use_gpu, 'cpu') +@pytest.mark.parametrize( + "dockerfile_path, required_packages", + [ + ("keras.test.Dockerfile", ["keras"]), + ("autogluon.test.Dockerfile", ["autogluon"]), + ("matplotlib.test.Dockerfile", ["matplotlib"]), + ("sagemaker-headless-execution-driver.test.Dockerfile", ["sagemaker-headless-execution-driver"]), + ("scipy.test.Dockerfile", ["scipy"]), + ("numpy.test.Dockerfile", ["numpy"]), + ("boto3.test.Dockerfile", ["boto3"]), + ("pandas.test.Dockerfile", ["pandas"]), + ("sm-python-sdk.test.Dockerfile", ["sagemaker-python-sdk"]), + ("pytorch.examples.Dockerfile", ["pytorch"]), + ("tensorflow.examples.Dockerfile", ["tensorflow"]), + ("jupyter-ai.test.Dockerfile", ["jupyter-ai"]), + ("jupyter-dash.test.Dockerfile", ["jupyter-dash"]), + ("jupyterlab-lsp.test.Dockerfile", ["jupyterlab-lsp"]), + ("jupyter-lsp-server.test.Dockerfile", ["jupyter-lsp-server"]), + ("sagemaker-code-editor.test.Dockerfile", ["sagemaker-code-editor"]), + ("notebook.test.Dockerfile", ["notebook"]), + ("glue-sessions.test.Dockerfile", ["aws-glue-sessions"]), + ("altair.test.Dockerfile", ["altair"]), + ("sagemaker-studio-analytics-extension.test.Dockerfile", ["sagemaker-studio-analytics-extension"]), + ("amazon-codewhisperer-jupyterlab-ext.test.Dockerfile", ["amazon-codewhisperer-jupyterlab-ext"]), + ("jupyterlab-git.test.Dockerfile", ["jupyterlab-git"]), + ("amazon-sagemaker-sql-magic.test.Dockerfile", ["amazon-sagemaker-sql-magic"]), + ("amazon_sagemaker_sql_editor.test.Dockerfile", ["amazon_sagemaker_sql_editor"]), + ("serve.test.Dockerfile", ["serve-langchain"]), + ], +) +def test_dockerfiles_for_cpu( + dockerfile_path: str, required_packages: List[str], local_image_version: str, use_gpu: bool +): + _validate_docker_images(dockerfile_path, required_packages, local_image_version, use_gpu, "cpu") @pytest.mark.gpu -@pytest.mark.parametrize("dockerfile_path, required_packages", [ - ("keras.test.Dockerfile", ['keras']), - ("autogluon.test.Dockerfile", ['autogluon']), - ("matplotlib.test.Dockerfile", ['matplotlib']), - ("sagemaker-headless-execution-driver.test.Dockerfile", ['sagemaker-headless-execution-driver']), - ("scipy.test.Dockerfile", ['scipy']), - ("numpy.test.Dockerfile", ['numpy']), - ("boto3.test.Dockerfile", ['boto3']), - ("pandas.test.Dockerfile", ['pandas']), - ("sm-python-sdk.test.Dockerfile", ['sagemaker-python-sdk']), - ("pytorch.examples.Dockerfile", ['pytorch']), - ("tensorflow.examples.Dockerfile", ['tensorflow']), - ("glue-sessions.test.Dockerfile", ['aws-glue-sessions']), - ("jupyter-ai.test.Dockerfile", ['jupyter-ai']), - ("jupyter-dash.test.Dockerfile", ['jupyter-dash']), - ("jupyterlab-lsp.test.Dockerfile", ['jupyterlab-lsp']), - ("jupyter-lsp-server.test.Dockerfile", ['jupyter-lsp-server']), - ("notebook.test.Dockerfile", ['notebook']), - ("glue-sessions.test.Dockerfile", ['aws-glue-sessions']), - ("altair.test.Dockerfile", ['altair']), - ("sagemaker-studio-analytics-extension.test.Dockerfile", ['sagemaker-studio-analytics-extension']), - ("amazon-codewhisperer-jupyterlab-ext.test.Dockerfile", ['amazon-codewhisperer-jupyterlab-ext']), - ("jupyterlab-git.test.Dockerfile", ['jupyterlab-git']), - ("maxdome_jupyter_server_extension.test.Dockerfile", ['maxdome_jupyter_server_extension']), - ("maxdome_jupyter_session_manager.test.Dockerfile", ['maxdome_jupyter_session_manager']), - ("maxdome_toolkit_cli.test.Dockerfile",['maxdome_toolkit_cli']), - ("git-remote-codecommit.test.Dockerfile",['git-remote-codecommit']), - ("serve.test.Dockerfile", ['serve-langchain'])]) -def test_dockerfiles_for_gpu(dockerfile_path: str, required_packages: List[str], - local_image_version: str, use_gpu: bool): - _validate_docker_images(dockerfile_path, required_packages, local_image_version, use_gpu, 'gpu') - +@pytest.mark.parametrize( + "dockerfile_path, required_packages", + [ + ("keras.test.Dockerfile", ["keras"]), + ("autogluon.test.Dockerfile", ["autogluon"]), + ("matplotlib.test.Dockerfile", ["matplotlib"]), + ("sagemaker-headless-execution-driver.test.Dockerfile", ["sagemaker-headless-execution-driver"]), + ("scipy.test.Dockerfile", ["scipy"]), + ("numpy.test.Dockerfile", ["numpy"]), + ("boto3.test.Dockerfile", ["boto3"]), + ("pandas.test.Dockerfile", ["pandas"]), + ("sm-python-sdk.test.Dockerfile", ["sagemaker-python-sdk"]), + ("pytorch.examples.Dockerfile", ["pytorch"]), + ("tensorflow.examples.Dockerfile", ["tensorflow"]), + ("glue-sessions.test.Dockerfile", ["aws-glue-sessions"]), + ("jupyter-ai.test.Dockerfile", ["jupyter-ai"]), + ("jupyter-dash.test.Dockerfile", ["jupyter-dash"]), + ("jupyterlab-lsp.test.Dockerfile", ["jupyterlab-lsp"]), + ("jupyter-lsp-server.test.Dockerfile", ["jupyter-lsp-server"]), + ("sagemaker-code-editor.test.Dockerfile", ["sagemaker-code-editor"]), + ("notebook.test.Dockerfile", ["notebook"]), + ("glue-sessions.test.Dockerfile", ["aws-glue-sessions"]), + ("altair.test.Dockerfile", ["altair"]), + ("sagemaker-studio-analytics-extension.test.Dockerfile", ["sagemaker-studio-analytics-extension"]), + ("amazon-codewhisperer-jupyterlab-ext.test.Dockerfile", ["amazon-codewhisperer-jupyterlab-ext"]), + ("jupyterlab-git.test.Dockerfile", ["jupyterlab-git"]), + ("amazon-sagemaker-sql-magic.test.Dockerfile", ["amazon-sagemaker-sql-magic"]), + ("amazon_sagemaker_sql_editor.test.Dockerfile", ["amazon_sagemaker_sql_editor"]), + ("serve.test.Dockerfile", ["serve-langchain"]), + ], +) +def test_dockerfiles_for_gpu( + dockerfile_path: str, required_packages: List[str], local_image_version: str, use_gpu: bool +): + _validate_docker_images(dockerfile_path, required_packages, local_image_version, use_gpu, "gpu") # The following is a simple function to check whether the local machine has at least 1 GPU and some Nvidia driver @@ -88,80 +93,84 @@ def test_dockerfiles_for_gpu(dockerfile_path: str, required_packages: List[str], def _is_nvidia_drivers_available() -> bool: exitcode, output = subprocess.getstatusoutput("nvidia-smi --query-gpu=driver_version --format=csv,noheader --id=0") if exitcode == 0: - print(f'Found Nvidia driver version: {output}') + print(f"Found Nvidia driver version: {output}") else: - print(f'No Nvidia drivers found on the machine. Error output: {output}') + print(f"No Nvidia drivers found on the machine. Error output: {output}") return exitcode == 0 def _check_docker_file_existence(dockerfile_name: str, test_artifacts_path: str): - if not os.path.exists(f'{test_artifacts_path}/{dockerfile_name}'): - pytest.skip(f'Skipping test because {dockerfile_name} does not exist.') + if not os.path.exists(f"{test_artifacts_path}/{dockerfile_name}"): + pytest.skip(f"Skipping test because {dockerfile_name} does not exist.") -def _check_required_package_constraints(target_version: Version, required_packages: List[str], - image_type: str): +def _check_required_package_constraints(target_version: Version, required_packages: List[str], image_type: str): target_version_dir = get_dir_for_version(target_version) if not os.path.exists(target_version_dir): - pytest.skip(f'Skipping test because {target_version_dir} does not exist.') + pytest.skip(f"Skipping test because {target_version_dir} does not exist.") # fetch the env.out file for this image_type - env_out_file_name = next(config['env_out_filename'] for config in _image_generator_configs if - config['image_type'] == image_type) - env_out_path = f'{target_version_dir}/{env_out_file_name}' + env_out_file_name = next( + config["env_out_filename"] for config in _image_generator_configs if config["image_type"] == image_type + ) + env_out_path = f"{target_version_dir}/{env_out_file_name}" if not os.path.exists(env_out_path): - pytest.skip(f'Skipping test because {env_out_path} does not exist.') + pytest.skip(f"Skipping test because {env_out_path} does not exist.") target_match_spec_out = get_match_specs(env_out_path) for required_package in required_packages: if required_package not in target_match_spec_out: - pytest.skip(f'Skipping test because {required_package} is not present in {env_out_file_name}') + pytest.skip(f"Skipping test because {required_package} is not present in {env_out_file_name}") -def _validate_docker_images(dockerfile_path: str, required_packages: List[str], - local_image_version: str, use_gpu: bool, image_type: str): +def _validate_docker_images( + dockerfile_path: str, required_packages: List[str], local_image_version: str, use_gpu: bool, image_type: str +): target_version = get_semver(local_image_version) - test_artifacts_path = f'test/test_artifacts/v{str(target_version.major)}' + test_artifacts_path = f"test/test_artifacts/v{str(target_version.major)}" _check_docker_file_existence(dockerfile_path, test_artifacts_path) _check_required_package_constraints(target_version, required_packages, image_type) - image_tag_generator_from_config = next(config['image_tag_generator'] for config in - _image_generator_configs if config['image_type'] == - image_type) + image_tag_generator_from_config = next( + config["image_tag_generator"] for config in _image_generator_configs if config["image_type"] == image_type + ) docker_image_tag = image_tag_generator_from_config.format(image_version=local_image_version) - docker_image_identifier = f'localhost/sagemaker-distribution:{docker_image_tag}' - print(f'Will start running test for: {dockerfile_path} against: {docker_image_identifier}') + docker_image_identifier = f"localhost/sagemaker-distribution:{docker_image_tag}" + print(f"Will start running test for: {dockerfile_path} against: {docker_image_identifier}") try: - image, _ = _docker_client.images.build(path=test_artifacts_path, - dockerfile=dockerfile_path, - tag=dockerfile_path.lower().replace('.', '-'), - rm=True, buildargs={'COSMOS_IMAGE': docker_image_identifier}) + image, _ = _docker_client.images.build( + path=test_artifacts_path, + dockerfile=dockerfile_path, + shmsize="512000000", + tag=dockerfile_path.lower().replace(".", "-"), + rm=True, + buildargs={"SAGEMAKER_DISTRIBUTION_IMAGE": docker_image_identifier}, + ) except BuildError as e: for line in e.build_log: - if 'stream' in line: - print(line['stream'].strip()) + if "stream" in line: + print(line["stream"].strip()) # After printing the logs raise the exception (which is the old behavior) raise - print(f'Built a test image: {image.id}, will now execute its default CMD.') + print(f"Built a test image: {image.id}, will now execute its default CMD.") # Execute the new image once. Mark the current test successful/failed based on container's exit code. (We assume # that the image would have supplied the right entrypoint. device_requests = [] if use_gpu and _is_nvidia_drivers_available(): # Pass all available GPUs, if available. - device_requests.append(docker.types.DeviceRequest(count=-1, capabilities=[['gpu']])) + device_requests.append(docker.types.DeviceRequest(count=-1, capabilities=[["gpu"]])) # We assume that the image above would have supplied the right entrypoint, so we just run it as is. If the container # didn't execute successfully, the Docker client below will throw an error and fail the test. # A consequence of this design decision is that any test assertions should go inside the container's entry-point. - container = _docker_client.containers.run(image=image.id, detach=True, stderr=True, - device_requests=device_requests) + container = _docker_client.containers.run(image=image.id, detach=True, stderr=True, device_requests=device_requests) # Wait till container completes execution result = container.wait() exit_code = result["StatusCode"] if exit_code != 0: # Print STD out only during test failure - print(container.logs().decode('utf-8')) + print(container.logs().decode("utf-8")) # Remove the container. container.remove(force=True) _docker_client.images.remove(image=image.id, force=True) diff --git a/test/test_main.py b/test/test_main.py index 23451010..e1ed2752 100644 --- a/test/test_main.py +++ b/test/test_main.py @@ -1,33 +1,35 @@ from __future__ import absolute_import import base64 -import boto3 + import pytest pytestmark = pytest.mark.unit +import os +from unittest.mock import MagicMock, Mock, patch + +from changelog_generator import _derive_changeset +from config import _image_generator_configs from main import ( - create_and_get_semver_dir, + _get_config_for_image, _get_version_tags, + _push_images_upstream, + build_images, + create_and_get_semver_dir, create_major_version_artifacts, create_minor_version_artifacts, create_patch_version_artifacts, - build_images, - _push_images_upstream, - _get_config_for_image ) -from config import _image_generator_configs -from changelog_generator import _derive_changeset -from release_notes_generator import _get_image_type_package_metadata, \ - _get_package_to_image_type_mapping +from release_notes_generator import ( + _get_image_type_package_metadata, + _get_package_to_image_type_mapping, +) from utils import get_semver -import os -from unittest.mock import patch, Mock, MagicMock class CreateVersionArgs: - def __init__(self, runtime_version_upgrade_type, base_patch_version, - pre_release_identifier=None, force=False): + def __init__(self, runtime_version_upgrade_type, base_patch_version, pre_release_identifier=None, force=False): self.base_patch_version = base_patch_version self.runtime_version_upgrade_type = runtime_version_upgrade_type self.pre_release_identifier = pre_release_identifier @@ -42,101 +44,110 @@ def __init__(self, target_patch_version, target_ecr_repo=None, force=False): self.force = force -def _create_docker_cpu_env_in_file(file_path, required_package='conda-forge::ipykernel'): - with open(file_path, 'w') as env_in_file: - env_in_file.write(f'{required_package}\n') +def _create_docker_cpu_env_in_file(file_path, required_package="conda-forge::ipykernel"): + with open(file_path, "w") as env_in_file: + env_in_file.write(f"{required_package}\n") -def _create_docker_cpu_env_out_file(file_path, - package_metadata='https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.21.3-pyh210e3f2_0.conda#8c1f6bf32a6ca81232c4853d4165ca67'): - with open(file_path, 'w') as env_out_file: - env_out_file.write(f'''# This file may be used to create an environment using: +def _create_docker_cpu_env_out_file( + file_path, + package_metadata="https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.21.3-pyh210e3f2_0.conda#8c1f6bf32a6ca81232c4853d4165ca67", +): + with open(file_path, "w") as env_out_file: + env_out_file.write( + f"""# This file may be used to create an environment using: # $ conda create --name --file # platform: linux-64 @EXPLICIT -{package_metadata}\n''') +{package_metadata}\n""" + ) def _create_docker_gpu_env_in_file(file_path): - with open(file_path, 'w') as env_in_file: - env_in_file.write('conda-forge::numpy\n') + with open(file_path, "w") as env_in_file: + env_in_file.write("conda-forge::numpy\n") -def _create_additional_packages_gpu_env_in_file(file_path, package_metadata='conda-forge::sagemaker-python-sdk'): - with open(file_path, 'w') as env_in_file: - env_in_file.write(package_metadata + '\n') +def _create_additional_packages_gpu_env_in_file(file_path, package_metadata="conda-forge::sagemaker-python-sdk"): + with open(file_path, "w") as env_in_file: + env_in_file.write(package_metadata + "\n") def _create_docker_gpu_env_out_file(file_path): - with open(file_path, 'w') as env_out_file: - env_out_file.write('''# This file may be used to create an environment using: + with open(file_path, "w") as env_out_file: + env_out_file.write( + """# 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/numpy-1.24.2-py38h10c12cc_0.conda#05592c85b9f6931dc2df1e80c0d56294\n''') +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.24.2-py38h10c12cc_0.conda#05592c85b9f6931dc2df1e80c0d56294\n""" + ) def _create_template_docker_file(file_path): - with open(file_path, 'w') as docker_file: - docker_file.write('''ARG TAG_FOR_BASE_MICROMAMBA_IMAGE - FROM mambaorg / micromamba:$TAG_FOR_BASE_MICROMAMBA_IMAGE\ntemplate_dockerfile\n''') + with open(file_path, "w") as docker_file: + docker_file.write( + """ARG TAG_FOR_BASE_MICROMAMBA_IMAGE + FROM mambaorg / micromamba:$TAG_FOR_BASE_MICROMAMBA_IMAGE\ntemplate_dockerfile\n""" + ) def _create_prev_docker_file(file_path): - with open(file_path, 'w') as docker_file: - docker_file.write('''ARG TAG_FOR_BASE_MICROMAMBA_IMAGE - FROM mambaorg / micromamba:$TAG_FOR_BASE_MICROMAMBA_IMAGE\nprevious_dockerfile\n''') + with open(file_path, "w") as docker_file: + docker_file.write( + """ARG TAG_FOR_BASE_MICROMAMBA_IMAGE + FROM mambaorg / micromamba:$TAG_FOR_BASE_MICROMAMBA_IMAGE\nprevious_dockerfile\n""" + ) -def _create_new_version_artifacts_helper(mocker, tmp_path, version, target_version): +def _create_new_version_artifacts_helper(mocker, tmp_path, version, target_version): def mock_get_dir_for_version(base_version): - pre_release_suffix = '/v' + str(base_version) if base_version.prerelease else '' - version_string = f'v{base_version.major}.{base_version.minor}.{base_version.patch}' + \ - pre_release_suffix + pre_release_suffix = "/v" + str(base_version) if base_version.prerelease else "" + version_string = f"v{base_version.major}.{base_version.minor}.{base_version.patch}" + pre_release_suffix # get_dir_for_version returns a str and not PosixPath return str(tmp_path) + "/" + version_string - mocker.patch('main.get_dir_for_version', side_effect=mock_get_dir_for_version) + mocker.patch("main.get_dir_for_version", side_effect=mock_get_dir_for_version) input_version = get_semver(version) # Create directory for base version input_version_dir = create_and_get_semver_dir(input_version) # Create env.in and env.out for base version - _create_docker_cpu_env_in_file(input_version_dir + '/cpu.env.in') - _create_docker_gpu_env_in_file(input_version_dir + '/gpu.env.in') - _create_docker_cpu_env_out_file(input_version_dir + '/cpu.env.out') - _create_docker_gpu_env_out_file(input_version_dir + '/gpu.env.out') - _create_prev_docker_file(input_version_dir + '/Dockerfile') - os.makedirs(tmp_path / 'template') + _create_docker_cpu_env_in_file(input_version_dir + "/cpu.env.in") + _create_docker_gpu_env_in_file(input_version_dir + "/gpu.env.in") + _create_docker_cpu_env_out_file(input_version_dir + "/cpu.env.out") + _create_docker_gpu_env_out_file(input_version_dir + "/gpu.env.out") + _create_prev_docker_file(input_version_dir + "/Dockerfile") + os.makedirs(tmp_path / "template") next_version = get_semver(target_version) - next_major_version = 'v' + str(next_version.major) - os.makedirs(tmp_path / 'template' / next_major_version) + next_major_version = "v" + str(next_version.major) + os.makedirs(tmp_path / "template" / next_major_version) if next_version.major == 1: # Create dirs directory under template - os.makedirs(tmp_path / 'template' / next_major_version / 'dirs') - _create_template_docker_file(tmp_path / 'template' / next_major_version / 'Dockerfile') + os.makedirs(tmp_path / "template" / next_major_version / "dirs") + _create_template_docker_file(tmp_path / "template" / next_major_version / "Dockerfile") -def _create_additional_packages_env_in_file_helper(mocker, tmp_path, version, - include_additional_package=False, - use_existing_package_as_additional_package=False): +def _create_additional_packages_env_in_file_helper( + mocker, tmp_path, version, include_additional_package=False, use_existing_package_as_additional_package=False +): if include_additional_package: + def mock_get_dir_for_version(base_version): - pre_release_suffix = '/v' + str(base_version) if base_version.prerelease else '' - version_string = f'v{base_version.major}.{base_version.minor}.{base_version.patch}' + \ - pre_release_suffix + pre_release_suffix = "/v" + str(base_version) if base_version.prerelease else "" + version_string = f"v{base_version.major}.{base_version.minor}.{base_version.patch}" + pre_release_suffix # get_dir_for_version returns a str and not PosixPath return str(tmp_path) + "/" + version_string - mocker.patch('main.get_dir_for_version', side_effect=mock_get_dir_for_version) + mocker.patch("main.get_dir_for_version", side_effect=mock_get_dir_for_version) input_version = get_semver(version) # Create directory for new version input_version_dir = create_and_get_semver_dir(input_version) - additional_env_in_file_path = input_version_dir + '/gpu.additional_packages_env.in' + additional_env_in_file_path = input_version_dir + "/gpu.additional_packages_env.in" if use_existing_package_as_additional_package: # Using an older version of numpy. - _create_additional_packages_gpu_env_in_file(additional_env_in_file_path, - 'conda-forge::numpy[version=\'>=1.0.4,' - '<1.1.0\']') + _create_additional_packages_gpu_env_in_file( + additional_env_in_file_path, "conda-forge::numpy[version='>=1.0.4," "<1.1.0']" + ) else: _create_additional_packages_gpu_env_in_file(additional_env_in_file_path) @@ -144,54 +155,53 @@ def mock_get_dir_for_version(base_version): def test_get_semver_version(): # Test invalid version string. with pytest.raises(Exception): - get_semver('1.124.5d') + get_semver("1.124.5d") # Test version string with build with pytest.raises(Exception): - get_semver('1.124.5+25') + get_semver("1.124.5+25") # Test version string with build and prerelease with pytest.raises(Exception): - get_semver('1.124.5-prerelease+25') + get_semver("1.124.5-prerelease+25") # Test valid version string. - assert get_semver('1.124.5') is not None - assert get_semver('1.124.5-beta') is not None + assert get_semver("1.124.5") is not None + assert get_semver("1.124.5-beta") is not None def test_new_version_artifacts_for_an_input_prerelease_version(): - input_version = '1.23.0-beta' - args = CreateVersionArgs('patch', input_version) + input_version = "1.23.0-beta" + args = CreateVersionArgs("patch", input_version) with pytest.raises(Exception): create_patch_version_artifacts(args) - args = CreateVersionArgs('minor', input_version) + args = CreateVersionArgs("minor", input_version) with pytest.raises(Exception): create_minor_version_artifacts(args) - args = CreateVersionArgs('major', input_version) + args = CreateVersionArgs("major", input_version) with pytest.raises(Exception): create_major_version_artifacts(args) -@patch('os.path.exists') -@patch('os.path.isdir') -@patch('shutil.rmtree') -@patch('os.makedirs') -@patch('os.listdir') -def test_create_and_get_semver_dir(mock_list_dir, mock_make_dirs, mock_rmtree, - mock_path_is_dir, mock_path_exists): +@patch("os.path.exists") +@patch("os.path.isdir") +@patch("shutil.rmtree") +@patch("os.makedirs") +@patch("os.listdir") +def test_create_and_get_semver_dir(mock_list_dir, mock_make_dirs, mock_rmtree, mock_path_is_dir, mock_path_exists): # case 1: Directory exists and exist_ok is False => Throws Exception mock_path_exists.return_value = True with pytest.raises(Exception): - create_and_get_semver_dir(get_semver('1.124.5')) + create_and_get_semver_dir(get_semver("1.124.5")) # Case 2: Instead of a directory in the path, a file exists. mock_path_is_dir.return_value = False with pytest.raises(Exception): - create_and_get_semver_dir(get_semver('1.124.5'), True) + create_and_get_semver_dir(get_semver("1.124.5"), True) # Happy case mock_path_is_dir.return_value = True mock_list_dir.return_value = [] - assert create_and_get_semver_dir(get_semver('1.124.5'), True) is not None + assert create_and_get_semver_dir(get_semver("1.124.5"), True) is not None def test_create_new_version_artifacts_for_invalid_upgrade_type(): - input = CreateVersionArgs('test_upgrade', '1.2.3') + input = CreateVersionArgs("test_upgrade", "1.2.3") with pytest.raises(Exception): create_major_version_artifacts(input) with pytest.raises(Exception): @@ -200,60 +210,62 @@ def test_create_new_version_artifacts_for_invalid_upgrade_type(): create_patch_version_artifacts(input) -def _create_and_assert_patch_version_upgrade(rel_path, mocker, tmp_path, - pre_release_identifier=None, - include_additional_package=False, - use_existing_package_as_additional_package=False): - input_version = '0.2.5' - next_version = get_semver('0.2.6') - new_version_dir = tmp_path / ('v' + str(next_version)) - base_version_dir = tmp_path / ('v' + input_version) +def _create_and_assert_patch_version_upgrade( + rel_path, + mocker, + tmp_path, + pre_release_identifier=None, + include_additional_package=False, + use_existing_package_as_additional_package=False, +): + input_version = "0.2.5" + next_version = get_semver("0.2.6") + new_version_dir = tmp_path / ("v" + str(next_version)) + base_version_dir = tmp_path / ("v" + input_version) if pre_release_identifier: - new_version_dir = new_version_dir / ('v' + str(next_version) + '-' + pre_release_identifier) - next_major_version_dir_name = 'v' + str(next_version.major) + new_version_dir = new_version_dir / ("v" + str(next_version) + "-" + pre_release_identifier) + next_major_version_dir_name = "v" + str(next_version.major) if next_version.major == 0: - rel_path.side_effect = [str(base_version_dir / 'Dockerfile')] + rel_path.side_effect = [str(base_version_dir / "Dockerfile")] else: - rel_path.side_effect = [str(base_version_dir, 'Dockerfile'), str(base_version_dir / 'dirs')] + rel_path.side_effect = [str(base_version_dir, "Dockerfile"), str(base_version_dir / "dirs")] _create_new_version_artifacts_helper(mocker, tmp_path, input_version, str(next_version)) - _create_additional_packages_env_in_file_helper(mocker, tmp_path, str(next_version), - include_additional_package, - use_existing_package_as_additional_package) + _create_additional_packages_env_in_file_helper( + mocker, tmp_path, str(next_version), include_additional_package, use_existing_package_as_additional_package + ) if include_additional_package: - args = CreateVersionArgs('patch', input_version, - pre_release_identifier=pre_release_identifier, force=True) + args = CreateVersionArgs("patch", input_version, pre_release_identifier=pre_release_identifier, force=True) else: - args = CreateVersionArgs('patch', input_version, - pre_release_identifier=pre_release_identifier) + args = CreateVersionArgs("patch", input_version, pre_release_identifier=pre_release_identifier) create_patch_version_artifacts(args) # Assert new version directory is created assert os.path.exists(new_version_dir) # Check cpu.env.in and gpu.env.in exists in the new directory new_version_dir_files = os.listdir(new_version_dir) - assert 'cpu.env.in' in new_version_dir_files - assert 'gpu.env.in' in new_version_dir_files - assert 'Dockerfile' in new_version_dir_files - with open(new_version_dir / 'Dockerfile', 'r') as f: - assert 'previous_dockerfile' in f.read() + assert "cpu.env.in" in new_version_dir_files + assert "gpu.env.in" in new_version_dir_files + assert "Dockerfile" in new_version_dir_files + with open(new_version_dir / "Dockerfile", "r") as f: + assert "previous_dockerfile" in f.read() if next_version.major >= 1: - assert 'dirs' in new_version_dir_files + assert "dirs" in new_version_dir_files if include_additional_package: - assert 'gpu.additional_packages_env.in' in new_version_dir_files - with open(new_version_dir / 'cpu.env.in', 'r') as f: + assert "gpu.additional_packages_env.in" in new_version_dir_files + with open(new_version_dir / "cpu.env.in", "r") as f: contents = f.read() # version of ipykernel in cpu.env.out is 6.21.3 # so we expect the version string to be >=6.21.3,<6.22.0 - expected_version_string = '>=6.21.3,<6.22.0' + expected_version_string = ">=6.21.3,<6.22.0" assert contents.find(expected_version_string) != -1 - with open(new_version_dir / 'gpu.env.in', 'r') as f: + with open(new_version_dir / "gpu.env.in", "r") as f: contents = f.read() # version of numpy in gpu.env.out is 1.24.2 # so we expect the version string to be >=1.24.2,<1.25.0 - expected_version_string = '>=1.24.2,<1.25.0' + expected_version_string = ">=1.24.2,<1.25.0" assert contents.find(expected_version_string) != -1 if include_additional_package and not use_existing_package_as_additional_package: - assert contents.find('sagemaker-python-sdk') != -1 + assert contents.find("sagemaker-python-sdk") != -1 @patch("os.path.relpath") @@ -262,83 +274,79 @@ def test_create_new_version_artifacts_for_patch_version_upgrade(rel_path, mocker @patch("os.path.relpath") -def test_create_new_patch_version_upgrade_with_existing_package_as_additional_packages(rel_path, - mocker, - tmp_path): - _create_and_assert_patch_version_upgrade(rel_path, mocker, tmp_path, - include_additional_package=True, - use_existing_package_as_additional_package=True) +def test_create_new_patch_version_upgrade_with_existing_package_as_additional_packages(rel_path, mocker, tmp_path): + _create_and_assert_patch_version_upgrade( + rel_path, mocker, tmp_path, include_additional_package=True, use_existing_package_as_additional_package=True + ) @patch("os.path.relpath") -def test_create_new_version_artifacts_for_patch_version_upgrade_with_additional_packages( - rel_path, mocker, tmp_path): - _create_and_assert_patch_version_upgrade(rel_path, mocker, tmp_path, - include_additional_package=True) +def test_create_new_version_artifacts_for_patch_version_upgrade_with_additional_packages(rel_path, mocker, tmp_path): + _create_and_assert_patch_version_upgrade(rel_path, mocker, tmp_path, include_additional_package=True) @patch("os.path.relpath") -def test_create_new_version_artifacts_for_patch_version_upgrade_with_prerelease(rel_path, mocker, - tmp_path): - _create_and_assert_patch_version_upgrade(rel_path, mocker, tmp_path, 'beta') - - -def _create_and_assert_minor_version_upgrade(rel_path, mocker, tmp_path, - pre_release_identifier=None, - include_additional_package=False, - use_existing_package_as_additional_package=False - ): - input_version = '1.2.5' - next_version = get_semver('1.3.0') - new_version_dir = tmp_path / ('v' + str(next_version)) +def test_create_new_version_artifacts_for_patch_version_upgrade_with_prerelease(rel_path, mocker, tmp_path): + _create_and_assert_patch_version_upgrade(rel_path, mocker, tmp_path, "beta") + + +def _create_and_assert_minor_version_upgrade( + rel_path, + mocker, + tmp_path, + pre_release_identifier=None, + include_additional_package=False, + use_existing_package_as_additional_package=False, +): + input_version = "1.2.5" + next_version = get_semver("1.3.0") + new_version_dir = tmp_path / ("v" + str(next_version)) if pre_release_identifier: - new_version_dir = new_version_dir / ('v' + str(next_version) + '-' + pre_release_identifier) - next_major_version_dir_name = 'v' + str(next_version.major) + new_version_dir = new_version_dir / ("v" + str(next_version) + "-" + pre_release_identifier) + next_major_version_dir_name = "v" + str(next_version.major) if next_version.major == 0: - rel_path.side_effect = [str(tmp_path / 'template' / next_major_version_dir_name / - 'Dockerfile')] + rel_path.side_effect = [str(tmp_path / "template" / next_major_version_dir_name / "Dockerfile")] else: - rel_path.side_effect = [str(tmp_path / 'template' / next_major_version_dir_name / - 'Dockerfile'), str(tmp_path / 'template' / - next_major_version_dir_name / 'dirs')] - _create_new_version_artifacts_helper(mocker, tmp_path, input_version, '1.3.0') - _create_additional_packages_env_in_file_helper(mocker, tmp_path, '1.3.0', - include_additional_package, - use_existing_package_as_additional_package) + rel_path.side_effect = [ + str(tmp_path / "template" / next_major_version_dir_name / "Dockerfile"), + str(tmp_path / "template" / next_major_version_dir_name / "dirs"), + ] + _create_new_version_artifacts_helper(mocker, tmp_path, input_version, "1.3.0") + _create_additional_packages_env_in_file_helper( + mocker, tmp_path, "1.3.0", include_additional_package, use_existing_package_as_additional_package + ) if include_additional_package: - args = CreateVersionArgs('minor', input_version, - pre_release_identifier=pre_release_identifier, force=True) + args = CreateVersionArgs("minor", input_version, pre_release_identifier=pre_release_identifier, force=True) else: - args = CreateVersionArgs('minor', input_version, - pre_release_identifier=pre_release_identifier) + args = CreateVersionArgs("minor", input_version, pre_release_identifier=pre_release_identifier) create_minor_version_artifacts(args) # Assert new version directory is created assert os.path.exists(new_version_dir) # Check cpu.env.in and gpu.env.in exists in the new directory new_version_dir_files = os.listdir(new_version_dir) - assert 'cpu.env.in' in new_version_dir_files - assert 'gpu.env.in' in new_version_dir_files - assert 'Dockerfile' in new_version_dir_files - with open(new_version_dir / 'Dockerfile', 'r') as f: - assert 'template_dockerfile' in f.read() + assert "cpu.env.in" in new_version_dir_files + assert "gpu.env.in" in new_version_dir_files + assert "Dockerfile" in new_version_dir_files + with open(new_version_dir / "Dockerfile", "r") as f: + assert "template_dockerfile" in f.read() if next_version.major >= 1: - assert 'dirs' in new_version_dir_files + assert "dirs" in new_version_dir_files if include_additional_package: - assert 'gpu.additional_packages_env.in' in new_version_dir_files - with open(new_version_dir / 'cpu.env.in', 'r') as f: + assert "gpu.additional_packages_env.in" in new_version_dir_files + with open(new_version_dir / "cpu.env.in", "r") as f: contents = f.read() # version of ipykernel in cpu.env.out is 6.21.3 # so we expect the version string to be >=6.21.3,<7.0.0 - expected_version_string = '>=6.21.3,<7.0.0' + expected_version_string = ">=6.21.3,<7.0.0" assert contents.find(expected_version_string) != -1 - with open(new_version_dir / 'gpu.env.in', 'r') as f: + with open(new_version_dir / "gpu.env.in", "r") as f: contents = f.read() # version of numpy in gpu.env.out is 1.24.2 # so we expect the version string to be >=1.24.2,<2.0.0 - expected_version_string = '>=1.24.2,<2.0.0' + expected_version_string = ">=1.24.2,<2.0.0" assert contents.find(expected_version_string) != -1 if include_additional_package and not use_existing_package_as_additional_package: - assert contents.find('sagemaker-python-sdk') != -1 + assert contents.find("sagemaker-python-sdk") != -1 @patch("os.path.relpath") @@ -347,84 +355,79 @@ def test_create_new_version_artifacts_for_minor_version_upgrade(rel_path, mocker @patch("os.path.relpath") -def test_create_new_minor_version_upgrade_with_existing_package_as_additional_packages(rel_path, - mocker, - tmp_path): - _create_and_assert_minor_version_upgrade(rel_path, mocker, tmp_path, - include_additional_package=True, - use_existing_package_as_additional_package=True) +def test_create_new_minor_version_upgrade_with_existing_package_as_additional_packages(rel_path, mocker, tmp_path): + _create_and_assert_minor_version_upgrade( + rel_path, mocker, tmp_path, include_additional_package=True, use_existing_package_as_additional_package=True + ) @patch("os.path.relpath") -def test_create_new_version_artifacts_for_minor_version_upgrade_with_additional_packages( - rel_path, mocker, tmp_path): - _create_and_assert_minor_version_upgrade(rel_path, mocker, tmp_path, - include_additional_package=True) - - +def test_create_new_version_artifacts_for_minor_version_upgrade_with_additional_packages(rel_path, mocker, tmp_path): + _create_and_assert_minor_version_upgrade(rel_path, mocker, tmp_path, include_additional_package=True) @patch("os.path.relpath") -def test_create_new_version_artifacts_for_minor_version_upgrade_with_prerelease(rel_path, mocker, - tmp_path): - _create_and_assert_minor_version_upgrade(rel_path, mocker, tmp_path, 'beta') - - -def _create_and_assert_major_version_upgrade(rel_path, mocker, tmp_path, - pre_release_identifier=None, - include_additional_package=False, - use_existing_package_as_additional_package=False): - input_version = '0.2.5' - next_version = get_semver('1.0.0') - new_version_dir = tmp_path / ('v' + str(next_version)) +def test_create_new_version_artifacts_for_minor_version_upgrade_with_prerelease(rel_path, mocker, tmp_path): + _create_and_assert_minor_version_upgrade(rel_path, mocker, tmp_path, "beta") + + +def _create_and_assert_major_version_upgrade( + rel_path, + mocker, + tmp_path, + pre_release_identifier=None, + include_additional_package=False, + use_existing_package_as_additional_package=False, +): + input_version = "0.2.5" + next_version = get_semver("1.0.0") + new_version_dir = tmp_path / ("v" + str(next_version)) if pre_release_identifier: - new_version_dir = new_version_dir / ('v' + str(next_version) + '-' + pre_release_identifier) - next_major_version_dir_name = 'v' + str(next_version.major) + new_version_dir = new_version_dir / ("v" + str(next_version) + "-" + pre_release_identifier) + next_major_version_dir_name = "v" + str(next_version.major) if next_version.major == 0: - rel_path.side_effect = [str(tmp_path / 'template' / next_major_version_dir_name / - 'Dockerfile')] + rel_path.side_effect = [str(tmp_path / "template" / next_major_version_dir_name / "Dockerfile")] else: - rel_path.side_effect = [str(tmp_path / 'template' / next_major_version_dir_name / - 'Dockerfile'), str(tmp_path / 'template' / - next_major_version_dir_name / 'dirs')] + rel_path.side_effect = [ + str(tmp_path / "template" / next_major_version_dir_name / "Dockerfile"), + str(tmp_path / "template" / next_major_version_dir_name / "dirs"), + ] _create_new_version_artifacts_helper(mocker, tmp_path, input_version, str(next_version)) - _create_additional_packages_env_in_file_helper(mocker, tmp_path, str(next_version), - include_additional_package, - use_existing_package_as_additional_package) + _create_additional_packages_env_in_file_helper( + mocker, tmp_path, str(next_version), include_additional_package, use_existing_package_as_additional_package + ) if include_additional_package: - args = CreateVersionArgs('major', input_version, - pre_release_identifier=pre_release_identifier, force=True) + args = CreateVersionArgs("major", input_version, pre_release_identifier=pre_release_identifier, force=True) else: - args = CreateVersionArgs('major', input_version, - pre_release_identifier=pre_release_identifier) + args = CreateVersionArgs("major", input_version, pre_release_identifier=pre_release_identifier) create_major_version_artifacts(args) # Assert new version directory is created assert os.path.exists(new_version_dir) # Check cpu.env.in and gpu.env.in exists in the new directory new_version_dir_files = os.listdir(new_version_dir) - assert 'cpu.env.in' in new_version_dir_files - assert 'gpu.env.in' in new_version_dir_files - assert 'Dockerfile' in new_version_dir_files - with open(new_version_dir / 'Dockerfile', 'r') as f: - assert 'template_dockerfile' in f.read() + assert "cpu.env.in" in new_version_dir_files + assert "gpu.env.in" in new_version_dir_files + assert "Dockerfile" in new_version_dir_files + with open(new_version_dir / "Dockerfile", "r") as f: + assert "template_dockerfile" in f.read() if next_version.major >= 1: - assert 'dirs' in new_version_dir_files + assert "dirs" in new_version_dir_files if include_additional_package: - assert 'gpu.additional_packages_env.in' in new_version_dir_files - with open(new_version_dir / 'cpu.env.in', 'r') as f: + assert "gpu.additional_packages_env.in" in new_version_dir_files + with open(new_version_dir / "cpu.env.in", "r") as f: contents = f.read() # version of ipykernel in cpu.env.out is 6.21.3 # so we expect the version string to be >=6.21.3, - expected_version_string = '>=6.21.3\'' + expected_version_string = ">=6.21.3'" assert contents.find(expected_version_string) != -1 - with open(new_version_dir / 'gpu.env.in', 'r') as f: + with open(new_version_dir / "gpu.env.in", "r") as f: contents = f.read() # version of numpy in gpu.env.out is 1.24.2 # so we expect the version string to be >=1.24.2, - expected_version_string = '>=1.24.2\'' + expected_version_string = ">=1.24.2'" assert contents.find(expected_version_string) != -1 if include_additional_package and not use_existing_package_as_additional_package: - assert contents.find('sagemaker-python-sdk') != -1 + assert contents.find("sagemaker-python-sdk") != -1 @patch("os.path.relpath") @@ -433,192 +436,187 @@ def test_create_new_version_artifacts_for_major_version_upgrade(rel_path, mocker @patch("os.path.relpath") -def test_create_new_major_version_upgrade_with_existing_package_as_additional_packages(rel_path, - mocker, - tmp_path): - _create_and_assert_major_version_upgrade(rel_path, mocker, tmp_path, - include_additional_package=True, - use_existing_package_as_additional_package=True) +def test_create_new_major_version_upgrade_with_existing_package_as_additional_packages(rel_path, mocker, tmp_path): + _create_and_assert_major_version_upgrade( + rel_path, mocker, tmp_path, include_additional_package=True, use_existing_package_as_additional_package=True + ) @patch("os.path.relpath") -def test_create_new_version_artifacts_for_major_version_upgrade_with_additional_packages( - rel_path, mocker, tmp_path): - _create_and_assert_major_version_upgrade(rel_path, mocker, tmp_path, - include_additional_package=True) - +def test_create_new_version_artifacts_for_major_version_upgrade_with_additional_packages(rel_path, mocker, tmp_path): + _create_and_assert_major_version_upgrade(rel_path, mocker, tmp_path, include_additional_package=True) @patch("os.path.relpath") -def test_create_new_version_artifacts_for_major_version_upgrade_with_prerelease(rel_path, mocker, - tmp_path): - _create_and_assert_major_version_upgrade(rel_path, mocker, tmp_path, 'beta') +def test_create_new_version_artifacts_for_major_version_upgrade_with_prerelease(rel_path, mocker, tmp_path): + _create_and_assert_major_version_upgrade(rel_path, mocker, tmp_path, "beta") def test_build_images(mocker, tmp_path): - mock_docker_from_env = MagicMock(name='_docker_client') - mocker.patch('main._docker_client', new=mock_docker_from_env) - version = '1.124.5' + mock_docker_from_env = MagicMock(name="_docker_client") + mocker.patch("main._docker_client", new=mock_docker_from_env) + version = "1.124.5" args = BuildImageArgs(version) def mock_get_dir_for_version(base_version): - version_string = f'v{base_version.major}.{base_version.minor}.{base_version.patch}' + version_string = f"v{base_version.major}.{base_version.minor}.{base_version.patch}" # get_dir_for_version returns a str and not a PosixPath return str(tmp_path) + "/" + version_string - mocker.patch('main.get_dir_for_version', side_effect=mock_get_dir_for_version) + mocker.patch("main.get_dir_for_version", side_effect=mock_get_dir_for_version) input_version = get_semver(version) # Create directory for base version input_version_dir = create_and_get_semver_dir(input_version) # Create env.in for base version - _create_docker_cpu_env_in_file(input_version_dir + '/cpu.env.in') - _create_docker_cpu_env_in_file(input_version_dir + '/gpu.env.in') - _create_prev_docker_file(input_version_dir + '/Dockerfile') + _create_docker_cpu_env_in_file(input_version_dir + "/cpu.env.in") + _create_docker_cpu_env_in_file(input_version_dir + "/gpu.env.in") + _create_prev_docker_file(input_version_dir + "/Dockerfile") # Assert env.out doesn't exist - assert os.path.exists(input_version_dir + '/cpu.env.out') is False - assert os.path.exists(input_version_dir + '/gpu.env.out') is False + assert os.path.exists(input_version_dir + "/cpu.env.out") is False + assert os.path.exists(input_version_dir + "/gpu.env.out") is False mock_image_1 = Mock() - mock_image_1.id.return_value = 'img1' + mock_image_1.id.return_value = "img1" mock_image_2 = Mock() - mock_image_2.id.return_value = 'img2' - mock_docker_from_env.images.build.side_effect = [(mock_image_1, 'logs1'), (mock_image_2, 'logs2')] - mock_docker_from_env.containers.run.side_effect = ['container_logs1'.encode('utf-8'), - 'container_logs2'.encode('utf-8')] + mock_image_2.id.return_value = "img2" + mock_docker_from_env.images.build.side_effect = [(mock_image_1, "logs1"), (mock_image_2, "logs2")] + mock_docker_from_env.containers.run.side_effect = [ + "container_logs1".encode("utf-8"), + "container_logs2".encode("utf-8"), + ] # Invoke build images build_images(args) # Assert env.out exists - assert os.path.exists(input_version_dir + '/cpu.env.out') - assert os.path.exists(input_version_dir + '/gpu.env.out') + assert os.path.exists(input_version_dir + "/cpu.env.out") + assert os.path.exists(input_version_dir + "/gpu.env.out") # Validate the contents of env.out actual_output = set() - with open(input_version_dir + '/cpu.env.out', 'r') as f: + with open(input_version_dir + "/cpu.env.out", "r") as f: actual_output.add(f.read()) - with open(input_version_dir + '/gpu.env.out', 'r') as f: + with open(input_version_dir + "/gpu.env.out", "r") as f: actual_output.add(f.read()) - expected_output = {'container_logs1', 'container_logs2'} + expected_output = {"container_logs1", "container_logs2"} assert actual_output == expected_output -@patch('os.path.exists') +@patch("os.path.exists") def test_get_version_tags(mock_path_exists): - version = get_semver('1.124.5') - file_name = 'cpu.env.out' + version = get_semver("1.124.5") + file_name = "cpu.env.out" # case 1: The given version is the latest for patch, minor and major mock_path_exists.side_effect = [False, False, False] - assert _get_version_tags(version, file_name) == ['1.124.5', '1.124', '1', 'latest'] + assert _get_version_tags(version, file_name) == ["1.124.5", "1.124", "1", "latest"] # case 2: The given version is the latest for patch, minor but not major # case 2.1 The major version is a prerelease version mock_path_exists.side_effect = [False, False, True, False] - assert _get_version_tags(version, file_name) == ['1.124.5', '1.124', '1', 'latest'] + assert _get_version_tags(version, file_name) == ["1.124.5", "1.124", "1", "latest"] # case 2.2 The major version is not a prerelease version mock_path_exists.side_effect = [False, False, True, True] - assert _get_version_tags(version, file_name) == ['1.124.5', '1.124', '1'] + assert _get_version_tags(version, file_name) == ["1.124.5", "1.124", "1"] # case 3: The given version is the latest for patch and major but not for minor # case 3.1 The minor version is a prerelease version (we need to mock path.exists for major # version twice - one for the actual directory, one for the docker file) mock_path_exists.side_effect = [False, True, False, True, True] - assert _get_version_tags(version, file_name) == ['1.124.5', '1.124', '1'] + assert _get_version_tags(version, file_name) == ["1.124.5", "1.124", "1"] # case 3.2 The minor version is not a prerelease version mock_path_exists.side_effect = [False, True, True] - assert _get_version_tags(version, file_name) == ['1.124.5', '1.124'] + assert _get_version_tags(version, file_name) == ["1.124.5", "1.124"] # case 4: The given version is not the latest for patch, minor, major # case 4.1 The patch version is a prerelease version (we need to mock path.exists for minor # and major twice - one for the actual directory, one for the docker file) mock_path_exists.side_effect = [True, False, True, True, True, True] - assert _get_version_tags(version, file_name) == ['1.124.5', '1.124'] + assert _get_version_tags(version, file_name) == ["1.124.5", "1.124"] # case 4.2 The patch version is not a prerelease version mock_path_exists.side_effect = [True, True] - assert _get_version_tags(version, file_name) == ['1.124.5'] + assert _get_version_tags(version, file_name) == ["1.124.5"] # case 5: The given version includes a prerelease identifier - assert _get_version_tags(get_semver('1.124.5-beta'), file_name) == ['1.124.5-beta'] + assert _get_version_tags(get_semver("1.124.5-beta"), file_name) == ["1.124.5-beta"] def _test_push_images_upstream(mocker, repository): boto3_client = MagicMock() - expected_client_name = 'ecr-public' if repository.startswith('public.ecr.aws') else 'ecr' - boto3_mocker = mocker.patch('boto3.client', return_value=boto3_client) - mock_docker_from_env = MagicMock(name='_docker_client') - mocker.patch('main._docker_client', new=mock_docker_from_env) - authorization_token_string = 'username:password' - encoded_authorization_token = base64.b64encode(authorization_token_string.encode('ascii')) - authorization_data = { - 'authorizationToken': encoded_authorization_token - } - if expected_client_name == 'ecr': + expected_client_name = "ecr-public" if repository.startswith("public.ecr.aws") else "ecr" + boto3_mocker = mocker.patch("boto3.client", return_value=boto3_client) + mock_docker_from_env = MagicMock(name="_docker_client") + mocker.patch("main._docker_client", new=mock_docker_from_env) + authorization_token_string = "username:password" + encoded_authorization_token = base64.b64encode(authorization_token_string.encode("ascii")) + authorization_data = {"authorizationToken": encoded_authorization_token} + if expected_client_name == "ecr": # Private ECR client returns a list of authorizationData. authorization_data = [authorization_data] - boto3_client.get_authorization_token.return_value = { - 'authorizationData': authorization_data - } + boto3_client.get_authorization_token.return_value = {"authorizationData": authorization_data} mock_docker_from_env.images.push.side_effect = None - _push_images_upstream([{'repository': repository, 'tag': '0.1'}], 'us-west-2') + _push_images_upstream([{"repository": repository, "tag": "0.1"}], "us-west-2") assert boto3_mocker.call_args[0][0] == expected_client_name def test_push_images_upstream_for_private_ecr_repository(mocker): - repository = 'aws_account_id.dkr.ecr.us-west-2.amazonaws.com/my-repository' + repository = "aws_account_id.dkr.ecr.us-west-2.amazonaws.com/my-repository" _test_push_images_upstream(mocker, repository) def test_push_images_upstream_for_public_ecr_repository(mocker): - repository = 'public.ecr.aws/registry_alias/my-repository' + repository = "public.ecr.aws/registry_alias/my-repository" _test_push_images_upstream(mocker, repository) -@patch('os.path.exists') +@patch("os.path.exists") def test_get_build_config_for_image(mock_path_exists, tmp_path): - - input_version_dir = str(tmp_path) + '/v2.0.0' + input_version_dir = str(tmp_path) + "/v2.0.0" image_generator_config = _image_generator_configs[0] # Case 1: Mock os.path.exists to return False mock_path_exists.return_value = False - assert image_generator_config == _get_config_for_image(input_version_dir, - image_generator_config, False) + assert image_generator_config == _get_config_for_image(input_version_dir, image_generator_config, False) # Case 2: Mock os.path.exists to return True but force is True mock_path_exists.return_value = True - assert image_generator_config == _get_config_for_image(input_version_dir, - image_generator_config, True) + assert image_generator_config == _get_config_for_image(input_version_dir, image_generator_config, True) # Case 3: Mock os.path.exists to return True and force is False mock_path_exists.return_value = True response = _get_config_for_image(input_version_dir, image_generator_config, False) - assert response['build_args']['ENV_IN_FILENAME'] == image_generator_config["env_out_filename"] - assert 'ARG_BASED_ENV_IN_FILENAME' not in response['build_args'] + assert response["build_args"]["ENV_IN_FILENAME"] == image_generator_config["env_out_filename"] + assert "ARG_BASED_ENV_IN_FILENAME" not in response["build_args"] def test_derive_changeset(tmp_path): - target_version_dir = str(tmp_path / 'v1.0.6') - source_version_dir = str(tmp_path / 'v1.0.5') + target_version_dir = str(tmp_path / "v1.0.6") + source_version_dir = str(tmp_path / "v1.0.5") os.makedirs(target_version_dir) os.makedirs(source_version_dir) # Create env.in of the source version _create_docker_cpu_env_in_file(source_version_dir + "/cpu.env.in") # Create env.out of the source version - _create_docker_cpu_env_out_file(source_version_dir + "/cpu.env.out", - package_metadata='https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.21.3-pyh210e3f_0.conda#8c1f6bf32a6ca81232c4853d4165ca67') + _create_docker_cpu_env_out_file( + source_version_dir + "/cpu.env.out", + package_metadata="https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.21.3-pyh210e3f_0.conda#8c1f6bf32a6ca81232c4853d4165ca67", + ) # Create env.in of the target version, which has additional dependency on boto3 - target_env_in_packages = 'conda-forge::ipykernel\nconda-forge::boto3' + target_env_in_packages = "conda-forge::ipykernel\nconda-forge::boto3" _create_docker_cpu_env_in_file(target_version_dir + "/cpu.env.in", required_package=target_env_in_packages) - target_env_out_packages = 'https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.21.6-pyh210e3f2_0.conda#8c1f6bf32a6ca81232c4853d4165ca67\n' \ - 'https://conda.anaconda.org/conda-forge/linux-64/boto3-1.2-cuda112py38hd_0.conda#8c1f6bf32a6ca81232c4853d4165ca67' + target_env_out_packages = ( + "https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.21.6-pyh210e3f2_0.conda#8c1f6bf32a6ca81232c4853d4165ca67\n" + "https://conda.anaconda.org/conda-forge/linux-64/boto3-1.2-cuda112py38hd_0.conda#8c1f6bf32a6ca81232c4853d4165ca67" + ) _create_docker_cpu_env_out_file(target_version_dir + "/cpu.env.out", package_metadata=target_env_out_packages) - expected_upgrades = {'ipykernel': ['6.21.3', '6.21.6']} - expected_new_packages = {'boto3': '1.2'} - actual_upgrades, actual_new_packages = _derive_changeset(target_version_dir, - source_version_dir, - _image_generator_configs[1]) + expected_upgrades = {"ipykernel": ["6.21.3", "6.21.6"]} + expected_new_packages = {"boto3": "1.2"} + actual_upgrades, actual_new_packages = _derive_changeset( + target_version_dir, source_version_dir, _image_generator_configs[1] + ) assert expected_upgrades == actual_upgrades assert expected_new_packages == actual_new_packages def test_generate_release_notes(tmp_path): - target_version_dir = str(tmp_path / 'v1.0.6') + target_version_dir = str(tmp_path / "v1.0.6") os.makedirs(target_version_dir) # Create env.in of the target version, which has additional dependency on boto3 - target_env_in_packages = 'conda-forge::ipykernel\nconda-forge::boto3' + target_env_in_packages = "conda-forge::ipykernel\nconda-forge::boto3" _create_docker_cpu_env_in_file(target_version_dir + "/cpu.env.in", required_package=target_env_in_packages) - target_env_out_packages = 'https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.21.6-pyh210e3f2_0.conda#8c1f6bf32a6ca81232c4853d4165ca67\n' \ - 'https://conda.anaconda.org/conda-forge/linux-64/boto3-1.23.4' \ - '-cuda112py38hd_0.conda#8c1f6bf32a6ca81232c4853d4165ca67' + target_env_out_packages = ( + "https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.21.6-pyh210e3f2_0.conda#8c1f6bf32a6ca81232c4853d4165ca67\n" + "https://conda.anaconda.org/conda-forge/linux-64/boto3-1.23.4" + "-cuda112py38hd_0.conda#8c1f6bf32a6ca81232c4853d4165ca67" + ) _create_docker_cpu_env_out_file(target_version_dir + "/cpu.env.out", package_metadata=target_env_out_packages) # GPU contains only numpy _create_docker_gpu_env_in_file(target_version_dir + "/gpu.env.in") @@ -626,11 +624,11 @@ def test_generate_release_notes(tmp_path): # Verify _get_image_type_package_metadata image_type_package_metadata = _get_image_type_package_metadata(target_version_dir) assert len(image_type_package_metadata) == 2 - assert image_type_package_metadata['gpu'] == {'numpy': '1.24.2'} - assert image_type_package_metadata['cpu'] == {'ipykernel': '6.21.6', 'boto3': '1.23.4'} + assert image_type_package_metadata["gpu"] == {"numpy": "1.24.2"} + assert image_type_package_metadata["cpu"] == {"ipykernel": "6.21.6", "boto3": "1.23.4"} # Verify _get_package_to_image_type_mapping package_to_image_type_mapping = _get_package_to_image_type_mapping(image_type_package_metadata) assert len(package_to_image_type_mapping) == 3 - assert package_to_image_type_mapping['numpy'] == {'gpu': '1.24.2'} - assert package_to_image_type_mapping['ipykernel'] == {'cpu': '6.21.6'} - assert package_to_image_type_mapping['boto3'] == {'cpu': '1.23.4'} + assert package_to_image_type_mapping["numpy"] == {"gpu": "1.24.2"} + assert package_to_image_type_mapping["ipykernel"] == {"cpu": "6.21.6"} + assert package_to_image_type_mapping["boto3"] == {"cpu": "1.23.4"} diff --git a/test/test_package_staleness.py b/test/test_package_staleness.py index a1a07b19..b26283a5 100644 --- a/test/test_package_staleness.py +++ b/test/test_package_staleness.py @@ -1,87 +1,95 @@ from __future__ import absolute_import -from conda.cli.python_api import run_command import pytest pytestmark = pytest.mark.unit -from utils import get_semver, get_match_specs -from package_staleness import _get_installed_package_versions_and_conda_versions +from unittest.mock import patch + from config import _image_generator_configs -from unittest.mock import patch, Mock, MagicMock +from package_staleness import _get_installed_package_versions_and_conda_versions +from utils import get_match_specs, get_semver def _create_env_in_docker_file(file_path): - with open(file_path, 'w') as env_in_file: - env_in_file.write(f'''# This file is auto-generated. + with open(file_path, "w") as env_in_file: + env_in_file.write( + f"""# This file is auto-generated. conda-forge::ipykernel -conda-forge::numpy[version=\'>=1.0.17,<2.0.0\']''') +conda-forge::numpy[version=\'>=1.0.17,<2.0.0\']""" + ) def _create_env_out_docker_file(file_path): - with open(file_path, 'w') as env_out_file: - env_out_file.write(f'''# This file may be used to create an environment using: + with open(file_path, "w") as env_out_file: + env_out_file.write( + f"""# This file may be used to create an environment using: # $ conda create --name --file # platform: linux-64 https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.21.3-pyh210e3f2_0.conda#8c1f6bf32a6ca81232c4853d4165ca67 -https://conda.anaconda.org/conda-forge/linux-64/numpy-1.24.2-py38h10c12cc_0.conda#05592c85b9f6931dc2df1e80c0d56294\n''') +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.24.2-py38h10c12cc_0.conda#05592c85b9f6931dc2df1e80c0d56294\n""" + ) def test_get_match_specs(tmp_path): - env_out_file_path = tmp_path / 'env.out' + env_out_file_path = tmp_path / "env.out" _create_env_out_docker_file(env_out_file_path) match_spec_out = get_match_specs(env_out_file_path) - ipykernel_match_spec = match_spec_out['ipykernel'] - assert str(ipykernel_match_spec.get('version')).removeprefix('==') == '6.21.3' - numpy_match_spec = match_spec_out['numpy'] - assert str(numpy_match_spec.get('version')).removeprefix('==') == '1.24.2' - assert ipykernel_match_spec.get('subdir') == 'noarch' - assert numpy_match_spec.get('subdir') == 'linux-64' + ipykernel_match_spec = match_spec_out["ipykernel"] + assert str(ipykernel_match_spec.get("version")).removeprefix("==") == "6.21.3" + numpy_match_spec = match_spec_out["numpy"] + assert str(numpy_match_spec.get("version")).removeprefix("==") == "1.24.2" + assert ipykernel_match_spec.get("subdir") == "noarch" + assert numpy_match_spec.get("subdir") == "linux-64" assert len(match_spec_out) == 2 # Test bad file path - env_out_file_path = tmp_path / 'bad.env.out' + env_out_file_path = tmp_path / "bad.env.out" match_spec_out = get_match_specs(env_out_file_path) assert len(match_spec_out) == 0 @patch("conda.cli.python_api.run_command") def test_get_installed_package_versions_and_conda_versions(mock_run_command, tmp_path): - mock_run_command.return_value = ('{"ipykernel":[{"version": "6.21.3"}], "numpy":[{"version": ' - '"1.24.3"},{"version":"1.26.0"},{"version":"2.1.0"}]}', '', 0) - env_in_file_path = tmp_path / 'cpu.env.in' + mock_run_command.return_value = ( + '{"ipykernel":[{"version": "6.21.3"}], "numpy":[{"version": ' + '"1.24.3"},{"version":"1.26.0"},{"version":"2.1.0"}]}', + "", + 0, + ) + env_in_file_path = tmp_path / "cpu.env.in" _create_env_in_docker_file(env_in_file_path) - env_out_file_path = tmp_path / 'cpu.env.out' + env_out_file_path = tmp_path / "cpu.env.out" _create_env_out_docker_file(env_out_file_path) # Validate results for patch version release # _image_generator_configs[1] is for CPU - match_spec_out, latest_package_versions_in_conda_forge = \ - _get_installed_package_versions_and_conda_versions(_image_generator_configs[1], - str(tmp_path), get_semver('0.4.2')) - ipykernel_match_spec = match_spec_out['ipykernel'] - assert str(ipykernel_match_spec.get('version')).removeprefix('==') == '6.21.3' - numpy_match_spec = match_spec_out['numpy'] - assert str(numpy_match_spec.get('version')).removeprefix('==') == '1.24.2' - assert latest_package_versions_in_conda_forge['ipykernel'] == '6.21.3' - assert latest_package_versions_in_conda_forge['numpy'] == '1.24.3' + match_spec_out, latest_package_versions_in_conda_forge = _get_installed_package_versions_and_conda_versions( + _image_generator_configs[1], str(tmp_path), get_semver("0.4.2") + ) + ipykernel_match_spec = match_spec_out["ipykernel"] + assert str(ipykernel_match_spec.get("version")).removeprefix("==") == "6.21.3" + numpy_match_spec = match_spec_out["numpy"] + assert str(numpy_match_spec.get("version")).removeprefix("==") == "1.24.2" + assert latest_package_versions_in_conda_forge["ipykernel"] == "6.21.3" + assert latest_package_versions_in_conda_forge["numpy"] == "1.24.3" # Validate results for minor version release - match_spec_out, latest_package_versions_in_conda_forge = \ - _get_installed_package_versions_and_conda_versions(_image_generator_configs[1], - str(tmp_path), get_semver('0.5.0')) - ipykernel_match_spec = match_spec_out['ipykernel'] - assert str(ipykernel_match_spec.get('version')).removeprefix('==') == '6.21.3' - numpy_match_spec = match_spec_out['numpy'] - assert str(numpy_match_spec.get('version')).removeprefix('==') == '1.24.2' - assert latest_package_versions_in_conda_forge['ipykernel'] == '6.21.3' + match_spec_out, latest_package_versions_in_conda_forge = _get_installed_package_versions_and_conda_versions( + _image_generator_configs[1], str(tmp_path), get_semver("0.5.0") + ) + ipykernel_match_spec = match_spec_out["ipykernel"] + assert str(ipykernel_match_spec.get("version")).removeprefix("==") == "6.21.3" + numpy_match_spec = match_spec_out["numpy"] + assert str(numpy_match_spec.get("version")).removeprefix("==") == "1.24.2" + assert latest_package_versions_in_conda_forge["ipykernel"] == "6.21.3" # Only for numpy there is a new minor version available. - assert latest_package_versions_in_conda_forge['numpy'] == '1.26.0' + assert latest_package_versions_in_conda_forge["numpy"] == "1.26.0" # Validate results for major version release - match_spec_out, latest_package_versions_in_conda_forge = \ - _get_installed_package_versions_and_conda_versions(_image_generator_configs[1], - str(tmp_path), get_semver('1.0.0')) - ipykernel_match_spec = match_spec_out['ipykernel'] - assert str(ipykernel_match_spec.get('version')).removeprefix('==') == '6.21.3' - numpy_match_spec = match_spec_out['numpy'] - assert str(numpy_match_spec.get('version')).removeprefix('==') == '1.24.2' - assert latest_package_versions_in_conda_forge['ipykernel'] == '6.21.3' + match_spec_out, latest_package_versions_in_conda_forge = _get_installed_package_versions_and_conda_versions( + _image_generator_configs[1], str(tmp_path), get_semver("1.0.0") + ) + ipykernel_match_spec = match_spec_out["ipykernel"] + assert str(ipykernel_match_spec.get("version")).removeprefix("==") == "6.21.3" + numpy_match_spec = match_spec_out["numpy"] + assert str(numpy_match_spec.get("version")).removeprefix("==") == "1.24.2" + assert latest_package_versions_in_conda_forge["ipykernel"] == "6.21.3" # Only for numpy there is a new major version available. - assert latest_package_versions_in_conda_forge['numpy'] == '2.1.0' + assert latest_package_versions_in_conda_forge["numpy"] == "2.1.0"