diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index efeb04ce1e1..c032dfb4184 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -51,18 +51,30 @@ jobs: with: distribution: 'temurin' java-version: ${{ matrix.java }} - - name: Cache local Maven repository + - name: Cache Maven dependencies uses: actions/cache@v5 with: path: | ~/.m2/repository !~/.m2/repository/org/apache/zeppelin/ - ~/.spark-dist - ~/.cache - ~/conda_pkgs_dir - key: ${{ runner.os }}-zeppelin-${{ hashFiles('**/pom.xml') }} + ~/.m2/wrapper + key: ${{ runner.os }}-${{ runner.arch }}-maven-v2-${{ hashFiles('**/pom.xml', '.mvn/**') }} restore-keys: | - ${{ runner.os }}-zeppelin- + ${{ runner.os }}-${{ runner.arch }}-maven-v2- + - name: Cache npm packages + uses: actions/cache@v5 + with: + path: ~/.npm + key: ${{ runner.os }}-${{ runner.arch }}-npm-v1-${{ hashFiles('zeppelin-web/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-${{ runner.arch }}-npm-v1- + - name: Cache locked Conda packages + uses: actions/cache@v5 + with: + path: ~/conda_pkgs_dir + key: ${{ runner.os }}-${{ runner.arch }}-conda-python-3.9-v1-${{ hashFiles('testing/locks/python-3.9-linux-64.conda.lock') }} + restore-keys: | + ${{ runner.os }}-${{ runner.arch }}-conda-python-3.9-v1- - name: install application with some interpreter run: ./mvnw install -Pbuild-distr -DskipTests -pl zeppelin-server,zeppelin-web,spark-submit,spark/scala-2.12,spark/scala-2.13,markdown,angular,shell -am -Pweb-classic -Phelium-dev -Pexamples ${MAVEN_ARGS} - name: install and test plugins @@ -71,12 +83,11 @@ jobs: uses: conda-incubator/setup-miniconda@v4 with: activate-environment: python_3 - environment-file: testing/env_python_3.9.yml - python-version: 3.9 - channels: conda-forge,defaults - channel-priority: strict + environment-file: testing/locks/python-3.9-linux-64.conda.lock + channels: conda-forge + conda-remove-defaults: true + auto-update-conda: false auto-activate: false - use-mamba: true - name: Show conda environment run: | conda list @@ -103,29 +114,35 @@ jobs: with: distribution: 'temurin' java-version: ${{ matrix.java }} - - name: Cache local Maven repository + - name: Cache Maven dependencies uses: actions/cache@v5 with: path: | ~/.m2/repository !~/.m2/repository/org/apache/zeppelin/ - ~/.spark-dist - ~/.cache - key: ${{ runner.os }}-zeppelin-${{ hashFiles('**/pom.xml') }} + ~/.m2/wrapper + key: ${{ runner.os }}-${{ runner.arch }}-maven-v2-${{ hashFiles('**/pom.xml', '.mvn/**') }} restore-keys: | - ${{ runner.os }}-zeppelin- + ${{ runner.os }}-${{ runner.arch }}-maven-v2- + - name: Cache locked TensorFlow Conda packages + uses: actions/cache@v5 + with: + path: ~/conda_pkgs_dir + key: ${{ runner.os }}-${{ runner.arch }}-conda-python-3.9-tensorflow-v1-${{ hashFiles('testing/locks/python-3.9-tensorflow-linux-64.conda.lock') }} + restore-keys: | + ${{ runner.os }}-${{ runner.arch }}-conda-python-3.9-tensorflow-v1- + ${{ runner.os }}-${{ runner.arch }}-conda-python-3.9-v1- - name: install environment run: ./mvnw install -DskipTests -am -pl ${INTERPRETERS} ${MAVEN_ARGS} - name: Setup conda environment with python 3.9 uses: conda-incubator/setup-miniconda@v4 with: activate-environment: python_3_with_tensorflow - environment-file: testing/env_python_3_with_tensorflow.yml - python-version: 3.9 - channels: conda-forge,defaults - channel-priority: strict + environment-file: testing/locks/python-3.9-tensorflow-linux-64.conda.lock + channels: conda-forge + conda-remove-defaults: true + auto-update-conda: false auto-activate: false - use-mamba: true - name: verify interpreter run: ./mvnw verify -am -pl ${INTERPRETERS} ${MAVEN_ARGS} @@ -147,27 +164,32 @@ jobs: with: distribution: 'temurin' java-version: ${{ matrix.java }} - - name: Cache local Maven repository + - name: Cache Maven dependencies uses: actions/cache@v5 with: path: | ~/.m2/repository !~/.m2/repository/org/apache/zeppelin/ - ~/.spark-dist - ~/.cache - key: ${{ runner.os }}-zeppelin-${{ hashFiles('**/pom.xml') }} + ~/.m2/wrapper + key: ${{ runner.os }}-${{ runner.arch }}-maven-v2-${{ hashFiles('**/pom.xml', '.mvn/**') }} restore-keys: | - ${{ runner.os }}-zeppelin- + ${{ runner.os }}-${{ runner.arch }}-maven-v2- + - name: Cache locked Conda packages + uses: actions/cache@v5 + with: + path: ~/conda_pkgs_dir + key: ${{ runner.os }}-${{ runner.arch }}-conda-python-3.9-v1-${{ hashFiles('testing/locks/python-3.9-linux-64.conda.lock') }} + restore-keys: | + ${{ runner.os }}-${{ runner.arch }}-conda-python-3.9-v1- - name: Setup conda environment with python ${{ matrix.python }} uses: conda-incubator/setup-miniconda@v4 with: activate-environment: python_3 - environment-file: testing/env_python_${{ matrix.python }}.yml - python-version: ${{ matrix.python }} - channels: conda-forge,defaults - channel-priority: strict + environment-file: testing/locks/python-3.9-linux-64.conda.lock + channels: conda-forge + conda-remove-defaults: true + auto-update-conda: false auto-activate: false - use-mamba: true - name: install environment run: | ./mvnw install -DskipTests -pl python,zeppelin-jupyter-interpreter -am ${MAVEN_ARGS} @@ -195,17 +217,23 @@ jobs: with: distribution: 'temurin' java-version: ${{ matrix.java }} - - name: Cache local Maven repository + - name: Cache Maven dependencies uses: actions/cache@v5 with: path: | ~/.m2/repository !~/.m2/repository/org/apache/zeppelin/ - ~/.spark-dist - ~/.cache - key: ${{ runner.os }}-zeppelin-${{ hashFiles('**/pom.xml') }} + ~/.m2/wrapper + key: ${{ runner.os }}-${{ runner.arch }}-maven-v2-${{ hashFiles('**/pom.xml', '.mvn/**') }} restore-keys: | - ${{ runner.os }}-zeppelin- + ${{ runner.os }}-${{ runner.arch }}-maven-v2- + - name: Cache locked Conda packages + uses: actions/cache@v5 + with: + path: ~/conda_pkgs_dir + key: ${{ runner.os }}-${{ runner.arch }}-conda-python-3.9-v1-${{ hashFiles('testing/locks/python-3.9-linux-64.conda.lock') }} + restore-keys: | + ${{ runner.os }}-${{ runner.arch }}-conda-python-3.9-v1- - name: install environment run: | ./mvnw install -DskipTests -Pintegration -pl zeppelin-interpreter-integration,zeppelin-web,spark-submit,spark/scala-2.12,spark/scala-2.13,markdown,flink-cmd,flink/flink-scala-2.12,jdbc,shell -am -Pweb-classic -Pflink-1.20 ${MAVEN_ARGS} @@ -214,12 +242,11 @@ jobs: uses: conda-incubator/setup-miniconda@v4 with: activate-environment: python_3 - environment-file: testing/env_python_3.yml - python-version: 3.9 - channels: conda-forge,defaults - channel-priority: strict + environment-file: testing/locks/python-3.9-linux-64.conda.lock + channels: conda-forge + conda-remove-defaults: true + auto-update-conda: false auto-activate: false - use-mamba: true - name: run tests run: ./mvnw test -pl zeppelin-interpreter-integration -Pintegration -DfailIfNoTests=false -Dtest=ZeppelinClientIntegrationTest,ZeppelinClientWithAuthIntegrationTest,ZSessionIntegrationTest,ShellIntegrationTest,JdbcIntegrationTest - name: Print zeppelin logs @@ -250,17 +277,30 @@ jobs: with: distribution: 'temurin' java-version: ${{ matrix.java }} - - name: Cache local Maven repository + - name: Cache Maven dependencies uses: actions/cache@v5 with: path: | ~/.m2/repository !~/.m2/repository/org/apache/zeppelin/ - ~/.spark-dist - ~/.cache - key: ${{ runner.os }}-zeppelin-${{ hashFiles('**/pom.xml') }} + ~/.m2/wrapper + key: ${{ runner.os }}-${{ runner.arch }}-maven-v2-${{ hashFiles('**/pom.xml', '.mvn/**') }} restore-keys: | - ${{ runner.os }}-zeppelin- + ${{ runner.os }}-${{ runner.arch }}-maven-v2- + - name: Cache locked Conda packages + uses: actions/cache@v5 + with: + path: ~/conda_pkgs_dir + key: ${{ runner.os }}-${{ runner.arch }}-conda-python-3.9-v1-${{ hashFiles('testing/locks/python-3.9-linux-64.conda.lock') }} + restore-keys: | + ${{ runner.os }}-${{ runner.arch }}-conda-python-3.9-v1- + - name: Cache locked PyFlink packages + uses: actions/cache@v5 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-${{ runner.arch }}-pip-pyflink-${{ matrix.flink-profile }}-v1-${{ hashFiles(format('testing/locks/pyflink-{0}-python-3.9.requirements.lock', matrix.flink-profile)) }} + restore-keys: | + ${{ runner.os }}-${{ runner.arch }}-pip-pyflink-${{ matrix.flink-profile }}-v1- - name: install environment for flink run: | ./mvnw install -DskipTests -am -pl flink/flink-scala-2.12,flink-cmd,zeppelin-interpreter-integration -Pflink-${{ matrix.flink-profile }} -Pintegration ${MAVEN_ARGS} @@ -269,12 +309,13 @@ jobs: uses: conda-incubator/setup-miniconda@v4 with: activate-environment: python_3_with_flink - environment-file: testing/env_python_3_with_flink_${{ matrix.flink }}.yml - python-version: ${{ matrix.python }} - channels: conda-forge,defaults - channel-priority: strict + environment-file: testing/locks/python-3.9-linux-64.conda.lock + channels: conda-forge + conda-remove-defaults: true + auto-update-conda: false auto-activate: false - use-mamba: true + - name: Install locked PyFlink ${{ matrix.flink-profile }} packages + run: python -m pip install --no-deps -r testing/locks/pyflink-${{ matrix.flink-profile }}-python-3.9.requirements.lock - name: run tests for flink run: ./mvnw verify -pl flink/flink-scala-2.12,flink-cmd,zeppelin-interpreter-integration -Pflink-${{ matrix.flink-profile }} -am -Pintegration -DfailIfNoTests=false -Dtest=org.apache.zeppelin.flink.*Test,FlinkIntegrationTest${{ matrix.flink }} ${MAVEN_ARGS} - name: Print zeppelin logs @@ -298,17 +339,23 @@ jobs: with: distribution: 'temurin' java-version: ${{ matrix.java }} - - name: Cache local Maven repository + - name: Cache Maven dependencies uses: actions/cache@v5 with: path: | ~/.m2/repository !~/.m2/repository/org/apache/zeppelin/ - ~/.spark-dist - ~/.cache - key: ${{ runner.os }}-zeppelin-${{ hashFiles('**/pom.xml') }} + ~/.m2/wrapper + key: ${{ runner.os }}-${{ runner.arch }}-maven-v2-${{ hashFiles('**/pom.xml', '.mvn/**') }} restore-keys: | - ${{ runner.os }}-zeppelin- + ${{ runner.os }}-${{ runner.arch }}-maven-v2- + - name: Cache locked Conda packages + uses: actions/cache@v5 + with: + path: ~/conda_pkgs_dir + key: ${{ runner.os }}-${{ runner.arch }}-conda-python-3.9-v1-${{ hashFiles('testing/locks/python-3.9-linux-64.conda.lock') }} + restore-keys: | + ${{ runner.os }}-${{ runner.arch }}-conda-python-3.9-v1- - name: install environment run: | ./mvnw install -DskipTests -pl zeppelin-interpreter-integration,zeppelin-web,spark-submit,spark/scala-2.12,spark/scala-2.13,markdown -am -Pweb-classic -Pintegration ${MAVEN_ARGS} @@ -317,12 +364,11 @@ jobs: uses: conda-incubator/setup-miniconda@v4 with: activate-environment: python_3 - environment-file: testing/env_python_3.yml - python-version: 3.9 - channels: conda-forge,defaults - channel-priority: strict + environment-file: testing/locks/python-3.9-linux-64.conda.lock + channels: conda-forge + conda-remove-defaults: true + auto-update-conda: false auto-activate: false - use-mamba: true - name: run tests run: ./mvnw test -pl zeppelin-interpreter-integration -Pintegration -Dtest=SparkSubmitIntegrationTest,ZeppelinSparkClusterTest32,SparkIntegrationTest32,ZeppelinSparkClusterTest33,SparkIntegrationTest33 -DfailIfNoTests=false ${MAVEN_ARGS} @@ -344,29 +390,34 @@ jobs: with: distribution: 'temurin' java-version: ${{ matrix.java }} - - name: Cache local Maven repository + - name: Cache Maven dependencies uses: actions/cache@v5 with: path: | ~/.m2/repository !~/.m2/repository/org/apache/zeppelin/ - ~/.spark-dist - ~/.cache - key: ${{ runner.os }}-zeppelin-${{ hashFiles('**/pom.xml') }} + ~/.m2/wrapper + key: ${{ runner.os }}-${{ runner.arch }}-maven-v2-${{ hashFiles('**/pom.xml', '.mvn/**') }} restore-keys: | - ${{ runner.os }}-zeppelin- + ${{ runner.os }}-${{ runner.arch }}-maven-v2- + - name: Cache locked Conda packages + uses: actions/cache@v5 + with: + path: ~/conda_pkgs_dir + key: ${{ runner.os }}-${{ runner.arch }}-conda-python-3.9-v1-${{ hashFiles('testing/locks/python-3.9-linux-64.conda.lock') }} + restore-keys: | + ${{ runner.os }}-${{ runner.arch }}-conda-python-3.9-v1- - name: install environment run: ./mvnw install -DskipTests -pl spark-submit,spark/scala-2.12,spark/scala-2.13 -am ${MAVEN_ARGS} - name: Setup conda environment with python ${{ matrix.python }} uses: conda-incubator/setup-miniconda@v4 with: activate-environment: python_3 - environment-file: testing/env_python_${{ matrix.python }}.yml - python-version: ${{ matrix.python }} - channels: conda-forge,defaults - channel-priority: strict + environment-file: testing/locks/python-3.9-linux-64.conda.lock + channels: conda-forge + conda-remove-defaults: true + auto-update-conda: false auto-activate: false - use-mamba: true - name: run spark-3.3 tests with scala-2.12 and python-${{ matrix.python }} run: | rm -rf spark/interpreter/metastore_db @@ -393,6 +444,9 @@ jobs: # https://github.com/apache/incubator-livy/blob/v0.8.0-incubating/dev/docker/livy-dev-spark/Dockerfile#L20 livy-0-8-with-spark-3-2-under-python39: runs-on: ubuntu-24.04 + env: + SPARK_VERSION: '3.2.4' + HADOOP_VERSION: '3.2' steps: - name: Checkout uses: actions/checkout@v5 @@ -403,35 +457,48 @@ jobs: with: distribution: 'temurin' java-version: 11 - - name: Cache local Maven repository + - name: Cache Maven dependencies uses: actions/cache@v5 with: path: | ~/.m2/repository !~/.m2/repository/org/apache/zeppelin/ - ~/.spark-dist - ~/.cache - key: ${{ runner.os }}-zeppelin-${{ hashFiles('**/pom.xml') }} + ~/.m2/wrapper + key: ${{ runner.os }}-${{ runner.arch }}-maven-v2-${{ hashFiles('**/pom.xml', '.mvn/**') }} restore-keys: | - ${{ runner.os }}-zeppelin- + ${{ runner.os }}-${{ runner.arch }}-maven-v2- + # Only this job downloads a standalone Spark archive; spark-test uses Maven artifacts. + - name: Cache Spark distributions + uses: actions/cache@v5 + with: + path: .spark-dist + key: ${{ runner.os }}-${{ runner.arch }}-spark-dist-v1-${{ env.SPARK_VERSION }}-hadoop${{ env.HADOOP_VERSION }}-${{ hashFiles('testing/downloadSpark.sh', 'pom.xml', 'spark/pom.xml') }} + restore-keys: | + ${{ runner.os }}-${{ runner.arch }}-spark-dist-v1-${{ env.SPARK_VERSION }}-hadoop${{ env.HADOOP_VERSION }}- + - name: Cache locked Conda packages + uses: actions/cache@v5 + with: + path: ~/conda_pkgs_dir + key: ${{ runner.os }}-${{ runner.arch }}-conda-python-3.9-v1-${{ hashFiles('testing/locks/python-3.9-linux-64.conda.lock') }} + restore-keys: | + ${{ runner.os }}-${{ runner.arch }}-conda-python-3.9-v1- - name: install environment run: | ./mvnw install -DskipTests -pl livy -am ${MAVEN_ARGS} - ./testing/downloadSpark.sh "3.2.4" "3.2" + ./testing/downloadSpark.sh "${SPARK_VERSION}" "${HADOOP_VERSION}" ./testing/downloadLivy.sh "0.8.0-incubating" "2.12" - name: Setup conda environment with python 3.9 uses: conda-incubator/setup-miniconda@v4 with: activate-environment: python_3 - environment-file: testing/env_python_3.9.yml - python-version: 3.9 - channels: conda-forge,defaults - channel-priority: strict + environment-file: testing/locks/python-3.9-linux-64.conda.lock + channels: conda-forge + conda-remove-defaults: true + auto-update-conda: false auto-activate: false - use-mamba: true - name: run tests run: | - export SPARK_HOME=$PWD/spark-3.2.4-bin-hadoop3.2 + export SPARK_HOME=$PWD/spark-${SPARK_VERSION}-bin-hadoop${HADOOP_VERSION} export LIVY_HOME=$PWD/apache-livy-0.8.0-incubating_2.12-bin ./mvnw verify -pl livy ${MAVEN_ARGS} diff --git a/.github/workflows/frontend.yml b/.github/workflows/frontend.yml index 08af6bf6998..e7da04d72d5 100644 --- a/.github/workflows/frontend.yml +++ b/.github/workflows/frontend.yml @@ -180,27 +180,39 @@ jobs: with: distribution: 'temurin' java-version: 11 - - name: Cache local Maven repository + - name: Cache Maven dependencies uses: actions/cache@v5 with: path: | ~/.m2/repository !~/.m2/repository/org/apache/zeppelin/ - ~/.spark-dist - ~/.cache - key: ${{ runner.os }}-zeppelin-${{ hashFiles('**/pom.xml') }} + ~/.m2/wrapper + key: ${{ runner.os }}-${{ runner.arch }}-maven-v2-${{ hashFiles('**/pom.xml', '.mvn/**') }} restore-keys: | - ${{ runner.os }}-zeppelin- + ${{ runner.os }}-${{ runner.arch }}-maven-v2- + - name: Cache npm packages + uses: actions/cache@v5 + with: + path: ~/.npm + key: ${{ runner.os }}-${{ runner.arch }}-npm-v1-${{ hashFiles('zeppelin-web/package-lock.json', 'zeppelin-web-angular/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-${{ runner.arch }}-npm-v1- + - name: Cache locked Conda packages + uses: actions/cache@v5 + with: + path: ~/conda_pkgs_dir + key: ${{ runner.os }}-${{ runner.arch }}-conda-python-3.9-v1-${{ hashFiles('testing/locks/python-3.9-linux-64.conda.lock') }} + restore-keys: | + ${{ runner.os }}-${{ runner.arch }}-conda-python-3.9-v1- - name: Setup conda environment with python 3.9 uses: conda-incubator/setup-miniconda@v4 with: activate-environment: python_3 - environment-file: testing/env_python_3.yml - python-version: 3.9 - channels: conda-forge,defaults - channel-priority: strict + environment-file: testing/locks/python-3.9-linux-64.conda.lock + channels: conda-forge + conda-remove-defaults: true + auto-update-conda: false auto-activate: false - use-mamba: true - name: Install Environment run: | ./mvnw clean install -DskipTests -am -pl zeppelin-integration -Pweb-classic -Pintegration -Pspark-scala-2.12 -Pspark-3.5 -Pweb-dist ${MAVEN_ARGS} diff --git a/testing/env_python_3.9.yml b/testing/env_python_3.9.yml index d125b9ce70c..9ef1e66e3ff 100644 --- a/testing/env_python_3.9.yml +++ b/testing/env_python_3.9.yml @@ -1,8 +1,8 @@ name: python_3 channels: - conda-forge - - defaults dependencies: + - python=3.9 - pycodestyle - scipy - numpy=1.19.5 diff --git a/testing/env_python_3.yml b/testing/env_python_3.yml index b4f280eb527..ea00005c8a7 100644 --- a/testing/env_python_3.yml +++ b/testing/env_python_3.yml @@ -1,8 +1,8 @@ name: python_3 channels: - conda-forge - - defaults dependencies: + - python=3.9 - pycodestyle - scipy - numpy=1.19.5 diff --git a/testing/env_python_3_with_flink_119.yml b/testing/env_python_3_with_flink_119.yml index 235010b137f..e0c441215ce 100644 --- a/testing/env_python_3_with_flink_119.yml +++ b/testing/env_python_3_with_flink_119.yml @@ -1,8 +1,8 @@ name: python_3_with_flink channels: - conda-forge - - defaults dependencies: + - python=3.9 - pycodestyle - scipy - numpy=1.19.5 diff --git a/testing/env_python_3_with_flink_120.yml b/testing/env_python_3_with_flink_120.yml index 05066fc6c1f..460e43db8e5 100644 --- a/testing/env_python_3_with_flink_120.yml +++ b/testing/env_python_3_with_flink_120.yml @@ -1,8 +1,8 @@ name: python_3_with_flink channels: - conda-forge - - defaults dependencies: + - python=3.9 - pycodestyle - scipy - numpy=1.19.5 diff --git a/testing/env_python_3_with_tensorflow.yml b/testing/env_python_3_with_tensorflow.yml index bf94d8c66b9..af138b872ac 100644 --- a/testing/env_python_3_with_tensorflow.yml +++ b/testing/env_python_3_with_tensorflow.yml @@ -1,8 +1,8 @@ name: python_3_with_tensorflow channels: - conda-forge - - defaults dependencies: + - python=3.9 - pycodestyle - scipy - numpy=1.19.5 diff --git a/testing/locks/README.md b/testing/locks/README.md new file mode 100644 index 00000000000..8c8de7ce712 --- /dev/null +++ b/testing/locks/README.md @@ -0,0 +1,50 @@ + + +# Python dependencies in Linux CI + +For the Linux CI environments listed below, the YAML files in `testing/` describe the dependencies we want, while CI installs the resolved Python 3.9 packages from the files here. Changing one of those YAML files alone will not change its CI environment; update the corresponding lock as well. + +| Lock file | Environment it supplies | +|---|---| +| `python-3.9-linux-64.conda.lock` | Shared Conda environment for core, Python/Jupyter, integration, Spark, Livy, Flink, and frontend integration jobs. It covers `env_python_3.9.yml`, `env_python_3.yml`, and the Conda dependencies in both `env_python_3_with_flink_*.yml` files. | +| `python-3.9-tensorflow-linux-64.conda.lock` | Conda environment for non-core interpreter jobs, described by `env_python_3_with_tensorflow.yml`. | +| `pyflink-1.19-python-3.9.requirements.lock` | PyPI packages for the Flink 1.19 job, starting from the pip requirement in `env_python_3_with_flink_119.yml`. | +| `pyflink-1.20-python-3.9.requirements.lock` | PyPI packages for the Flink 1.20 job, starting from the pip requirement in `env_python_3_with_flink_120.yml`. | + +## Changing dependencies + +1. Edit the relevant YAML file in `testing/`. If a shared Conda dependency changes, check that the other environments using the shared lock still have the packages they need. +2. On Ubuntu 24.04 x86-64, resolve the changed Conda environment using conda-forge and export it with `conda list --explicit --md5`. For example, to update the shared lock: + + ```bash + conda env create -n zeppelin-lock-source -f testing/env_python_3.9.yml + conda list -n zeppelin-lock-source --explicit --md5 + ``` + + Put the exported explicit specification in the corresponding `.conda.lock` file, retaining its ASF license header. Use `env_python_3_with_tensorflow.yml` instead when updating the TensorFlow lock. +3. For a PyFlink change, start with a fresh environment installed from the shared Conda lock. Install the `apache-flink` version specified in the matching Flink YAML file with pip, then record every PyPI package and version it installs in the matching `.requirements.lock` file. CI uses `pip install --no-deps`, so the file must include transitive PyPI dependencies, not just `apache-flink`. +4. Validate the lock in a new environment, not just the environment used to generate it. For the shared lock and Flink 1.19, for example: + + ```bash + conda create -n zeppelin-lock-check --file testing/locks/python-3.9-linux-64.conda.lock + conda run -n zeppelin-lock-check python -m pip install --no-deps -r testing/locks/pyflink-1.19-python-3.9.requirements.lock + ``` + + Use the TensorFlow lock or Flink 1.20 requirements as appropriate, then run the affected imports and CI tests. + +The `.conda.lock` files contain exact Linux x86-64 package URLs and MD5 hashes; they are not portable to other platforms. The PyFlink files pin package versions but do not pin wheel hashes. A cache miss may still download packages, but installation from the Conda locks does not run the dependency solver. diff --git a/testing/locks/pyflink-1.19-python-3.9.requirements.lock b/testing/locks/pyflink-1.19-python-3.9.requirements.lock new file mode 100644 index 00000000000..8d2679be91d --- /dev/null +++ b/testing/locks/pyflink-1.19-python-3.9.requirements.lock @@ -0,0 +1,38 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apache-beam==2.48.0 +apache-flink==1.19.3 +apache-flink-libraries==1.19.3 +avro-python3==1.10.2 +cloudpickle==2.2.1 +crcmod==1.7 +dill==0.3.1.1 +dnspython==2.7.0 +docopt==0.6.2 +fastavro==1.12.2 +find-libpython==0.5.1 +hdfs==2.7.3 +httplib2==0.22.0 +numpy==1.24.4 +objsize==0.6.1 +orjson==3.11.5 +pemja==0.4.1 +proto-plus==1.27.1 +py4j==0.10.9.7 +pydot==1.4.2 +pymongo==4.18.1 +regex==2026.1.15 +ruamel.yaml==0.19.1 diff --git a/testing/locks/pyflink-1.20-python-3.9.requirements.lock b/testing/locks/pyflink-1.20-python-3.9.requirements.lock new file mode 100644 index 00000000000..359a9892b17 --- /dev/null +++ b/testing/locks/pyflink-1.20-python-3.9.requirements.lock @@ -0,0 +1,38 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apache-beam==2.48.0 +apache-flink==1.20.4 +apache-flink-libraries==1.20.4 +avro-python3==1.10.2 +cloudpickle==2.2.1 +crcmod==1.7 +dill==0.3.1.1 +dnspython==2.7.0 +docopt==0.6.2 +fastavro==1.12.2 +find-libpython==0.5.1 +hdfs==2.7.3 +httplib2==0.22.0 +numpy==1.24.4 +objsize==0.6.1 +orjson==3.11.5 +pemja==0.5.6 +proto-plus==1.27.1 +py4j==0.10.9.7 +pydot==1.4.2 +pymongo==4.18.1 +regex==2026.1.15 +ruamel.yaml==0.19.1 diff --git a/testing/locks/python-3.9-linux-64.conda.lock b/testing/locks/python-3.9-linux-64.conda.lock new file mode 100644 index 00000000000..f8ae8a15b8d --- /dev/null +++ b/testing/locks/python-3.9-linux-64.conda.lock @@ -0,0 +1,244 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This file may be used to create an environment using: +# $ conda create --name --file +# platform: linux-64 +# created-by: conda 26.7.1 +@EXPLICIT +https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda#0f51e2391ade309db462a55611263e9c +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.46.1-bootstrap_ha15bf96_2.conda#2c238120d4d57c422d6671036eae76a8 +https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_5.conda#af44890f8a2beefd3a83805a59a65014 +https://conda.anaconda.org/conda-forge/noarch/python_abi-3.9-9_cp39.conda#9615f53c60b6d766f740be806484bad7 +https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda#fcb489df604d100968b737f2cb6076c6 +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda#a9f577daf3de00bca7c3c76c0ecbd1de +https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_5.conda#3b62b92f0f082b67c59618ebf07617a7 +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_10.conda#e675fabcf81499adc7edf58124fb1e01 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.8-hebe6cf0_2.conda#3ad2b403be8fc5612b9159e2ce621f69 +https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-h7cc23a3_1.conda#ba55d1b89fd7775e67de8291029b4059 +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-hd45a770_1.conda#40f9b31aa9cf007789867df0decd0492 +https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h280c20c_3.conda#7bc31538d6e3fb349e897353969237ec +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.7.0-h81df57d_1.conda#6525a0b06aa4fd390795f0740636a9dd +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.2.0-h69a702a_5.conda#e7c34906139296448e3554fafa3dbec2 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-16.2.0-h6b99dfc_5.conda#a7eb3f9540094247ec8a2fa800cf9bbf +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h0cb94f2_3.conda#f92233bf33e24a25668bb2119e2c51f9 +https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_1.conda#1390b7c5ac0b1d8e447bc5efa6d3c8c2 +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda#d864d34357c3b65a4b731f78c0801dc4 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_5.conda#75b43a2912a0354204696708e4f34b8d +https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda#b1aa0faa95017bca11369bd080487ec4 +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.3-hcfc3c73_0.conda#74a0a409d9f4561265d36b789d3f398a +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_1.conda#9332b53d0ea93c5d39e33be03a0c611a +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_1.conda#ee6c0cd80a60961a1f48aa3e0b91f986 +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h7cc23a3_1004.conda#bb66b610707b811e3c65181a6431e7a8 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-h7cc23a3_2.conda#da33efee1a93603d92e06d4a2b68def6 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-h7cc23a3_2.conda#eabfc45786244de252090cf8d55128a8 +https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-hebe6cf0_3.conda#e741576fb8f89821ac7c1c537322a33d +https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.6.2-h7f98852_0.tar.bz2#ce69a062b3080485b760378841240634 +https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda#d411fc29e338efb48c5fd4576d71d881 +https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h0b41bf4_3.conda#c7a069243e1fbe9a556ed2ec030e6407 +https://conda.anaconda.org/conda-forge/linux-64/lerc-4.2.0-hdb68285_0.conda#fb9d356b1a57d6d54768be7ebd5fce09 +https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda#86f7414544ae606282352fa1e116b41f +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_9.conda#61641e239f96eae2b8492dc7e755828c +https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h373387f_1.conda#50708d3b951d0f8e2d7f2df5b5edc040 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-16.2.0-h69a702a_5.conda#34ddf93e56ee44924ce76a614e5fb379 +https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_1.conda#6d83d6a332c19424e9e66b69b180ec11 +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/libstdcxx-ng-16.2.0-hdf11a46_5.conda#c37fb00cb15b16cf1601914d68a509ea +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-h4ab18f5_6.conda#27329162c0dc732bcf67a4e0cd488125 +https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1w-hd590300_0.conda#301e70057a3bd399640bb16bbdf87995 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-hd6e31c0_1.conda#69c01c781e7c8190bbdaf79e3848c5ca +https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.3-ha02ee65_1.conda#137db930adb0b3c5407485e0e1a50cfa +https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.3-hb03c661_1.conda#10d693a2db6e8339e4eebcb3a3dae88d +https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.5.11-h95a6274_0.tar.bz2#d4e7b241fb22dd3d7be1171f813d5da3 +https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.11-ha31a3da_7.tar.bz2#2fdb96aaab883abc0766ff76c0a34483 +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/icu-73.2-h59595ed_0.conda#cc47e1facc155f91abd89b11e48e72ff +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.20.1-hf9c8cef_0.conda#5f7e9efd540d7ac4b485660231ba6150 +https://conda.anaconda.org/conda-forge/linux-64/libabseil-20220623.0-cxx17_h05df665_6.conda#39f6394ae835f0b16f01cbbd3bb1e8e2 +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/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2#c965a5aa0d5c1c37ffc62dff36e28400 +https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.10-h9b69904_4.tar.bz2#390026683aef81db27ff1b8570ca1336 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-16.2.0-h69a702a_5.conda#3b3b5b0f484a99d3ed9c9e563ea90d34 +https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.51.0-hdcd2b5c_0.conda#c42b460bae0365fb9777b1ff9d09a554 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda#009981dd9cfcaa4dbfa25ffaed86bcae +https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-3.20.3-h3eb15da_0.conda#af581c55e6ff3a93af3ae710e091a80d +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda#18aa975d2094c34aef978060ae7da7d8 +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.10.0-haa6b8db_3.tar.bz2#89acee135f0809a18a1f4537390aa2dd +https://conda.anaconda.org/conda-forge/linux-64/libzip-1.9.2-hc869a4a_1.tar.bz2#7a268cf1386d271e576e35ae82149ef2 +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/re2-2022.06.01-h27087fc_1.conda#68070cd09c67755f37e0db13f00a008b +https://conda.anaconda.org/conda-forge/linux-64/s2n-1.0.10-h9b69904_0.tar.bz2#9708c3ac26c20b4c4549cbe8fef937eb +https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.10-hdb0a2a9_1.conda#78b8b85bdf1f42b8a2b3cb577d8742d1 +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda#d453b98d9c83e71da0741bb0ff4d76bc +https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.3-ha02ee65_1.conda#36a079606b3aaf9d726211825f182452 +https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h59595ed_1.conda#7fc9d3288d2420bb3637647621018000 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-h4ab18f5_6.conda#559d338a4234c2ad6e676f460a093e67 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda#4d056880988120e29d75bfff282e0f45 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.10.5-hfb6a706_0.tar.bz2#47d6b88b0c42a8c9877f3993b49f052d +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/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb +https://conda.anaconda.org/conda-forge/linux-64/grpc-cpp-1.47.1-hbad87ad_6.tar.bz2#6d0f1ddd701aebf007274ee5ea9a3018 +https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h9772cbc_5.tar.bz2#ee08782aff2ff9b3291c967fa6bc7336 +https://conda.anaconda.org/conda-forge/linux-64/libcurl-7.87.0-h6312ad2_0.conda#ad07f06bd133e76e12165bc3ec2c8646 +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/libthrift-0.16.0-h491838f_2.tar.bz2#9134d477d02ad9264c6ee359fa36702c +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.5.0-h6adf6a1_2.conda#2e648a34072eb39d7c4fc2a9981c5f0c +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-hc051c1a_1.conda#340278ded8b0dc3a73f3660bbb0adbc6 +https://conda.anaconda.org/conda-forge/linux-64/orc-1.7.6-h6c59b99_0.tar.bz2#7978db6ca7b2932ccf9d3c36093f8281 +https://conda.anaconda.org/conda-forge/linux-64/python-3.9.15-h47a2c10_0_cpython.conda#4c15ad54369ad2fa36a0d56c6675e241 +https://conda.anaconda.org/conda-forge/noarch/asciitree-0.3.3-py_2.tar.bz2#c0481c9de49f040272556e2cedf42816 +https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda#8f587de4bcf981e26228f268df374a9b +https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda#a10d11958cadc13fdb43df75f8b1903f +https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.2.7-h3541f99_13.tar.bz2#39768ba0fe69c241d54703a7f5e3119f +https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_9.conda#4601544b4982ba1861fa9b9c607b2c06 +https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.0.9-py39h5a03fae_9.conda#d1601752c6f47af7bedf838be3d8ca6b +https://conda.anaconda.org/conda-forge/noarch/certifi-2025.8.3-pyhd8ed1ab_0.conda#11f59985f49df4620890f3e746ed7102 +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.3-pyhd8ed1ab_0.conda#7e7d5ef1b9ed630e4a1c358d6bc62284 +https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda#f22f4d4970e09d68a10b922cbb0408d3 +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda#364ba6c9fb03886ac979b482f39ebb92 +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda#962b9857ee8e7018c22f2776ffa0b2d7 +https://conda.anaconda.org/conda-forge/noarch/colorcet-3.1.0-pyhd8ed1ab_1.conda#91d7152c744dc0f18ef8beb3cbc9980a +https://conda.anaconda.org/conda-forge/linux-64/cramjam-2.11.0-py39h881adfc_0.conda#3c7c06b2ad5abbf3fae386352544da72 +https://conda.anaconda.org/conda-forge/linux-64/curl-7.87.0-h6312ad2_0.conda#e6ca70adeae12dce14cbf412b58ace64 +https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda#44600c4667a319d67dbe0681fc0bc833 +https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.16-py39haef64b4_0.conda#ad12118b06c2596073c843e6d47978c2 +https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda#9ce473d1d1be1cc3810856a48b3fab32 +https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda#81d30c08f9a3e556e8ca9e124b044d14 +https://conda.anaconda.org/conda-forge/noarch/fasteners-0.20-pyhd8ed1ab_0.conda#11445cf1b9a9114b82a7dc9f0cd036ec +https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.7.0-pyhd8ed1ab_0.conda#a31ce802cd0ebfce298f342c02757019 +https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.2.4-py39h818bca1_0.conda#38d510d03b8fc261a73366f10f649188 +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.12.2-nompi_h2386368_101.conda#bd61fa767de9880c9c9c8873dc2581e8 +https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda#0a802cb9888dd14eeefc611f05c40b6e +https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda#8e6923fc12f1fe8f8c4e5c9f343256ac +https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhf9edf01_1.conda#ed83a53046788a688a38b76e436f5aac +https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-pyhd8ed1ab_2.conda#2f0ba4bc12af346bc6c99bdc377e8944 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.7-py39h74842e3_0.conda#1bf77976372ff6de02af7b75cf034ce5 +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-hfd0df8a_0.conda#aa8840cdf17ef0c6084d1e24abc7a28b +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/libgoogle-cloud-2.1.0-h9ebe8e8_2.tar.bz2#e8ae8bddbc20f598706dc3ae15dbf95e +https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 +https://conda.anaconda.org/conda-forge/linux-64/lz4-4.3.3-py39hd7df8f7_1.conda#5eac52bcb350198b53c6b1efb384b563 +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py39h9399b63_1.conda#7821f0938aa629b9f17efd98c300a487 +https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.1-py39h74842e3_0.conda#fce378a7c73ea47b7e79ef27a8c798a2 +https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda#37293a85a0f4f77bbd9cf7aaefc62609 +https://conda.anaconda.org/conda-forge/noarch/narwhals-2.1.2-pyhe01879c_0.conda#90d3b6c75c144e8c461b846410d7c0bf +https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda#598fd7d4d0de2455fb74f56063969a97 +https://conda.anaconda.org/conda-forge/noarch/networkx-3.2-pyhd8ed1ab_0.conda#cec8cc498664cc00a070676aa89e69a7 +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.0-hfec8fc6_2.conda#5ce6a42505c6e9e6151c54c3ec8d68ea +https://conda.anaconda.org/conda-forge/noarch/packaging-26.3-pyhc364b38_0.conda#936687ed80f295a1f5dbcf8bd34c252c +https://conda.anaconda.org/conda-forge/noarch/param-1.13.0-pyh1a96a4e_0.conda#158eda83fd21a14b8c483c0d1d102397 +https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda#5c092057b6badd30f75b06244ecd01c9 +https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda#11a9d1d09a3615fc07c3faf79bc0b943 +https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda#424844562f5d337077b445ec6b1398a7 +https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py39h8cd3c5a_0.conda#851ab4da2babaf8d6968a64dd348ca88 +https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda#7d9daffbb8d8e0af0f769dbbcd173a54 +https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda#3bfdfb8dbcdc4af1ae3f9a8eb3948f04 +https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.14.0-pyhd8ed1ab_0.conda#85815c6a22905c080111ec8d56741454 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda#12c566707c80111f9799308d9e265aef +https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda#6b6ece66ebcae2d5f326c77ef2c5a066 +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda#aa0028616c0750c773698fdc254b2b8d +https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda#461219d1a5bd61342293efa2c0c90eac +https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda#bc8e3267d44011051f2eb14d22fb0960 +https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py39h9399b63_2.conda#13fd88296a9f19f5e3ac0c69d4b64cc6 +https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py39h4e4fb57_1.conda#4f303fde372f5ed6a85e3cd895bda96d +https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.27.0-py39h17f49b6_0.conda#de935a1880d17308167b723231e87f9d +https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda#4de79c071274a53dcaf2a8c749d1499e +https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda#3339e3b65d58accf4ca4fb8748ab16b3 +https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda#0401a17ae845fa72c7210e206ec5647d +https://conda.anaconda.org/conda-forge/noarch/tblib-3.1.0-pyhd8ed1ab_0.conda#a15c62b8a306b8978f094f76da2f903f +https://conda.anaconda.org/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda#40d0ed782a8aaa16ef248e68c06c168d +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.2-py39hd399759_0.conda#9546db52eccafee2fa2675653fec04f9 +https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda#019a7385be9af33791c989871317e1ed +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda#e523f4f1e980ed7a4240d7e27e9ec81f +https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-16.0.0-py39h8cd3c5a_0.conda#2011fcaddafa077f4f0313361f4c2731 +https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda#b68980f2495d096e71c7fd9d7ccf63e6 +https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda#2841eb5bfc75ce15e9a0054b98dcd64d +https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda#75cb7132eb58d97896e173ef12ac9986 +https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda#e52c2ef711ccf31bb7f70ca87d144b9e +https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda#df5e78d904988eb55042c0c97446079f +https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.8.186-hecaee15_4.tar.bz2#e29dc8e8611b70cdfcc3139dba6e9001 +https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda#f0b4c8e370446ef89797608d60a564b3 +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py39h15c3d72_0.conda#7e61b8777f42e00b08ff059f9e8ebc44 +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.0.1-py39h8cd3c5a_0.conda#6a86bebd04e7ecd773208e774aa3a58d +https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda#72e42d28960d875c7654614f8b50939a +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.59.1-py39heb7d2ae_0.conda#93d184020f519fe0d32715cb14b8ff50 +https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.47.1-py39h43a650c_6.tar.bz2#2d75b0f641ba3e9994810c85b6b189a2 +https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda#b4754fb1bdcb70c8fd54f918301582c6 +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda#63ccfdc3a3ce25b027b8767eb722fca8 +https://conda.anaconda.org/conda-forge/noarch/intake-2.0.8-pyhd8ed1ab_0.conda#bcd8513a2f3b9b8d83fc7f04302cf800 +https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda#a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2#036d872c653780cb26e797e2e2f61b4c +https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda#b7d89d860ebcda28a5303526cdee68ab +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/libnetcdf-4.8.1-nompi_h261ec11_106.tar.bz2#9b25de670ce5753a33c18b1090d1d3bf +https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda#af6ab708897df59bd6e7283ceab1b56b +https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda#0badf9c54e24cecfb0ad2f99d680c163 +https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda#d0d408b1f18883a944376da5cf8101ea +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.4.0-py39h2320bf1_1.conda#d2f79132b9c8e416058a4cd84ef27b3d +https://conda.anaconda.org/conda-forge/noarch/pip-25.2-pyh8b19718_0.conda#dfce4b2af4bfe90cdcaf56ca0b28ddf5 +https://conda.anaconda.org/conda-forge/noarch/plotly-6.3.0-pyhd8ed1ab_0.conda#5366b5b366cd3a2efa7e638792972ea1 +https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda#d17ae9db4dc594267181bd199bf9a551 +https://conda.anaconda.org/conda-forge/linux-64/protobuf-3.20.3-py39h227be39_1.conda#addd0b5e0730a3e3d157b7e6e4cd9ed2 +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda#5b8d21249ff20967101ffa321cab24e8 +https://conda.anaconda.org/conda-forge/noarch/pyviz_comms-3.0.6-pyhd8ed1ab_0.conda#e0f2c3ecb4dc40d031bbe88869a2a7a1 +https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda#9140f1c09dd5489549c6a33931b943c7 +https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-1.4.46-py39h72bdee0_0.conda#8e7f9dca9ff278a640f0b63ae0c9633d +https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda#b1b505328da7a6b246787df4b5a49fbc +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda#9efbfdc37242619130ea42b1cc4ed861 +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda#75be1a943e0a7f99fcf118309092c635 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2023.2.0-pyhd8ed1ab_0.conda#156fb994a4e07091c4fad2c148589eb2 +https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh707e725_3.conda#15c6f45a45f7ac27f6d60b0b084f6761 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda#41ff526b1083fde51fbdc93f29282e0e +https://conda.anaconda.org/conda-forge/noarch/jupyter_client-5.3.3-py_0.tar.bz2#4cf7d68dbb2e7e2ddde4f962e25f2c22 +https://conda.anaconda.org/conda-forge/noarch/markdown-3.8.2-pyhd8ed1ab_0.conda#b0404922d0459f188768d1e613ed8a87 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.19.5-py39hd249d9e_3.tar.bz2#0cf333996ebdeeba8d1c8c1c0ee9eff9 +https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py39hd399759_3.conda#2f6845f6cdf545845a60c4dcbd017c78 +https://conda.anaconda.org/conda-forge/linux-64/arrow-cpp-9.0.0-py39hd3ccb9b_2_cpu.tar.bz2#f2e4efbf51eea1bffc1f6dc0898e6d29 +https://conda.anaconda.org/conda-forge/noarch/bokeh-2.4.3-pyhd8ed1ab_3.tar.bz2#e4c6e6d99add99cede5328d811cacb21 +https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.4-py39hf3d9206_1.conda#9e20a6226b704b4df686d475dd9b80a5 +https://conda.anaconda.org/conda-forge/linux-64/ipykernel-6.11.0-py39hef51801_0.tar.bz2#e4627b821239e3e6b8e010efc3492b5a +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.1-pyhe01879c_0.conda#341fd940c242cf33e832c0402face56f +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.5.3-py39h19d6b11_2.tar.bz2#dc400bb297d8425b8b05367a21854b0b +https://conda.anaconda.org/conda-forge/linux-64/numcodecs-0.12.1-py39h84cc369_1.conda#bd4f7363195b9c54fb7298e261dd90e6 +https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.4-py39h1832856_0.tar.bz2#6ef85649798519bd47dfc24e399b8dcd +https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda#ee23fabfd0a8c6b8d6f3729b47b2859d +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.9.1-py39h8ba3f38_0.tar.bz2#beed054d4979cd70690aea2b257a6d55 +https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda#436c165519e140cb08d246a4472a9d6a +https://conda.anaconda.org/conda-forge/noarch/altair-5.5.0-pyhd8ed1ab_1.conda#e54e67e5aea7288ba110cf685252f599 +https://conda.anaconda.org/conda-forge/noarch/distributed-2023.2.0-pyhd8ed1ab_0.conda#908e176bdb542b900f1c044bac70683b +https://conda.anaconda.org/conda-forge/linux-64/fastparquet-0.8.3-py39hd257fcd_0.tar.bz2#ba11baff2bbb77a870146831c4402696 +https://conda.anaconda.org/conda-forge/noarch/mizani-0.10.0-pyhd8ed1ab_0.conda#727e2c2020a82718d71b644229776657 +https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.6.0-nompi_py39h6ced12a_102.tar.bz2#b92600d0fef7f12f426935d87d6413e6 +https://conda.anaconda.org/conda-forge/noarch/pandasql-0.7.3-pyhd8ed1ab_0.tar.bz2#7c72bbfc754396ade8e88759cbe0ac4a +https://conda.anaconda.org/conda-forge/noarch/parquet-cpp-1.5.1-2.tar.bz2#79a5f78c42817594ae016a7896521a97 +https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhd8ed1ab_0.conda#db0c6b99149880c8ba515cf4abe93ee4 +https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.12.2-pyhd8ed1ab_0.conda#cf88f3a1c11536bc3c10c14ad00ccc42 +https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.2-py39hd92a3bb_0.conda#2f6c03d60e71f13d92d511b06193f007 +https://conda.anaconda.org/conda-forge/noarch/vega_datasets-0.9.0-pyhd8ed1ab_1.conda#a2208a412fdfefbd36e9c740da9a3f3b +https://conda.anaconda.org/conda-forge/noarch/xarray-2022.9.0-pyhd8ed1ab_0.tar.bz2#e841ab2f40fb319e6740130227904cbf +https://conda.anaconda.org/conda-forge/noarch/zarr-2.15.0-pyhd8ed1ab_0.conda#2e6414d548b4433d564fed1177d30281 +https://conda.anaconda.org/conda-forge/noarch/dask-2023.2.0-pyhd8ed1ab_0.conda#c64c58bf99a686d8bdff8f9c4d33d615 +https://conda.anaconda.org/conda-forge/noarch/plotnine-0.10.1-pyhd8ed1ab_2.conda#39441c3cec7f25dae4b9d83be71df2b8 +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-9.0.0-py39hc0775d8_2_cpu.tar.bz2#7ce89474ea7932b29491ade87bfba19a +https://conda.anaconda.org/conda-forge/noarch/pyct-0.6.0-pyhd8ed1ab_0.conda#9d19c7ea78d067fbbaa2317a85f844e7 +https://conda.anaconda.org/conda-forge/noarch/seaborn-0.12.2-hd8ed1ab_0.conda#50847a47c07812f88581081c620f5160 +https://conda.anaconda.org/conda-forge/noarch/intake-parquet-0.3.0-pyhd8ed1ab_1.conda#ceff21f71e8d5f8fee73bb7219693373 +https://conda.anaconda.org/conda-forge/noarch/intake-xarray-2.0.0-pyhd8ed1ab_1.conda#9ff534be39502e636cb4d25dc6696c66 +https://conda.anaconda.org/conda-forge/noarch/panel-0.14.4-pyhd8ed1ab_0.conda#1342769f399e43f0906af79e5221a0ad +https://conda.anaconda.org/conda-forge/noarch/holoviews-1.16.2-pyhd8ed1ab_0.conda#cd0595cf5f97d5ef8843ac806c72ed47 +https://conda.anaconda.org/conda-forge/noarch/hvplot-0.10.0-pyhd8ed1ab_0.conda#62e8362edc9bb3380e63186d4ad3e735 diff --git a/testing/locks/python-3.9-tensorflow-linux-64.conda.lock b/testing/locks/python-3.9-tensorflow-linux-64.conda.lock new file mode 100644 index 00000000000..94af898b6e8 --- /dev/null +++ b/testing/locks/python-3.9-tensorflow-linux-64.conda.lock @@ -0,0 +1,287 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This file may be used to create an environment using: +# $ conda create --name --file +# platform: linux-64 +# created-by: conda 26.7.1 +@EXPLICIT +https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda#0f51e2391ade309db462a55611263e9c +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.46.1-bootstrap_ha15bf96_2.conda#2c238120d4d57c422d6671036eae76a8 +https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.2.0-he0feb66_5.conda#af44890f8a2beefd3a83805a59a65014 +https://conda.anaconda.org/conda-forge/noarch/python_abi-3.9-9_cp39.conda#9615f53c60b6d766f740be806484bad7 +https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda#fcb489df604d100968b737f2cb6076c6 +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda#a9f577daf3de00bca7c3c76c0ecbd1de +https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.2.0-ha9f2e26_5.conda#3b62b92f0f082b67c59618ebf07617a7 +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_10.conda#e675fabcf81499adc7edf58124fb1e01 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.8-hebe6cf0_2.conda#3ad2b403be8fc5612b9159e2ce621f69 +https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-ha257d8a_1.conda#bd7c3a8586ed0101f094962100d30a63 +https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-h7cc23a3_1.conda#ba55d1b89fd7775e67de8291029b4059 +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-hd45a770_1.conda#40f9b31aa9cf007789867df0decd0492 +https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h280c20c_3.conda#7bc31538d6e3fb349e897353969237ec +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.7.0-h81df57d_1.conda#6525a0b06aa4fd390795f0740636a9dd +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.2.0-h69a702a_5.conda#e7c34906139296448e3554fafa3dbec2 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-16.2.0-h6b99dfc_5.conda#a7eb3f9540094247ec8a2fa800cf9bbf +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h0cb94f2_3.conda#f92233bf33e24a25668bb2119e2c51f9 +https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_1.conda#1390b7c5ac0b1d8e447bc5efa6d3c8c2 +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda#d864d34357c3b65a4b731f78c0801dc4 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.2.0-h934c35e_5.conda#75b43a2912a0354204696708e4f34b8d +https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda#b1aa0faa95017bca11369bd080487ec4 +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.3-hcfc3c73_0.conda#74a0a409d9f4561265d36b789d3f398a +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_1.conda#9332b53d0ea93c5d39e33be03a0c611a +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_1.conda#ee6c0cd80a60961a1f48aa3e0b91f986 +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h7cc23a3_1004.conda#bb66b610707b811e3c65181a6431e7a8 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-h7cc23a3_2.conda#da33efee1a93603d92e06d4a2b68def6 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-h7cc23a3_2.conda#eabfc45786244de252090cf8d55128a8 +https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-hebe6cf0_3.conda#e741576fb8f89821ac7c1c537322a33d +https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.6.2-h7f98852_0.tar.bz2#ce69a062b3080485b760378841240634 +https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda#d411fc29e338efb48c5fd4576d71d881 +https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h0b41bf4_3.conda#c7a069243e1fbe9a556ed2ec030e6407 +https://conda.anaconda.org/conda-forge/linux-64/lerc-4.2.0-hdb68285_0.conda#fb9d356b1a57d6d54768be7ebd5fce09 +https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda#86f7414544ae606282352fa1e116b41f +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_9.conda#61641e239f96eae2b8492dc7e755828c +https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h373387f_1.conda#50708d3b951d0f8e2d7f2df5b5edc040 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-16.2.0-h69a702a_5.conda#34ddf93e56ee44924ce76a614e5fb379 +https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_1.conda#6d83d6a332c19424e9e66b69b180ec11 +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/libstdcxx-ng-16.2.0-hdf11a46_5.conda#c37fb00cb15b16cf1601914d68a509ea +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-h4ab18f5_6.conda#27329162c0dc732bcf67a4e0cd488125 +https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1w-hd590300_0.conda#301e70057a3bd399640bb16bbdf87995 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-hd6e31c0_1.conda#69c01c781e7c8190bbdaf79e3848c5ca +https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.3-ha02ee65_1.conda#137db930adb0b3c5407485e0e1a50cfa +https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.3-hb03c661_1.conda#10d693a2db6e8339e4eebcb3a3dae88d +https://conda.anaconda.org/conda-forge/linux-64/abseil-cpp-20210324.2-h9c3ff4c_0.tar.bz2#baa652d7d0da41d757a31d00b4ae2c38 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.5.11-h95a6274_0.tar.bz2#d4e7b241fb22dd3d7be1171f813d5da3 +https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.11-ha31a3da_7.tar.bz2#2fdb96aaab883abc0766ff76c0a34483 +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/icu-70.1-h27087fc_0.tar.bz2#87473a15119779e021c314249d4b4aed +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.20.1-hf9c8cef_0.conda#5f7e9efd540d7ac4b485660231ba6150 +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/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2#c965a5aa0d5c1c37ffc62dff36e28400 +https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.10-h9b69904_4.tar.bz2#390026683aef81db27ff1b8570ca1336 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-16.2.0-h69a702a_5.conda#3b3b5b0f484a99d3ed9c9e563ea90d34 +https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.51.0-hdcd2b5c_0.conda#c42b460bae0365fb9777b1ff9d09a554 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda#009981dd9cfcaa4dbfa25ffaed86bcae +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda#18aa975d2094c34aef978060ae7da7d8 +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.10.0-haa6b8db_3.tar.bz2#89acee135f0809a18a1f4537390aa2dd +https://conda.anaconda.org/conda-forge/linux-64/libzip-1.9.2-hc869a4a_1.tar.bz2#7a268cf1386d271e576e35ae82149ef2 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 +https://conda.anaconda.org/conda-forge/linux-64/re2-2022.02.01-h9c3ff4c_0.tar.bz2#faed0a1cb9c95ed71cb15b9de1bf3afa +https://conda.anaconda.org/conda-forge/linux-64/s2n-1.0.10-h9b69904_0.tar.bz2#9708c3ac26c20b4c4549cbe8fef937eb +https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.10-hdb0a2a9_1.conda#78b8b85bdf1f42b8a2b3cb577d8742d1 +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda#d453b98d9c83e71da0741bb0ff4d76bc +https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.3-ha02ee65_1.conda#36a079606b3aaf9d726211825f182452 +https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h59595ed_1.conda#7fc9d3288d2420bb3637647621018000 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-h4ab18f5_6.conda#559d338a4234c2ad6e676f460a093e67 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda#4d056880988120e29d75bfff282e0f45 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.10.5-hfb6a706_0.tar.bz2#47d6b88b0c42a8c9877f3993b49f052d +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/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb +https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h9772cbc_5.tar.bz2#ee08782aff2ff9b3291c967fa6bc7336 +https://conda.anaconda.org/conda-forge/linux-64/libcurl-7.87.0-h6312ad2_0.conda#ad07f06bd133e76e12165bc3ec2c8646 +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/libprotobuf-3.19.6-h3eb15da_0.conda#3c8e39f2703847e737a6e88b78a237af +https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.16.0-h491838f_2.tar.bz2#9134d477d02ad9264c6ee359fa36702c +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.5.0-h6adf6a1_2.conda#2e648a34072eb39d7c4fc2a9981c5f0c +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.10.3-hca2bb57_4.conda#bb808b654bdc3c783deaf107a2ffb503 +https://conda.anaconda.org/conda-forge/linux-64/python-3.9.15-h47a2c10_0_cpython.conda#4c15ad54369ad2fa36a0d56c6675e241 +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.46.0-h6d4b2fc_0.conda#77ea8dff5cf8550cc8f5629a6af56323 +https://conda.anaconda.org/conda-forge/noarch/absl-py-2.3.1-pyhd8ed1ab_0.conda#7d4f1ddc43d323c916b2c744835eb093 +https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda#18fd895e0e775622906cdabfc3cf0fb4 +https://conda.anaconda.org/conda-forge/noarch/asciitree-0.3.3-py_2.tar.bz2#c0481c9de49f040272556e2cedf42816 +https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda#8f587de4bcf981e26228f268df374a9b +https://conda.anaconda.org/conda-forge/noarch/async-timeout-5.0.1-pyhd8ed1ab_1.conda#5d842988b11a8c3ab57fb70840c83d24 +https://conda.anaconda.org/conda-forge/noarch/attrs-25.3.0-pyh71513ae_0.conda#a10d11958cadc13fdb43df75f8b1903f +https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.2.7-h3541f99_13.tar.bz2#39768ba0fe69c241d54703a7f5e3119f +https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda#42834439227a4551b939beeeb8a4b085 +https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_9.conda#4601544b4982ba1861fa9b9c607b2c06 +https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.0.9-py39h5a03fae_9.conda#d1601752c6f47af7bedf838be3d8ca6b +https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_2.conda#f71e6840332854fd2eac6c3229768a9c +https://conda.anaconda.org/conda-forge/noarch/cachetools-4.2.4-pyhd8ed1ab_0.tar.bz2#059a8732c1d81ffc93997cb8a236331f +https://conda.anaconda.org/conda-forge/noarch/certifi-2025.8.3-pyhd8ed1ab_0.conda#11f59985f49df4620890f3e746ed7102 +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.3-pyhd8ed1ab_0.conda#7e7d5ef1b9ed630e4a1c358d6bc62284 +https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda#f22f4d4970e09d68a10b922cbb0408d3 +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.1-pyhd8ed1ab_0.conda#364ba6c9fb03886ac979b482f39ebb92 +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda#962b9857ee8e7018c22f2776ffa0b2d7 +https://conda.anaconda.org/conda-forge/noarch/colorcet-3.1.0-pyhd8ed1ab_1.conda#91d7152c744dc0f18ef8beb3cbc9980a +https://conda.anaconda.org/conda-forge/linux-64/cramjam-2.11.0-py39h881adfc_0.conda#3c7c06b2ad5abbf3fae386352544da72 +https://conda.anaconda.org/conda-forge/linux-64/curl-7.87.0-h6312ad2_0.conda#e6ca70adeae12dce14cbf412b58ace64 +https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda#44600c4667a319d67dbe0681fc0bc833 +https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.16-py39haef64b4_0.conda#ad12118b06c2596073c843e6d47978c2 +https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda#9ce473d1d1be1cc3810856a48b3fab32 +https://conda.anaconda.org/conda-forge/noarch/executing-2.2.0-pyhd8ed1ab_0.conda#81d30c08f9a3e556e8ca9e124b044d14 +https://conda.anaconda.org/conda-forge/noarch/fasteners-0.20-pyhd8ed1ab_0.conda#11445cf1b9a9114b82a7dc9f0cd036ec +https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.7.0-py39h53edacf_0.conda#c60d1141e060c5a25d30a379773b9fce +https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.7.0-pyhd8ed1ab_0.conda#a31ce802cd0ebfce298f342c02757019 +https://conda.anaconda.org/conda-forge/noarch/gast-0.4.0-pyh9f0ad1d_0.tar.bz2#42323c77b73462199fca93bc8ac9279d +https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.2.4-py39h818bca1_0.conda#38d510d03b8fc261a73366f10f649188 +https://conda.anaconda.org/conda-forge/linux-64/grpc-cpp-1.43.2-h9e046d8_3.tar.bz2#207c94a7e383dd7bc30ef90433ef5d0b +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.12.2-nompi_h2386368_101.conda#bd61fa767de9880c9c9c8873dc2581e8 +https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda#0a802cb9888dd14eeefc611f05c40b6e +https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda#8e6923fc12f1fe8f8c4e5c9f343256ac +https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhf9edf01_1.conda#ed83a53046788a688a38b76e436f5aac +https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-pyhd8ed1ab_2.conda#2f0ba4bc12af346bc6c99bdc377e8944 +https://conda.anaconda.org/conda-forge/noarch/keras-2.7.0-pyhd8ed1ab_0.tar.bz2#394fc4295ee04f601e9f73503dbb935a +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.7-py39h74842e3_0.conda#1bf77976372ff6de02af7b75cf034ce5 +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-hfd0df8a_0.conda#aa8840cdf17ef0c6084d1e24abc7a28b +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-20_linux64_openblas.conda#2b7bb4f7562c8cf334fc2e20c2d28abc +https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 +https://conda.anaconda.org/conda-forge/linux-64/lz4-4.3.3-py39hd7df8f7_1.conda#5eac52bcb350198b53c6b1efb384b563 +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py39h9399b63_1.conda#7821f0938aa629b9f17efd98c300a487 +https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.1-py39h74842e3_0.conda#fce378a7c73ea47b7e79ef27a8c798a2 +https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda#37293a85a0f4f77bbd9cf7aaefc62609 +https://conda.anaconda.org/conda-forge/noarch/narwhals-2.1.2-pyhe01879c_0.conda#90d3b6c75c144e8c461b846410d7c0bf +https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda#598fd7d4d0de2455fb74f56063969a97 +https://conda.anaconda.org/conda-forge/noarch/networkx-3.2-pyhd8ed1ab_0.conda#cec8cc498664cc00a070676aa89e69a7 +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.0-hfec8fc6_2.conda#5ce6a42505c6e9e6151c54c3ec8d68ea +https://conda.anaconda.org/conda-forge/noarch/opt_einsum-3.4.0-pyhd8ed1ab_1.conda#52919815cd35c4e1a0298af658ccda04 +https://conda.anaconda.org/conda-forge/linux-64/orc-1.7.3-h1be678f_0.tar.bz2#390f40a6ceaa94b3b221599456168856 +https://conda.anaconda.org/conda-forge/noarch/packaging-26.3-pyhc364b38_0.conda#936687ed80f295a1f5dbcf8bd34c252c +https://conda.anaconda.org/conda-forge/noarch/param-1.13.0-pyh1a96a4e_0.conda#158eda83fd21a14b8c483c0d1d102397 +https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda#5c092057b6badd30f75b06244ecd01c9 +https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda#11a9d1d09a3615fc07c3faf79bc0b943 +https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.8-pyhe01879c_0.conda#424844562f5d337077b445ec6b1398a7 +https://conda.anaconda.org/conda-forge/linux-64/propcache-0.3.1-py39h9399b63_0.conda#984e7a95bc7e9045ffc22d5d34e99da1 +https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py39h8cd3c5a_0.conda#851ab4da2babaf8d6968a64dd348ca88 +https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda#7d9daffbb8d8e0af0f769dbbcd173a54 +https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda#3bfdfb8dbcdc4af1ae3f9a8eb3948f04 +https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.conda#09bb17ed307ad6ab2fd78d32372fdd4e +https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.14.0-pyhd8ed1ab_0.conda#85815c6a22905c080111ec8d56741454 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda#12c566707c80111f9799308d9e265aef +https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda#6b6ece66ebcae2d5f326c77ef2c5a066 +https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.1-pyhd8ed1ab_0.conda#84c5c40ea7c5bbc6243556e5daed20e7 +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda#aa0028616c0750c773698fdc254b2b8d +https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda#461219d1a5bd61342293efa2c0c90eac +https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-2.0-pyhd8ed1ab_0.tar.bz2#4df5b030a147e0e86cba6a08b4e3a89a +https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda#bc8e3267d44011051f2eb14d22fb0960 +https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py39h9399b63_2.conda#13fd88296a9f19f5e3ac0c69d4b64cc6 +https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py39h4e4fb57_1.conda#4f303fde372f5ed6a85e3cd895bda96d +https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.27.0-py39h17f49b6_0.conda#de935a1880d17308167b723231e87f9d +https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda#4de79c071274a53dcaf2a8c749d1499e +https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda#3339e3b65d58accf4ca4fb8748ab16b3 +https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda#0401a17ae845fa72c7210e206ec5647d +https://conda.anaconda.org/conda-forge/noarch/tblib-3.1.0-pyhd8ed1ab_0.conda#a15c62b8a306b8978f094f76da2f903f +https://conda.anaconda.org/conda-forge/linux-64/tensorboard-data-server-0.6.1-py39hd97740a_4.conda#5cc232b2368bf5058ef84b0bdfa4c7c3 +https://conda.anaconda.org/conda-forge/noarch/tensorboard-plugin-wit-1.8.1-pyhd8ed1ab_0.tar.bz2#0adae6ededf20046d74a3f9343269efd +https://conda.anaconda.org/conda-forge/noarch/termcolor-3.1.0-pyhd8ed1ab_0.conda#951a99e94afe3d38bfdbd04902fe33b7 +https://conda.anaconda.org/conda-forge/noarch/toolz-1.0.0-pyhd8ed1ab_1.conda#40d0ed782a8aaa16ef248e68c06c168d +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.2-py39hd399759_0.conda#9546db52eccafee2fa2675653fec04f9 +https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda#019a7385be9af33791c989871317e1ed +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda#e523f4f1e980ed7a4240d7e27e9ec81f +https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-16.0.0-py39h8cd3c5a_0.conda#2011fcaddafa077f4f0313361f4c2731 +https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda#b68980f2495d096e71c7fd9d7ccf63e6 +https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda#2841eb5bfc75ce15e9a0054b98dcd64d +https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda#75cb7132eb58d97896e173ef12ac9986 +https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.3-py39hd399759_0.conda#4b8960ce9fbfaaea83b98e1deb4a9480 +https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda#e52c2ef711ccf31bb7f70ca87d144b9e +https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda#df5e78d904988eb55042c0c97446079f +https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda#421a865222cd0c9d83ff08bc78bf3a61 +https://conda.anaconda.org/conda-forge/noarch/astunparse-1.6.3-pyhd8ed1ab_3.conda#d3f195dfdbbf736e4ec178bbec2a975c +https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.8.186-hecaee15_4.tar.bz2#e29dc8e8611b70cdfcc3139dba6e9001 +https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda#f0b4c8e370446ef89797608d60a564b3 +https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_2.conda#1990eb3f49022846fbc7fc9624a0ee43 +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py39h15c3d72_0.conda#7e61b8777f42e00b08ff059f9e8ebc44 +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.0.1-py39h8cd3c5a_0.conda#6a86bebd04e7ecd773208e774aa3a58d +https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda#72e42d28960d875c7654614f8b50939a +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.59.1-py39heb7d2ae_0.conda#93d184020f519fe0d32715cb14b8ff50 +https://conda.anaconda.org/conda-forge/noarch/google-pasta-0.2.0-pyhd8ed1ab_2.conda#005b9749218cb8c9e94ac2a77ca3c8c0 +https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.43.0-py39hff7568b_0.tar.bz2#416068d29d2c422ec6ab2c6f02e5e57e +https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda#b4754fb1bdcb70c8fd54f918301582c6 +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda#63ccfdc3a3ce25b027b8767eb722fca8 +https://conda.anaconda.org/conda-forge/noarch/intake-2.0.8-pyhd8ed1ab_0.conda#bcd8513a2f3b9b8d83fc7f04302cf800 +https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda#a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2#036d872c653780cb26e797e2e2f61b4c +https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda#b7d89d860ebcda28a5303526cdee68ab +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/libgoogle-cloud-1.36.0-h6945097_0.tar.bz2#2c59ab40c22f2fc0d0eaaea6161537c5 +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/libnetcdf-4.8.1-nompi_h261ec11_106.tar.bz2#9b25de670ce5753a33c18b1090d1d3bf +https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda#af6ab708897df59bd6e7283ceab1b56b +https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda#0badf9c54e24cecfb0ad2f99d680c163 +https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda#d0d408b1f18883a944376da5cf8101ea +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.4.0-py39h2320bf1_1.conda#d2f79132b9c8e416058a4cd84ef27b3d +https://conda.anaconda.org/conda-forge/noarch/pip-25.2-pyh8b19718_0.conda#dfce4b2af4bfe90cdcaf56ca0b28ddf5 +https://conda.anaconda.org/conda-forge/noarch/plotly-6.3.0-pyhd8ed1ab_0.conda#5366b5b366cd3a2efa7e638792972ea1 +https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.51-pyha770c72_0.conda#d17ae9db4dc594267181bd199bf9a551 +https://conda.anaconda.org/conda-forge/linux-64/protobuf-3.19.6-py39h227be39_0.conda#63a5053248a46ffce7a7fbcfd9cc92fe +https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.4.2-pyhd8ed1ab_0.conda#c689b62552f6b63f32f3322e463f3805 +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda#5b8d21249ff20967101ffa321cab24e8 +https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda#644bd4ca9f68ef536b902685d773d697 +https://conda.anaconda.org/conda-forge/noarch/pyviz_comms-3.0.6-pyhd8ed1ab_0.conda#e0f2c3ecb4dc40d031bbe88869a2a7a1 +https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda#9140f1c09dd5489549c6a33931b943c7 +https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda#58958bb50f986ac0c46f73b6e290d5fe +https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-1.4.46-py39h72bdee0_0.conda#8e7f9dca9ff278a640f0b63ae0c9633d +https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda#b1b505328da7a6b246787df4b5a49fbc +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda#9efbfdc37242619130ea42b1cc4ed861 +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda#75be1a943e0a7f99fcf118309092c635 +https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.3-pyhd8ed1ab_1.conda#0a9b57c159d56b508613cc39022c1b9e +https://conda.anaconda.org/conda-forge/linux-64/cryptography-39.0.0-py39hd598818_0.conda#8b8923de82864744f8150b6307f4039a +https://conda.anaconda.org/conda-forge/noarch/dask-core-2023.2.0-pyhd8ed1ab_0.conda#156fb994a4e07091c4fad2c148589eb2 +https://conda.anaconda.org/conda-forge/noarch/ipython-8.18.1-pyh707e725_3.conda#15c6f45a45f7ac27f6d60b0b084f6761 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.4.1-pyh29332c3_0.conda#41ff526b1083fde51fbdc93f29282e0e +https://conda.anaconda.org/conda-forge/noarch/jupyter_client-5.3.3-py_0.tar.bz2#4cf7d68dbb2e7e2ddde4f962e25f2c22 +https://conda.anaconda.org/conda-forge/noarch/markdown-3.8.2-pyhd8ed1ab_0.conda#b0404922d0459f188768d1e613ed8a87 +https://conda.anaconda.org/conda-forge/linux-64/multidict-6.6.3-py39h9399b63_0.conda#f873dacbe5d1ce4e93c111792707a443 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.19.5-py39hd249d9e_3.tar.bz2#0cf333996ebdeeba8d1c8c1c0ee9eff9 +https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py39hd399759_3.conda#2f6845f6cdf545845a60c4dcbd017c78 +https://conda.anaconda.org/conda-forge/linux-64/arrow-cpp-8.0.0-py39heccc63a_1_cpu.tar.bz2#300ebd380aae1fe0bbf04ff1424b042e +https://conda.anaconda.org/conda-forge/noarch/bokeh-2.4.3-pyhd8ed1ab_3.tar.bz2#e4c6e6d99add99cede5328d811cacb21 +https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.4-py39hf3d9206_1.conda#9e20a6226b704b4df686d475dd9b80a5 +https://conda.anaconda.org/conda-forge/linux-64/h5py-3.7.0-nompi_py39hd51670d_101.tar.bz2#c4e1a9c86b5a7dddd4252f40815fbe3d +https://conda.anaconda.org/conda-forge/linux-64/ipykernel-6.11.0-py39hef51801_0.tar.bz2#e4627b821239e3e6b8e010efc3492b5a +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.25.1-pyhe01879c_0.conda#341fd940c242cf33e832c0402face56f +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.5.3-py39h19d6b11_2.tar.bz2#dc400bb297d8425b8b05367a21854b0b +https://conda.anaconda.org/conda-forge/linux-64/numcodecs-0.12.1-py39h84cc369_1.conda#bd4f7363195b9c54fb7298e261dd90e6 +https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.3.1-pyhd8ed1ab_0.conda#d4f3f31ee39db3efecb96c0728d4bdbf +https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.4-py39h1832856_0.tar.bz2#6ef85649798519bd47dfc24e399b8dcd +https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda#ee23fabfd0a8c6b8d6f3729b47b2859d +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.2.0-pyhd8ed1ab_1.conda#34f7d568bf59d18e3fef8c405cbece21 +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.9.1-py39h8ba3f38_0.tar.bz2#beed054d4979cd70690aea2b257a6d55 +https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda#436c165519e140cb08d246a4472a9d6a +https://conda.anaconda.org/conda-forge/linux-64/yarl-1.20.1-py39h9399b63_0.conda#641f607c532c50edff65b3d3e477698c +https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.12.15-py39heb7d2ae_0.conda#9eb5917269a01bc0181b55219e949f5b +https://conda.anaconda.org/conda-forge/noarch/altair-5.5.0-pyhd8ed1ab_1.conda#e54e67e5aea7288ba110cf685252f599 +https://conda.anaconda.org/conda-forge/noarch/distributed-2023.2.0-pyhd8ed1ab_0.conda#908e176bdb542b900f1c044bac70683b +https://conda.anaconda.org/conda-forge/linux-64/fastparquet-0.8.3-py39hd257fcd_0.tar.bz2#ba11baff2bbb77a870146831c4402696 +https://conda.anaconda.org/conda-forge/noarch/keras-preprocessing-1.1.2-pyhd8ed1ab_1.conda#3fa7d98a26c219c07453ffe5cf203fd1 +https://conda.anaconda.org/conda-forge/noarch/mizani-0.10.0-pyhd8ed1ab_0.conda#727e2c2020a82718d71b644229776657 +https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.6.0-nompi_py39h6ced12a_102.tar.bz2#b92600d0fef7f12f426935d87d6413e6 +https://conda.anaconda.org/conda-forge/noarch/pandasql-0.7.3-pyhd8ed1ab_0.tar.bz2#7c72bbfc754396ade8e88759cbe0ac4a +https://conda.anaconda.org/conda-forge/noarch/parquet-cpp-1.5.1-2.tar.bz2#79a5f78c42817594ae016a7896521a97 +https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhd8ed1ab_0.conda#db0c6b99149880c8ba515cf4abe93ee4 +https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.12.2-pyhd8ed1ab_0.conda#cf88f3a1c11536bc3c10c14ad00ccc42 +https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.2-py39hd92a3bb_0.conda#2f6c03d60e71f13d92d511b06193f007 +https://conda.anaconda.org/conda-forge/noarch/vega_datasets-0.9.0-pyhd8ed1ab_1.conda#a2208a412fdfefbd36e9c740da9a3f3b +https://conda.anaconda.org/conda-forge/noarch/xarray-2022.9.0-pyhd8ed1ab_0.tar.bz2#e841ab2f40fb319e6740130227904cbf +https://conda.anaconda.org/conda-forge/noarch/zarr-2.15.0-pyhd8ed1ab_0.conda#2e6414d548b4433d564fed1177d30281 +https://conda.anaconda.org/conda-forge/noarch/dask-2023.2.0-pyhd8ed1ab_0.conda#c64c58bf99a686d8bdff8f9c4d33d615 +https://conda.anaconda.org/conda-forge/noarch/google-auth-1.35.0-pyh6c4a22f_0.tar.bz2#e9e51ec25b36547a4192a1953df66a8c +https://conda.anaconda.org/conda-forge/noarch/plotnine-0.10.1-pyhd8ed1ab_2.conda#39441c3cec7f25dae4b9d83be71df2b8 +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-8.0.0-py39h42d110c_1_cpu.tar.bz2#9a6fd682c08e88c5b0e18ba84916b2b8 +https://conda.anaconda.org/conda-forge/noarch/pyct-0.6.0-pyhd8ed1ab_0.conda#9d19c7ea78d067fbbaa2317a85f844e7 +https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-2.0.0-pyhd8ed1ab_1.conda#a283b764d8b155f81e904675ef5e1f4b +https://conda.anaconda.org/conda-forge/noarch/seaborn-0.12.2-hd8ed1ab_0.conda#50847a47c07812f88581081c620f5160 +https://conda.anaconda.org/conda-forge/noarch/google-auth-oauthlib-0.4.6-pyhd8ed1ab_0.tar.bz2#430db61bdfa0b37903ef73d84bcea2c9 +https://conda.anaconda.org/conda-forge/noarch/intake-parquet-0.3.0-pyhd8ed1ab_1.conda#ceff21f71e8d5f8fee73bb7219693373 +https://conda.anaconda.org/conda-forge/noarch/intake-xarray-2.0.0-pyhd8ed1ab_1.conda#9ff534be39502e636cb4d25dc6696c66 +https://conda.anaconda.org/conda-forge/noarch/panel-0.14.4-pyhd8ed1ab_0.conda#1342769f399e43f0906af79e5221a0ad +https://conda.anaconda.org/conda-forge/noarch/holoviews-1.16.2-pyhd8ed1ab_0.conda#cd0595cf5f97d5ef8843ac806c72ed47 +https://conda.anaconda.org/conda-forge/noarch/tensorboard-2.6.0-pyhd8ed1ab_1.tar.bz2#5ea59c2bbd714e8930c23b50857ef864 +https://conda.anaconda.org/conda-forge/noarch/hvplot-0.10.0-pyhd8ed1ab_0.conda#62e8362edc9bb3380e63186d4ad3e735 +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-base-2.7.1-cpu_py39hfb6d7af_0.tar.bz2#68f766617e92581df9f6a826dc1b0a01 +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-estimator-2.7.1-cpu_py39heaff504_0.tar.bz2#245469d1ef9d87b18719adc582d0cdc9 +https://conda.anaconda.org/conda-forge/linux-64/tensorflow-2.7.1-cpu_py39h4655687_0.tar.bz2#9c5b1aaf9a06247dc4a8fcfd30571975