From c6f04fe41b0490539b5181c463f97b834bc2b559 Mon Sep 17 00:00:00 2001 From: zmaalick Date: Thu, 8 Jan 2026 13:22:32 +0000 Subject: [PATCH 01/31] add unitests in github workflow --- .github/workflows/default.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/default.yml b/.github/workflows/default.yml index 6989f722..784f0ea4 100644 --- a/.github/workflows/default.yml +++ b/.github/workflows/default.yml @@ -67,6 +67,13 @@ jobs: cd CMEW rose metadata-check -C meta/ + - name: Run Cylc unit tests + run: | + eval "$(conda shell.bash hook)" + conda activate cmew + cd CMEW + cylc vip -O metoffice -O unittest + - name: Build documentation run: | eval "$(conda shell.bash hook)" From 4d2c3be0337ba691950f05d3bdc14a9d65906265 Mon Sep 17 00:00:00 2001 From: zmaalick Date: Fri, 9 Jan 2026 15:01:41 +0000 Subject: [PATCH 02/31] update with changess suggested by nik #165 --- .github/workflows/default.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/default.yml b/.github/workflows/default.yml index 784f0ea4..46b9018d 100644 --- a/.github/workflows/default.yml +++ b/.github/workflows/default.yml @@ -69,10 +69,8 @@ jobs: - name: Run Cylc unit tests run: | - eval "$(conda shell.bash hook)" - conda activate cmew cd CMEW - cylc vip -O metoffice -O unittest + conda run -n cmew cylc validate -O metoffice -O unittest . - name: Build documentation run: | @@ -100,3 +98,10 @@ jobs: run: | find . -type f \( -name "*.sh" -or -name "*-env$" \) \ -exec shellcheck {} \; + + - name: Upload cylc-run logs on failure + if: failure() + uses: actions/upload-artifact@v4 + with: + name: cylc-run-logs + path: ~/cylc-run \ No newline at end of file From 53a61639820026a87b4226149a0e5d15e87139d3 Mon Sep 17 00:00:00 2001 From: zmaalick Date: Fri, 9 Jan 2026 15:06:11 +0000 Subject: [PATCH 03/31] remove logging block --- .github/workflows/default.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.github/workflows/default.yml b/.github/workflows/default.yml index 46b9018d..5763bbca 100644 --- a/.github/workflows/default.yml +++ b/.github/workflows/default.yml @@ -97,11 +97,4 @@ jobs: - name: Run ShellCheck run: | find . -type f \( -name "*.sh" -or -name "*-env$" \) \ - -exec shellcheck {} \; - - - name: Upload cylc-run logs on failure - if: failure() - uses: actions/upload-artifact@v4 - with: - name: cylc-run-logs - path: ~/cylc-run \ No newline at end of file + -exec shellcheck {} \; \ No newline at end of file From 05b158e88a2d37b5af4ce328372691f588df095a Mon Sep 17 00:00:00 2001 From: zmaalick Date: Fri, 9 Jan 2026 15:13:23 +0000 Subject: [PATCH 04/31] change validate to vip --- .github/workflows/default.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/default.yml b/.github/workflows/default.yml index 5763bbca..0c485e75 100644 --- a/.github/workflows/default.yml +++ b/.github/workflows/default.yml @@ -70,7 +70,7 @@ jobs: - name: Run Cylc unit tests run: | cd CMEW - conda run -n cmew cylc validate -O metoffice -O unittest . + conda run -n cmew cylc vip -O metoffice -O unittest . - name: Build documentation run: | From b3d7579c4825c52f934d83d2562c77da249ba681 Mon Sep 17 00:00:00 2001 From: zmaalick Date: Fri, 9 Jan 2026 15:57:54 +0000 Subject: [PATCH 05/31] revert back the changes --- .github/workflows/default.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/default.yml b/.github/workflows/default.yml index 0c485e75..784f0ea4 100644 --- a/.github/workflows/default.yml +++ b/.github/workflows/default.yml @@ -69,8 +69,10 @@ jobs: - name: Run Cylc unit tests run: | + eval "$(conda shell.bash hook)" + conda activate cmew cd CMEW - conda run -n cmew cylc vip -O metoffice -O unittest . + cylc vip -O metoffice -O unittest - name: Build documentation run: | @@ -97,4 +99,4 @@ jobs: - name: Run ShellCheck run: | find . -type f \( -name "*.sh" -or -name "*-env$" \) \ - -exec shellcheck {} \; \ No newline at end of file + -exec shellcheck {} \; From 81db099393949a83c678aa1fb5be51d044c5899b Mon Sep 17 00:00:00 2001 From: zmaalick Date: Fri, 9 Jan 2026 16:01:26 +0000 Subject: [PATCH 06/31] add logging block --- .github/workflows/default.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/default.yml b/.github/workflows/default.yml index 784f0ea4..57077c8f 100644 --- a/.github/workflows/default.yml +++ b/.github/workflows/default.yml @@ -100,3 +100,10 @@ jobs: run: | find . -type f \( -name "*.sh" -or -name "*-env$" \) \ -exec shellcheck {} \; + + - name: Upload cylc-run logs on failure + if: failure() + uses: actions/upload-artifact@v4 + with: + name: cylc-run-logs + path: ~/cylc-run \ No newline at end of file From 68cd5c985f7a1ba3fd6c991a422a444a46e951aa Mon Sep 17 00:00:00 2001 From: zmaalick Date: Fri, 9 Jan 2026 16:07:15 +0000 Subject: [PATCH 07/31] end of file line --- .github/workflows/default.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/default.yml b/.github/workflows/default.yml index 57077c8f..b5cf5c36 100644 --- a/.github/workflows/default.yml +++ b/.github/workflows/default.yml @@ -106,4 +106,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: cylc-run-logs - path: ~/cylc-run \ No newline at end of file + path: ~/cylc-run From 7e32edd3bcd0c51b8c44b94fdd247f3f0c3c019a Mon Sep 17 00:00:00 2001 From: zmaalick Date: Fri, 9 Jan 2026 16:10:56 +0000 Subject: [PATCH 08/31] unittest block changes --- .github/workflows/default.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/default.yml b/.github/workflows/default.yml index b5cf5c36..64343338 100644 --- a/.github/workflows/default.yml +++ b/.github/workflows/default.yml @@ -69,10 +69,8 @@ jobs: - name: Run Cylc unit tests run: | - eval "$(conda shell.bash hook)" - conda activate cmew cd CMEW - cylc vip -O metoffice -O unittest + conda run -n cmew cylc vip -O metoffice -O unittest . - name: Build documentation run: | From d7a4213e00c07ce0aa558d94b7f43785a98a3b6e Mon Sep 17 00:00:00 2001 From: zmaalick Date: Mon, 12 Jan 2026 13:36:40 +0000 Subject: [PATCH 09/31] update copywrite year --- .github/workflows/default.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/default.yml b/.github/workflows/default.yml index 64343338..1dfe2c1d 100644 --- a/.github/workflows/default.yml +++ b/.github/workflows/default.yml @@ -1,4 +1,4 @@ -# (C) Crown Copyright 2022-2025, Met Office. +# (C) Crown Copyright 2022-2026, Met Office. # The LICENSE.md file contains full licensing details. # This workflow creates the required Conda environment, performs various # validation steps for Cylc and Rose, and builds and checks the documentation. From 06ae3143800d8d8721cf433e75f0db9aef593a1c Mon Sep 17 00:00:00 2001 From: zmaalick Date: Mon, 12 Jan 2026 14:23:52 +0000 Subject: [PATCH 10/31] update unittest with pytest --- .github/workflows/default.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/default.yml b/.github/workflows/default.yml index 1dfe2c1d..11475107 100644 --- a/.github/workflows/default.yml +++ b/.github/workflows/default.yml @@ -70,7 +70,7 @@ jobs: - name: Run Cylc unit tests run: | cd CMEW - conda run -n cmew cylc vip -O metoffice -O unittest . + conda run -n cmew pytest -v - name: Build documentation run: | From 9853ca97fdadbd6a6005fdbec46b0bc32634692f Mon Sep 17 00:00:00 2001 From: zmaalick Date: Mon, 12 Jan 2026 14:51:09 +0000 Subject: [PATCH 11/31] add pytest in env --- .github/workflows/cmew-env/cmew-env.lock | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/cmew-env/cmew-env.lock b/.github/workflows/cmew-env/cmew-env.lock index 6f8203f4..9fc0bfb3 100644 --- a/.github/workflows/cmew-env/cmew-env.lock +++ b/.github/workflows/cmew-env/cmew-env.lock @@ -187,3 +187,4 @@ https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-2.0.0-pyha770c72_ https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.6-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/sphinx-7.2.6-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.9-pyhd8ed1ab_0.conda +https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda \ No newline at end of file From 4c8ed64fd23ed953158b60f67a19be95bab78b55 Mon Sep 17 00:00:00 2001 From: zmaalick Date: Mon, 12 Jan 2026 14:54:26 +0000 Subject: [PATCH 12/31] fix pytest --- .github/workflows/cmew-env/cmew-env.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmew-env/cmew-env.lock b/.github/workflows/cmew-env/cmew-env.lock index 9fc0bfb3..9be6a392 100644 --- a/.github/workflows/cmew-env/cmew-env.lock +++ b/.github/workflows/cmew-env/cmew-env.lock @@ -187,4 +187,4 @@ https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-2.0.0-pyha770c72_ https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.6-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/sphinx-7.2.6-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.9-pyhd8ed1ab_0.conda -https://metoffice.jfrog.io/metoffice/api/conda/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda \ No newline at end of file +https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda \ No newline at end of file From 3a9d45ac7d40581452485b68ea76f6e00999267a Mon Sep 17 00:00:00 2001 From: zmaalick Date: Mon, 12 Jan 2026 15:00:17 +0000 Subject: [PATCH 13/31] add pytest in yml --- .github/workflows/cmew-env/cmew-env.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/cmew-env/cmew-env.yml b/.github/workflows/cmew-env/cmew-env.yml index 13371ba1..1a5f1a10 100644 --- a/.github/workflows/cmew-env/cmew-env.yml +++ b/.github/workflows/cmew-env/cmew-env.yml @@ -12,3 +12,4 @@ dependencies: - sphinx - sphinx_rtd_theme - pre-commit + - pytest From 1b766ffc4e7ecc62806e5b75669c1be2ba584358 Mon Sep 17 00:00:00 2001 From: zmaalick Date: Mon, 12 Jan 2026 15:03:53 +0000 Subject: [PATCH 14/31] add pluggy in lock --- .github/workflows/cmew-env/cmew-env.lock | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cmew-env/cmew-env.lock b/.github/workflows/cmew-env/cmew-env.lock index 9be6a392..4475e734 100644 --- a/.github/workflows/cmew-env/cmew-env.lock +++ b/.github/workflows/cmew-env/cmew-env.lock @@ -187,4 +187,5 @@ https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-2.0.0-pyha770c72_ https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.6-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/sphinx-7.2.6-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.9-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda \ No newline at end of file +https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda +https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda \ No newline at end of file From cc5ebb87576a2f82229242221d12962abf8bcfd1 Mon Sep 17 00:00:00 2001 From: zmaalick Date: Tue, 13 Jan 2026 09:15:33 +0000 Subject: [PATCH 15/31] update lock --- .github/workflows/cmew-env/cmew-env.lock | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cmew-env/cmew-env.lock b/.github/workflows/cmew-env/cmew-env.lock index 4475e734..fae9b782 100644 --- a/.github/workflows/cmew-env/cmew-env.lock +++ b/.github/workflows/cmew-env/cmew-env.lock @@ -188,4 +188,10 @@ https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.6-pyhd8ed https://conda.anaconda.org/conda-forge/noarch/sphinx-7.2.6-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.9-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda -https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda \ No newline at end of file +https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda +https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/libstdcxx-15.2.0-h39759b7_7.conda +https://repo.anaconda.com/pkgs/main/linux-64/libmpdec-4.0.0-h5eee18b_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/xorg-xorgproto-2024.1-h5eee18b_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/lz4-c-1.9.4-h6a678d5_1.conda + From 8f0db29e3fb4b439b52952e9a2c11d41b28ccdbf Mon Sep 17 00:00:00 2001 From: zmaalick Date: Tue, 13 Jan 2026 10:12:16 +0000 Subject: [PATCH 16/31] add esmvalcore --- .github/workflows/cmew-env/cmew-env.lock | 562 +++++++++++++++-------- 1 file changed, 380 insertions(+), 182 deletions(-) diff --git a/.github/workflows/cmew-env/cmew-env.lock b/.github/workflows/cmew-env/cmew-env.lock index fae9b782..d6032912 100644 --- a/.github/workflows/cmew-env/cmew-env.lock +++ b/.github/workflows/cmew-env/cmew-env.lock @@ -5,193 +5,391 @@ # platform: linux-64 @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.11.17-hbcca054_0.conda +https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_1.conda -https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda -https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_3.conda -https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-4_cp311.conda -https://conda.anaconda.org/conda-forge/noarch/tzdata-2023d-h0c530f3_0.conda -https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_3.conda +https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda +https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda +https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_16.conda +https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda +https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda +https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda +https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_3.conda -https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hd590300_5.conda -https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/gettext-0.21.1-h27087fc_0.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h0b41bf4_3.conda -https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h58526e2_1001.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda -https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda -https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.19-hd590300_0.conda -https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.5.0-hcb278e6_1.conda -https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_3.conda -https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda -https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda -https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda -https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda -https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.3.2-hd590300_0.conda -https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda -https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda -https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-h59595ed_2.conda -https://conda.anaconda.org/conda-forge/linux-64/openssl-3.2.0-hd590300_1.conda -https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.0-h59595ed_0.conda -https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda -https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda -https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda -https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/expat-2.5.0-hcb278e6_1.conda -https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda -https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda -https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_3.conda -https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.39-h753d276_0.conda -https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-3.21.12-hfc55251_2.conda -https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.44.2-h2797004_0.conda -https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.15-h0b41bf4_0.conda -https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.3-h232c23b_0.conda -https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.42-hcad00b1_0.conda -https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda -https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda -https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda -https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h59595ed_0.conda -https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.conda -https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.5-hfc55251_0.conda -https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_1.conda -https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda -https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.3-h783c2da_0.conda -https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.25-pthreads_h413a1c8_0.conda -https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-ha9c0a0a_2.conda -https://conda.anaconda.org/conda-forge/linux-64/python-3.11.7-hab00c5b_1_cpython.conda -https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.7-h8ee46fc_0.conda -https://conda.anaconda.org/conda-forge/noarch/aiofiles-23.2.1-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.16-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-hd4edc92_1.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hd590300_1.conda -https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hb755f60_1.conda -https://conda.anaconda.org/conda-forge/noarch/certifi-2023.11.17-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.8-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/linux-64/docutils-0.20.1-py311h38be061_3.conda -https://conda.anaconda.org/conda-forge/noarch/empy-3.3.4-pyh9f0ad1d_1.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/filelock-3.13.1-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda -https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h829c605_4.conda -https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.0.3-py311hb755f60_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_16.conda +https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.2-h39aace5_0.conda +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda +https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda +https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.3-hecca717_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_16.conda +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_16.conda +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda +https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda +https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda +https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda +https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hb9d3cd8_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_16.conda +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda +https://conda.anaconda.org/conda-forge/linux-64/geos-3.14.1-h480dda7_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/giflib-5.2.2-h5eee18b_0.conda +https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda +https://conda.anaconda.org/conda-forge/linux-64/icu-78.2-h33c6efd_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/json-c-0.18-hee96239_0.conda +https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda +https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250814.1-cxx17_hee66210_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.4-h3f801dc_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda +https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda +https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.125-hb03c661_1.conda +https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_16.conda +https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda +https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.3.0-h4c17acf_1.conda +https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_2.conda +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.54-h421ea60_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_16.conda +https://conda.anaconda.org/conda-forge/linux-64/libudunits2-2.2.28-h40f5838_3.conda +https://repo.anaconda.com/pkgs/main/linux-64/libuv-1.48.0-h5eee18b_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/lzo-2.10-h7b6447c_2.conda +https://conda.anaconda.org/conda-forge/linux-64/muparser-2.3.5-h5888daf_0.conda +https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda +https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda +https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda +https://repo.anaconda.com/pkgs/main/linux-64/uriparser-0.9.8-h451ca9b_0.conda +https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-hd6090a7_1.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/xxhash-0.8.0-h7f8727e_3.conda +https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_2.conda +https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_2.conda +https://repo.anaconda.com/pkgs/main/linux-64/yaml-0.2.5-h7b6447c_0.conda +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda +https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.2-hceb46e0_1.conda +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda +https://repo.anaconda.com/pkgs/main/linux-64/expat-2.7.3-h3385a95_0.conda +https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45-default_hbd61a6d_105.conda +https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.1-h73754d4_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.2.0-h69a702a_16.conda +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.3-h6548e54_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.1-hf08fa70_7.conda +https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_4.conda +https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-h46dd2a8_20.conda +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.2-hf4e2dac_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda +https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.1-hca6bf5a_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/snappy-1.2.1-h6a678d5_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/sqlite-3.51.1-he0a8d7e_0.conda +https://conda.anaconda.org/conda-forge/linux-64/udunits2-2.2.28-h40f5838_3.conda +https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.3.0-hd9031aa_1.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda +https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_2.conda +https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda +https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h24cb091_1.conda +https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.4-h2b0a6b4_0.conda +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.86.3-hf516916_0.conda https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda -https://conda.anaconda.org/conda-forge/noarch/idna-3.6-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/jeepney-0.8.0-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py311h9547e67_1.conda -https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda -https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-20_linux64_openblas.conda -https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.3.2-h658648e_1.conda -https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.3-py311h459d7ec_1.conda -https://conda.anaconda.org/conda-forge/noarch/metomi-isodatetime-1!3.1.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.2.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.0-h488ebb8_3.conda -https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.1.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.7-py311h459d7ec_0.conda -https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.5.1-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/pygments-2.17.2-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.1-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3.post1-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py311h459d7ec_1.conda -https://conda.anaconda.org/conda-forge/linux-64/pyzmq-25.1.2-py311h34ded2d_0.conda -https://conda.anaconda.org/conda-forge/noarch/rx-3.2.0-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/setuptools-69.0.3-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.9.0-pyha770c72_0.conda -https://conda.anaconda.org/conda-forge/linux-64/urwid-2.4.2-py311h459d7ec_0.conda -https://conda.anaconda.org/conda-forge/noarch/wheel-0.42.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda -https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda -https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/ansimarkup-1.5.0-pyh44b312d_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-h3faef2a_0.conda -https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py311hb3a22ac_0.conda -https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.47.2-py311h459d7ec_0.conda -https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.1-pyha770c72_0.conda -https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.3.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h4a7cf45_openblas.conda +https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda +https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.18.0-h4e3cde8_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.1-ha770c72_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda +https://repo.anaconda.com/pkgs/main/linux-64/libkml-1.3.0-h096b73e_7.conda +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.1-he237659_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/minizip-4.0.3-hf59b114_0.conda +https://conda.anaconda.org/conda-forge/linux-64/openblas-0.3.30-pthreads_h6ec200e_4.conda +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda +https://conda.anaconda.org/conda-forge/linux-64/python-3.13.11-hc97d973_100_cp313.conda +https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.46-hb03c661_0.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda +https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h387f397_9.conda +https://conda.anaconda.org/conda-forge/noarch/aiofiles-25.1.0-pyhcf101f3_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/aiohappyeyeballs-2.6.1-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/alabaster-0.7.16-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/annotated-types-0.6.0-py313h06a4308_1.conda +https://repo.anaconda.com/pkgs/main/noarch/appdirs-1.4.4-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/attrs-25.4.0-py313h06a4308_2.conda +https://repo.anaconda.com/pkgs/main/linux-64/babel-2.17.0-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_5.conda +https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.3.0-py313h18e8e13_0.conda +https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313hf159716_1.conda +https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/certifi-2026.01.04-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/cfgv-3.5.0-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/click-8.2.1-py313h06a4308_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/cloudpickle-3.1.2-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda +https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.11-py313hd8ed1ab_100.conda +https://repo.anaconda.com/pkgs/main/linux-64/crc32c-2.7.1-py313h5eee18b_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/cycler-0.12.1-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/cython-3.2.2-py313h47b2149_0.conda +https://repo.anaconda.com/pkgs/main/noarch/defusedxml-0.7.1-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/distlib-0.4.0-py313hee96239_0.conda +https://conda.anaconda.org/conda-forge/noarch/docopt-ng-0.9.0-pyhd8ed1ab_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/docutils-0.21.2-py313h06a4308_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/exceptiongroup-1.3.0-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/filelock-3.20.0-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/fonttools-4.61.0-py313h47b2149_0.conda +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.1-ha770c72_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/freexl-2.0.0-hf309648_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/frozenlist-1.8.0-py313hbdd6827_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/fsspec-2025.12.0-py313h7040dfc_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/geographiclib-2.1-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/noarch/graphql-core-3.2.7-pyhcf101f3_0.conda +https://conda.anaconda.org/conda-forge/linux-64/greenlet-3.3.0-py313h7033f15_0.conda +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h1b119a7_104.conda +https://repo.anaconda.com/pkgs/main/noarch/heapdict-1.0.1-pyhd3eb1b0_0.conda +https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/humanfriendly-10.0-py313h06a4308_2.conda +https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/imagesize-1.4.1-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/iniconfig-2.3.0-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/isodate-0.7.2-py313h06a4308_1.conda +https://conda.anaconda.org/conda-forge/noarch/itables-2.6.2-pyh0398c0e_0.conda +https://conda.anaconda.org/conda-forge/noarch/jeepney-0.9.0-pyhd8ed1ab_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/kiwisolver-1.4.9-py313h24d9097_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/legacy-cgi-2.6.3-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.5-gpl_hc2c16d8_100.conda +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_h0358290_openblas.conda +https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda +https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_2.conda +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h47877c9_openblas.conda +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.1-hca5e8e5_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libxml2-devel-2.15.1-he237659_1.conda +https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/locket-1.0.0-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py313h3dea7bd_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/mdurl-0.1.2-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/noarch/metomi-isodatetime-1!3.1.0-pyhd8ed1ab_1.conda +https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.8.0-pyhcf101f3_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/msgpack-python-1.1.1-py313h6a678d5_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/multidict-6.7.0-py313hee96239_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/networkx-3.6.1-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda +https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.0-py313h80991f8_0.conda +https://conda.anaconda.org/conda-forge/noarch/pip-25.3-pyh145f28c_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/platformdirs-4.5.0-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/pluggy-1.5.0-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-h99ae125_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/propcache-0.4.1-py313h47b2149_0.conda +https://conda.anaconda.org/conda-forge/linux-64/protobuf-6.32.1-py313h50fafe1_2.conda +https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.1-py313h54dd161_0.conda +https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.1-pyhd8ed1ab_2.conda +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/pygments-2.19.2-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/pyparsing-3.2.5-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/pyshp-3.0.2.post1-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda +https://repo.anaconda.com/pkgs/main/linux-64/python-lmdb-1.7.5-py313hbe636e0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/python-tzdata-2025.2-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/python-xxhash-3.5.0-py313h5eee18b_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/pytz-2024.1-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/pyyaml-6.0.3-py313h591646f_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/setuptools-80.9.0-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/shellingham-1.5.4-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/snowballstemmer-3.0.1-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/noarch/sortedcontainers-2.4.0-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/soupsieve-2.5-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/noarch/sphinxcontrib-applehelp-2.0.0-pyhd3eb1b0_1.conda +https://repo.anaconda.com/pkgs/main/noarch/sphinxcontrib-devhelp-2.0.0-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/noarch/sphinxcontrib-jsmath-1.0.1-pyhd3eb1b0_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/noarch/sphinxcontrib-qthelp-2.0.0-pyhd3eb1b0_1.conda +https://repo.anaconda.com/pkgs/main/noarch/sphinxcontrib-serializinghtml-2.0.0-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/tblib-3.1.0-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/termcolor-3.2.0-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/tomli-2.2.1-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/toolz-1.1.0-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/tornado-6.5.4-py313h47b2149_0.conda +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/ujson-5.11.0-py313hbdd6827_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/uvloop-0.22.1-py313h939ff40_1.conda +https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.14-pyhd8ed1ab_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/wrapt-1.17.0-py313h5eee18b_0.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.5-h5888daf_1.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.6-hb9d3cd8_0.conda +https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/aiosignal-1.4.0-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/noarch/ansimarkup-2.1.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/backports.tarfile-1.2.0-pyhcf101f3_2.conda +https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/cattrs-25.3.0-py313hd0c6730_0.conda +https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py313hf46b229_1.conda +https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1.2-pyhd8ed1ab_0.conda +https://repo.anaconda.com/pkgs/main/noarch/cligj-0.7.2-pyhd3eb1b0_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/deprecated-1.2.18-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/donfig-0.8.1.post1-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/noarch/fire-0.7.1-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/freeglut-3.8.0-h02bc977_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/geopy-2.4.1-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/noarch/graphql-relay-3.2.0-pyhd8ed1ab_1.conda +https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda +https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/intake-2.0.8-py313h06a4308_1.conda +https://conda.anaconda.org/conda-forge/noarch/jaraco.classes-3.4.0-pyhcf101f3_3.conda +https://conda.anaconda.org/conda-forge/noarch/jaraco.functools-4.4.0-pyhcf101f3_1.conda https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/ldap3-2.9.1-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-20_linux64_openblas.conda -https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h119a65a_9.conda -https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-20_linux64_openblas.conda -https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.8.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/linux-64/pillow-10.2.0-py311ha6c5da5_0.conda -https://conda.anaconda.org/conda-forge/noarch/pip-23.3.2-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/linux-64/promise-2.3-py311h38be061_8.conda -https://conda.anaconda.org/conda-forge/linux-64/protobuf-4.21.12-py311hcafe171_0.conda -https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-1.4.49-py311h459d7ec_1.conda -https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.9.0-hd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/urllib3-2.1.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.25.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/aniso8601-7.0.0-py_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/linux-64/cryptography-41.0.7-py311hcb13ee4_1.conda -https://conda.anaconda.org/conda-forge/noarch/graphql-core-2.2-py_0.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.3.0-h3d44ed6_0.conda -https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-7.0.1-hd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.3-py311h64a7726_0.conda -https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py311h9547e67_4.conda -https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.0-py311h9547e67_0.conda -https://conda.anaconda.org/conda-forge/noarch/graphql-relay-2.0.1-py_0.tar.bz2 -https://conda.anaconda.org/conda-forge/noarch/identify-2.5.33-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/linux-64/pandas-1.5.3-py311h2872171_1.conda -https://conda.anaconda.org/conda-forge/linux-64/pango-1.50.14-ha41ecd1_2.conda -https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.3.3-py311h38be061_2.conda -https://conda.anaconda.org/conda-forge/noarch/graphene-2.1.9-pyhd8ed1ab_0.tar.bz2 -https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h7f000aa_3.conda -https://conda.anaconda.org/conda-forge/linux-64/keyring-23.13.1-py311h38be061_0.conda -https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.56.3-he3f83f7_1.conda -https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.2-py311h54ef318_0.conda -https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.6.0-pyha770c72_0.conda -https://conda.anaconda.org/conda-forge/noarch/cylc-flow-base-8.2.4-pyh707e725_0.conda -https://conda.anaconda.org/conda-forge/linux-64/graphviz-9.0.0-h78e8752_1.conda -https://conda.anaconda.org/conda-forge/noarch/metomi-rose-base-2.1.0-pyh707e725_0.conda -https://conda.anaconda.org/conda-forge/noarch/cylc-flow-8.2.4-pyh48b6436_0.conda -https://conda.anaconda.org/conda-forge/noarch/cylc-rose-1.3.1-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/linux-64/pygraphviz-1.11-py311hbf5cbc9_2.conda -https://conda.anaconda.org/conda-forge/noarch/metomi-rose-2.1.0-pyh707e725_0.conda -https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.7-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.5-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.4-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-2.0.0-pyha770c72_0.conda -https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.6-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/sphinx-7.2.6-pyhd8ed1ab_0.conda -https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.9-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/ldap3-2.9.1-pyhd8ed1ab_1.conda +https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_2.conda +https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.11.0-5_h6ae95b6_openblas.conda +https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.3-nompi_h11f7409_103.conda +https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-gpl_h2abfd87_119.conda +https://conda.anaconda.org/conda-forge/linux-64/lxml-6.0.2-py313h4a16004_2.conda +https://repo.anaconda.com/pkgs/main/linux-64/markdown-it-py-4.0.0-py313h06a4308_1.conda +https://conda.anaconda.org/conda-forge/noarch/nested-lookup-0.2.25-pyhd8ed1ab_2.conda +https://repo.anaconda.com/pkgs/main/linux-64/nodeenv-1.9.1-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.1-py313hf6604e3_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/partd-1.4.2-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.7.2-py313h77f6078_2.conda https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda -https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda -https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda -https://repo.anaconda.com/pkgs/main/linux-64/libstdcxx-15.2.0-h39759b7_7.conda -https://repo.anaconda.com/pkgs/main/linux-64/libmpdec-4.0.0-h5eee18b_0.conda -https://repo.anaconda.com/pkgs/main/linux-64/xorg-xorgproto-2024.1-h5eee18b_1.conda -https://repo.anaconda.com/pkgs/main/linux-64/lz4-c-1.9.4-h6a678d5_1.conda - +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda +https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.11-h4df99d1_100.conda +https://conda.anaconda.org/conda-forge/noarch/rdflib-7.5.0-pyhcf101f3_0.conda +https://conda.anaconda.org/conda-forge/linux-64/sqlalchemy-1.4.54-py313h536fd9c_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/typer-slim-0.20.0-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/typing-inspection-0.4.2-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/url-normalize-2.2.1-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/virtualenv-20.28.0-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/webob-1.8.9-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda +https://conda.anaconda.org/conda-forge/noarch/yamale-6.1.0-pyhd8ed1ab_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/yarl-1.22.0-py313hee96239_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/zict-3.0.0-py313h06a4308_1.conda +https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda +https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 +https://repo.anaconda.com/pkgs/main/linux-64/beautifulsoup4-4.14.2-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.11.0-5_h1ea3ea9_openblas.conda +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/cftime-1.6.5-py313haa0f9ac_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/contourpy-1.3.3-py313hdb19cb5_0.conda +https://conda.anaconda.org/conda-forge/linux-64/cryptography-46.0.3-py313heb322e3_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/dask-core-2025.5.1-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/fastprogress-1.0.0-py313h7040dfc_1.conda +https://conda.anaconda.org/conda-forge/noarch/graphene-3.4.3-pyhd8ed1ab_1.conda +https://conda.anaconda.org/conda-forge/linux-64/h5py-3.15.1-nompi_py313h253c126_101.conda +https://conda.anaconda.org/conda-forge/noarch/jaraco.context-6.0.2-pyhcf101f3_1.conda +https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.8-he3c4edf_0.conda +https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_2.conda +https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h5fbf134_12.conda +https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.11.5-hf05ffb4_4.conda +https://conda.anaconda.org/conda-forge/linux-64/netcdf-fortran-4.6.2-nompi_h90de81b_102.conda +https://conda.anaconda.org/conda-forge/linux-64/numcodecs-0.16.5-py313h08cd8bf_0.conda +https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py313ha87cce1_1.conda +https://conda.anaconda.org/conda-forge/noarch/pybtex-0.25.1-pyhd8ed1ab_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/pycares-4.10.0-py313ha137689_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/pydantic-core-2.41.5-py313h498d7c9_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/rich-14.2.0-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/linux-64/shapely-2.1.2-py313had47c43_2.conda +https://repo.anaconda.com/pkgs/main/linux-64/ukkonen-1.0.1-py313hdb19cb5_1.conda +https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/linux-64/urwid-3.0.4-py313h07c4f96_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/aiodns-3.5.0-py313h06a4308_1.conda +https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 +https://conda.anaconda.org/conda-forge/linux-64/blas-2.305-openblas.conda +https://conda.anaconda.org/conda-forge/linux-64/cf-units-3.3.0-py313h29aa505_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/distributed-2025.5.1-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.44.0-h83bc92c_0.conda +https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-hb03c661_2.conda +https://conda.anaconda.org/conda-forge/linux-64/esmf-8.9.1-nompi_h8d4c64c_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/fiona-1.10.1-py313h7354ed3_2.conda +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-12.3.0-h6083320_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/identify-2.5.5-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/matplotlib-base-3.10.7-py313h8a257da_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/netcdf4-1.7.2-py313hbe59ae5_2.conda +https://conda.anaconda.org/conda-forge/linux-64/polars-default-1.32.3-py39hf521cc8_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/pydantic-2.12.4-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/pyopenssl-25.3.0-py313hef88997_0.conda +https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.3.0-py313ha014f3b_3.conda +https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.1.0-py312hfb55c3c_0.conda +https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda +https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.4.1-py313h78bf25f_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/typer-slim-standard-0.20.0-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/xarray-2025.12.0-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/aiohttp-3.13.3-py313h47b2149_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/cartopy-0.25.0-py313h86c3e14_0.conda +https://conda.anaconda.org/conda-forge/noarch/cf_xarray-0.10.10-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/cylc-flow-base-8.6.2-pyh707e725_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/dask-2025.5.1-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/dask-jobqueue-0.9.0-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/noarch/esmpy-8.9.1-pyhdfbf58e_0.conda +https://conda.anaconda.org/conda-forge/noarch/keyring-25.7.0-pyha804496_0.conda +https://conda.anaconda.org/conda-forge/noarch/myproxyclient-2.2.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/nc-time-axis-1.4.1-pyhd8ed1ab_1.conda +https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda +https://conda.anaconda.org/conda-forge/linux-64/polars-1.32.3-default_h3512890_0.conda +https://repo.anaconda.com/pkgs/main/noarch/pooch-1.4.0-pyhd3eb1b0_0.conda +https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda +https://conda.anaconda.org/conda-forge/linux-64/python-eccodes-2.44.0-py313h29aa505_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/requests-cache-1.2.1-py313h06a4308_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/scipy-1.16.3-py313he2bc341_0.conda +https://conda.anaconda.org/conda-forge/noarch/sphinx-7.3.7-pyhd8ed1ab_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/typer-0.20.0-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/noarch/esgf-pyclient-0.3.1-pyhd8ed1ab_5.conda +https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h993cebd_6.conda +https://conda.anaconda.org/conda-forge/noarch/iris-3.14.1-pyha770c72_0.conda +https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.60.0-h61e6d4b_0.conda +https://conda.anaconda.org/conda-forge/noarch/metomi-rose-base-2.6.3-pyh707e725_0.conda +https://conda.anaconda.org/conda-forge/noarch/ncdata-0.3.2-pyhd8ed1ab_1.conda +https://conda.anaconda.org/conda-forge/noarch/py-cordex-0.10.2-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/pydap-3.5.8-pyhc455866_0.conda +https://repo.anaconda.com/pkgs/main/linux-64/sphinxcontrib-jquery-4.1-py313h06a4308_1.conda +https://repo.anaconda.com/pkgs/main/linux-64/zarr-3.1.3-py313h06a4308_0.conda +https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda +https://conda.anaconda.org/conda-forge/noarch/cylc-rose-1.7.0-pyh707e725_0.conda +https://conda.anaconda.org/conda-forge/noarch/esmvaltool-sample-data-0.0.4-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/iris-esmf-regrid-0.13.1-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/iris-grib-0.21.0-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/kerchunk-0.2.9-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-3.0.2-pyha770c72_0.conda +https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.0-h8b86629_0.conda +https://conda.anaconda.org/conda-forge/noarch/intake-esm-2025.12.12-pyhd8ed1ab_0.conda +https://conda.anaconda.org/conda-forge/noarch/cylc-flow-8.6.2-pyh84239d0_0.conda +https://conda.anaconda.org/conda-forge/noarch/pydot-4.0.1-pyhcf101f3_2.conda +https://repo.anaconda.com/pkgs/main/linux-64/pygraphviz-1.14-py313h5eee18b_1.conda +https://conda.anaconda.org/conda-forge/noarch/metomi-rose-2.6.3-pyh707e725_0.conda +https://conda.anaconda.org/conda-forge/noarch/prov-2.0.0-pyhd3deb0d_0.tar.bz2 +https://conda.anaconda.org/conda-forge/noarch/esmvalcore-2.13.0-pyhcf101f3_0.conda From d70e7de429095dcef3ec4e89328e56fc00961991 Mon Sep 17 00:00:00 2001 From: zmaalick Date: Tue, 13 Jan 2026 10:20:35 +0000 Subject: [PATCH 17/31] fix linter issue and make consistancy in pytest call --- .github/workflows/default.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/default.yml b/.github/workflows/default.yml index 11475107..7435d12c 100644 --- a/.github/workflows/default.yml +++ b/.github/workflows/default.yml @@ -47,7 +47,7 @@ jobs: eval "$(conda shell.bash hook)" conda activate cmew cd CMEW - cylc lint + cylc lint --ignore=S014 - name: Validate format of Rose configuration files run: | @@ -69,8 +69,10 @@ jobs: - name: Run Cylc unit tests run: | + eval "$(conda shell.bash hook)" + conda activate cmew cd CMEW - conda run -n cmew pytest -v + pytest -v - name: Build documentation run: | From 4e0b9162450b50dbc9c09d6738149a047835ce4d Mon Sep 17 00:00:00 2001 From: zmaalick Date: Tue, 13 Jan 2026 10:30:29 +0000 Subject: [PATCH 18/31] remove logging section and update yml file --- .github/workflows/cmew-env/cmew-env.yml | 1 + .github/workflows/default.yml | 9 +-------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/.github/workflows/cmew-env/cmew-env.yml b/.github/workflows/cmew-env/cmew-env.yml index 1a5f1a10..2c784b3e 100644 --- a/.github/workflows/cmew-env/cmew-env.yml +++ b/.github/workflows/cmew-env/cmew-env.yml @@ -13,3 +13,4 @@ dependencies: - sphinx_rtd_theme - pre-commit - pytest + - esmvalcore diff --git a/.github/workflows/default.yml b/.github/workflows/default.yml index 7435d12c..a8da9eeb 100644 --- a/.github/workflows/default.yml +++ b/.github/workflows/default.yml @@ -67,7 +67,7 @@ jobs: cd CMEW rose metadata-check -C meta/ - - name: Run Cylc unit tests + - name: Run Python unit tests run: | eval "$(conda shell.bash hook)" conda activate cmew @@ -100,10 +100,3 @@ jobs: run: | find . -type f \( -name "*.sh" -or -name "*-env$" \) \ -exec shellcheck {} \; - - - name: Upload cylc-run logs on failure - if: failure() - uses: actions/upload-artifact@v4 - with: - name: cylc-run-logs - path: ~/cylc-run From 96a62b67a45c42e064e463326baefd494e4f4bf1 Mon Sep 17 00:00:00 2001 From: zmaalick Date: Thu, 15 Jan 2026 10:13:17 +0000 Subject: [PATCH 19/31] reorder the env packages list alphabetically --- .github/workflows/cmew-env/cmew-env.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cmew-env/cmew-env.yml b/.github/workflows/cmew-env/cmew-env.yml index 2c784b3e..c1084f97 100644 --- a/.github/workflows/cmew-env/cmew-env.yml +++ b/.github/workflows/cmew-env/cmew-env.yml @@ -8,9 +8,9 @@ channels: dependencies: - cylc-flow - cylc-rose + - esmvalcore - metomi-rose - - sphinx - - sphinx_rtd_theme - pre-commit - pytest - - esmvalcore + - sphinx + - sphinx_rtd_theme From 528024aaa859a1ab2025d2b614a4002cec943c9a Mon Sep 17 00:00:00 2001 From: zmaalick Date: Thu, 15 Jan 2026 10:15:17 +0000 Subject: [PATCH 20/31] update the copywrite --- .github/workflows/cmew-env/cmew-env.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmew-env/cmew-env.yml b/.github/workflows/cmew-env/cmew-env.yml index c1084f97..eaf9c1ba 100644 --- a/.github/workflows/cmew-env/cmew-env.yml +++ b/.github/workflows/cmew-env/cmew-env.yml @@ -1,4 +1,4 @@ -# (C) Crown Copyright 2024-2025, Met Office. +# (C) Crown Copyright 2024-2026, Met Office. # The LICENSE.md file contains full licensing details. name: cmew From 8836fdaba65883b0e72fe6a0d85533455b3f9d74 Mon Sep 17 00:00:00 2001 From: zmaalick Date: Thu, 15 Jan 2026 10:32:02 +0000 Subject: [PATCH 21/31] remove ignore in lint and update execution limit in metoffice.cylc --- .github/workflows/default.yml | 2 +- CMEW/site/metoffice.cylc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/default.yml b/.github/workflows/default.yml index a8da9eeb..f17c57d0 100644 --- a/.github/workflows/default.yml +++ b/.github/workflows/default.yml @@ -47,7 +47,7 @@ jobs: eval "$(conda shell.bash hook)" conda activate cmew cd CMEW - cylc lint --ignore=S014 + cylc lint - name: Validate format of Rose configuration files run: | diff --git a/CMEW/site/metoffice.cylc b/CMEW/site/metoffice.cylc index a9ffdb3f..cdcbb15f 100644 --- a/CMEW/site/metoffice.cylc +++ b/CMEW/site/metoffice.cylc @@ -14,6 +14,6 @@ --ntasks = {{ MAX_PARALLEL_TASKS }} [[run_recipe]] + execution time limit = PT2H [[[directives]]] - --time = 2 --mem = 3G From 17dca6ac825ed98abaf4e51451b08a82846f8132 Mon Sep 17 00:00:00 2001 From: zmaalick Date: Thu, 15 Jan 2026 10:36:29 +0000 Subject: [PATCH 22/31] add pytest conf file and update github actions --- .github/workflows/default.yml | 3 +-- pytest.ini | 4 ++++ 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 pytest.ini diff --git a/.github/workflows/default.yml b/.github/workflows/default.yml index f17c57d0..3ff17d3a 100644 --- a/.github/workflows/default.yml +++ b/.github/workflows/default.yml @@ -71,8 +71,7 @@ jobs: run: | eval "$(conda shell.bash hook)" conda activate cmew - cd CMEW - pytest -v + pytest -v -m unittest - name: Build documentation run: | diff --git a/pytest.ini b/pytest.ini new file mode 100644 index 00000000..1e9649e9 --- /dev/null +++ b/pytest.ini @@ -0,0 +1,4 @@ +[pytest] +markers = + unittest: Cylc unit tests +testpaths = CMEW \ No newline at end of file From de8d97d4eabbe273256241f54b58ffbe4c452c11 Mon Sep 17 00:00:00 2001 From: zmaalick Date: Thu, 15 Jan 2026 10:45:22 +0000 Subject: [PATCH 23/31] declaration correct in pytest conf --- pytest.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pytest.ini b/pytest.ini index 1e9649e9..72035db8 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,4 +1,4 @@ [pytest] markers = - unittest: Cylc unit tests + unittest: Unit tests runnable via -O unittest testpaths = CMEW \ No newline at end of file From 6fda3d8ecc3bd39389fd3433833b75ca1b781838 Mon Sep 17 00:00:00 2001 From: zmaalick Date: Thu, 15 Jan 2026 10:54:31 +0000 Subject: [PATCH 24/31] add pytest mark --- CMEW/app/configure_recipe/bin/test_configure_recipe.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMEW/app/configure_recipe/bin/test_configure_recipe.py b/CMEW/app/configure_recipe/bin/test_configure_recipe.py index ef747bea..2f88dfa8 100644 --- a/CMEW/app/configure_recipe/bin/test_configure_recipe.py +++ b/CMEW/app/configure_recipe/bin/test_configure_recipe.py @@ -3,7 +3,7 @@ # The LICENSE.md file contains full licensing details. import pytest from configure_recipe import create_user_config_file - +pytestmark = pytest.mark.unittest @pytest.mark.parametrize( "input_key, output_key, expected", From cecaec751a53c8df7dea3461105ae474f3936f90 Mon Sep 17 00:00:00 2001 From: zmaalick Date: Thu, 15 Jan 2026 11:26:33 +0000 Subject: [PATCH 25/31] update with pytest mark --- CMEW/app/configure_for/bin/test_update_recipe_file.py | 2 ++ CMEW/app/configure_recipe/bin/test_configure_recipe.py | 2 ++ .../app/configure_standardise/bin/test_create_request_file.py | 4 +++- .../configure_standardise/bin/test_create_variables_file.py | 3 +++ pytest.ini | 2 +- 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CMEW/app/configure_for/bin/test_update_recipe_file.py b/CMEW/app/configure_for/bin/test_update_recipe_file.py index dd4a4425..ddb510d2 100644 --- a/CMEW/app/configure_for/bin/test_update_recipe_file.py +++ b/CMEW/app/configure_for/bin/test_update_recipe_file.py @@ -6,6 +6,8 @@ import shutil import yaml +pytestmark = pytest.mark.unittest + @pytest.fixture def mock_env_vars(monkeypatch): diff --git a/CMEW/app/configure_recipe/bin/test_configure_recipe.py b/CMEW/app/configure_recipe/bin/test_configure_recipe.py index 2f88dfa8..717283fd 100644 --- a/CMEW/app/configure_recipe/bin/test_configure_recipe.py +++ b/CMEW/app/configure_recipe/bin/test_configure_recipe.py @@ -3,8 +3,10 @@ # The LICENSE.md file contains full licensing details. import pytest from configure_recipe import create_user_config_file + pytestmark = pytest.mark.unittest + @pytest.mark.parametrize( "input_key, output_key, expected", [ diff --git a/CMEW/app/configure_standardise/bin/test_create_request_file.py b/CMEW/app/configure_standardise/bin/test_create_request_file.py index 0f57a306..65374664 100644 --- a/CMEW/app/configure_standardise/bin/test_create_request_file.py +++ b/CMEW/app/configure_standardise/bin/test_create_request_file.py @@ -1,9 +1,11 @@ # (C) Crown Copyright 2024-2025, Met Office. # The LICENSE.md file contains full licensing details. import os - +import pytest from create_request_file import create_request +pytestmark = pytest.mark.unittest + def test_create_request(monkeypatch): # In the order defined in 'create_request_file.py'. diff --git a/CMEW/app/configure_standardise/bin/test_create_variables_file.py b/CMEW/app/configure_standardise/bin/test_create_variables_file.py index bd15cef0..1eb81b7b 100644 --- a/CMEW/app/configure_standardise/bin/test_create_variables_file.py +++ b/CMEW/app/configure_standardise/bin/test_create_variables_file.py @@ -6,6 +6,9 @@ """ from create_variables_file import parse_variables_from_recipe from pathlib import Path +import pytest + +pytestmark = pytest.mark.unittest def test_parse_radiation_budget_variables(): diff --git a/pytest.ini b/pytest.ini index 72035db8..7cfbd09f 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,4 +1,4 @@ [pytest] markers = unittest: Unit tests runnable via -O unittest -testpaths = CMEW \ No newline at end of file +testpaths = CMEW From feb3d1e66aff9c403d558fe99d2454da2ff8dfb5 Mon Sep 17 00:00:00 2001 From: zmaalick Date: Fri, 16 Jan 2026 11:22:14 +0000 Subject: [PATCH 26/31] remove marking for pytest --- CMEW/app/configure_for/bin/test_update_recipe_file.py | 2 -- CMEW/app/configure_recipe/bin/test_configure_recipe.py | 4 +--- .../app/configure_standardise/bin/test_create_request_file.py | 3 --- .../configure_standardise/bin/test_create_variables_file.py | 3 --- pytest.ini | 2 -- 5 files changed, 1 insertion(+), 13 deletions(-) diff --git a/CMEW/app/configure_for/bin/test_update_recipe_file.py b/CMEW/app/configure_for/bin/test_update_recipe_file.py index ddb510d2..dd4a4425 100644 --- a/CMEW/app/configure_for/bin/test_update_recipe_file.py +++ b/CMEW/app/configure_for/bin/test_update_recipe_file.py @@ -6,8 +6,6 @@ import shutil import yaml -pytestmark = pytest.mark.unittest - @pytest.fixture def mock_env_vars(monkeypatch): diff --git a/CMEW/app/configure_recipe/bin/test_configure_recipe.py b/CMEW/app/configure_recipe/bin/test_configure_recipe.py index 717283fd..19128a04 100644 --- a/CMEW/app/configure_recipe/bin/test_configure_recipe.py +++ b/CMEW/app/configure_recipe/bin/test_configure_recipe.py @@ -1,10 +1,8 @@ #!/usr/bin/env python # (C) Crown Copyright 2024-2025, Met Office. # The LICENSE.md file contains full licensing details. -import pytest from configure_recipe import create_user_config_file - -pytestmark = pytest.mark.unittest +import pytest @pytest.mark.parametrize( diff --git a/CMEW/app/configure_standardise/bin/test_create_request_file.py b/CMEW/app/configure_standardise/bin/test_create_request_file.py index 65374664..f5857c53 100644 --- a/CMEW/app/configure_standardise/bin/test_create_request_file.py +++ b/CMEW/app/configure_standardise/bin/test_create_request_file.py @@ -1,11 +1,8 @@ # (C) Crown Copyright 2024-2025, Met Office. # The LICENSE.md file contains full licensing details. import os -import pytest from create_request_file import create_request -pytestmark = pytest.mark.unittest - def test_create_request(monkeypatch): # In the order defined in 'create_request_file.py'. diff --git a/CMEW/app/configure_standardise/bin/test_create_variables_file.py b/CMEW/app/configure_standardise/bin/test_create_variables_file.py index 1eb81b7b..bd15cef0 100644 --- a/CMEW/app/configure_standardise/bin/test_create_variables_file.py +++ b/CMEW/app/configure_standardise/bin/test_create_variables_file.py @@ -6,9 +6,6 @@ """ from create_variables_file import parse_variables_from_recipe from pathlib import Path -import pytest - -pytestmark = pytest.mark.unittest def test_parse_radiation_budget_variables(): diff --git a/pytest.ini b/pytest.ini index 7cfbd09f..36e2af4a 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,4 +1,2 @@ [pytest] -markers = - unittest: Unit tests runnable via -O unittest testpaths = CMEW From 581af087738afc356142a8c131ba0bd60660f941 Mon Sep 17 00:00:00 2001 From: zmaalick Date: Tue, 20 Jan 2026 16:13:22 +0000 Subject: [PATCH 27/31] move pytest conf in pyproj and update pytest command in actions --- .github/workflows/default.yml | 2 +- pyproject.toml | 3 +++ pytest.ini | 2 -- 3 files changed, 4 insertions(+), 3 deletions(-) delete mode 100644 pytest.ini diff --git a/.github/workflows/default.yml b/.github/workflows/default.yml index 3ff17d3a..2ce2179f 100644 --- a/.github/workflows/default.yml +++ b/.github/workflows/default.yml @@ -71,7 +71,7 @@ jobs: run: | eval "$(conda shell.bash hook)" conda activate cmew - pytest -v -m unittest + pytest -v - name: Build documentation run: | diff --git a/pyproject.toml b/pyproject.toml index 40b6545f..68038d74 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,8 +16,11 @@ exclude = ''' ) ''' + + # Configure pytest. [tool.pytest.ini_options] +testpaths = ["CMEW"] filterwarnings = [ # Ignore deprecation warnings from webob, esmpy and pkg_resources: "ignore:'cgi' is deprecated and slated for removal in Python 3.13:DeprecationWarning", diff --git a/pytest.ini b/pytest.ini deleted file mode 100644 index 36e2af4a..00000000 --- a/pytest.ini +++ /dev/null @@ -1,2 +0,0 @@ -[pytest] -testpaths = CMEW From 1bca788b4348c3c93c942f9ca4e84b998c6e20ce Mon Sep 17 00:00:00 2001 From: zmaalick Date: Wed, 21 Jan 2026 11:30:14 +0000 Subject: [PATCH 28/31] updated the suggested changes --- CMEW/app/configure_recipe/bin/test_configure_recipe.py | 5 ++--- .../configure_standardise/bin/test_create_request_file.py | 3 +-- CMEW/app/unittest/rose-app.conf | 3 +-- CMEW/site/metoffice.cylc | 2 +- pyproject.toml | 6 ++---- 5 files changed, 7 insertions(+), 12 deletions(-) diff --git a/CMEW/app/configure_recipe/bin/test_configure_recipe.py b/CMEW/app/configure_recipe/bin/test_configure_recipe.py index 19128a04..17f36219 100644 --- a/CMEW/app/configure_recipe/bin/test_configure_recipe.py +++ b/CMEW/app/configure_recipe/bin/test_configure_recipe.py @@ -1,9 +1,8 @@ #!/usr/bin/env python -# (C) Crown Copyright 2024-2025, Met Office. +# (C) Crown Copyright 2024-2026, Met Office. # The LICENSE.md file contains full licensing details. -from configure_recipe import create_user_config_file import pytest - +from configure_recipe import create_user_config_file @pytest.mark.parametrize( "input_key, output_key, expected", diff --git a/CMEW/app/configure_standardise/bin/test_create_request_file.py b/CMEW/app/configure_standardise/bin/test_create_request_file.py index f5857c53..575ad6bd 100644 --- a/CMEW/app/configure_standardise/bin/test_create_request_file.py +++ b/CMEW/app/configure_standardise/bin/test_create_request_file.py @@ -1,9 +1,8 @@ -# (C) Crown Copyright 2024-2025, Met Office. +# (C) Crown Copyright 2024-2026, Met Office. # The LICENSE.md file contains full licensing details. import os from create_request_file import create_request - def test_create_request(monkeypatch): # In the order defined in 'create_request_file.py'. monkeypatch.setenv("START_YEAR", "1993") diff --git a/CMEW/app/unittest/rose-app.conf b/CMEW/app/unittest/rose-app.conf index e81f016b..0e15457f 100644 --- a/CMEW/app/unittest/rose-app.conf +++ b/CMEW/app/unittest/rose-app.conf @@ -2,5 +2,4 @@ # The LICENSE.md file contains full licensing details. [command] -default=cd ${CYLC_WORKFLOW_RUN_DIR}/app - = cmew-esmvaltool-env pytest +default=cmew-esmvaltool-env pytest diff --git a/CMEW/site/metoffice.cylc b/CMEW/site/metoffice.cylc index cdcbb15f..29024cd4 100644 --- a/CMEW/site/metoffice.cylc +++ b/CMEW/site/metoffice.cylc @@ -1,5 +1,5 @@ #!jinja2 -# (C) Crown Copyright 2022-2025, Met Office. +# (C) Crown Copyright 2022-2026, Met Office. # The LICENSE.md file contains full licensing details. # metoffice.cylc [runtime] diff --git a/pyproject.toml b/pyproject.toml index 68038d74..1d1536ba 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,4 +1,4 @@ -# (C) Crown Copyright 2024-2025, Met Office. +# (C) Crown Copyright 2024-2026, Met Office. # The LICENSE.md file contains full licensing details. # Configure black. [tool.black] @@ -16,8 +16,6 @@ exclude = ''' ) ''' - - # Configure pytest. [tool.pytest.ini_options] testpaths = ["CMEW"] @@ -28,4 +26,4 @@ filterwarnings = [ "ignore:Deprecated call to `pkg_resources.declare_namespace:DeprecationWarning", # Ignore user warnings from pybtex: "ignore:pkg_resources is deprecated as an API:UserWarning", -] +] \ No newline at end of file From c6114c31df43b57f628acc1e142d091bc4be0a45 Mon Sep 17 00:00:00 2001 From: zmaalick Date: Wed, 21 Jan 2026 14:10:36 +0000 Subject: [PATCH 29/31] pre-commit changes --- CMEW/app/configure_recipe/bin/test_configure_recipe.py | 1 + CMEW/app/configure_standardise/bin/test_create_request_file.py | 1 + pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CMEW/app/configure_recipe/bin/test_configure_recipe.py b/CMEW/app/configure_recipe/bin/test_configure_recipe.py index 17f36219..0e90209e 100644 --- a/CMEW/app/configure_recipe/bin/test_configure_recipe.py +++ b/CMEW/app/configure_recipe/bin/test_configure_recipe.py @@ -4,6 +4,7 @@ import pytest from configure_recipe import create_user_config_file + @pytest.mark.parametrize( "input_key, output_key, expected", [ diff --git a/CMEW/app/configure_standardise/bin/test_create_request_file.py b/CMEW/app/configure_standardise/bin/test_create_request_file.py index 575ad6bd..17a903ec 100644 --- a/CMEW/app/configure_standardise/bin/test_create_request_file.py +++ b/CMEW/app/configure_standardise/bin/test_create_request_file.py @@ -3,6 +3,7 @@ import os from create_request_file import create_request + def test_create_request(monkeypatch): # In the order defined in 'create_request_file.py'. monkeypatch.setenv("START_YEAR", "1993") diff --git a/pyproject.toml b/pyproject.toml index 1d1536ba..ab3151d1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,4 +26,4 @@ filterwarnings = [ "ignore:Deprecated call to `pkg_resources.declare_namespace:DeprecationWarning", # Ignore user warnings from pybtex: "ignore:pkg_resources is deprecated as an API:UserWarning", -] \ No newline at end of file +] From fe6953e5d52f6a117e1a2b2c7afa2100de67f46c Mon Sep 17 00:00:00 2001 From: zmaalick Date: Fri, 23 Jan 2026 08:37:47 +0000 Subject: [PATCH 30/31] revert back the copywrite change --- CMEW/app/configure_recipe/bin/test_configure_recipe.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMEW/app/configure_recipe/bin/test_configure_recipe.py b/CMEW/app/configure_recipe/bin/test_configure_recipe.py index 0e90209e..ef747bea 100644 --- a/CMEW/app/configure_recipe/bin/test_configure_recipe.py +++ b/CMEW/app/configure_recipe/bin/test_configure_recipe.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# (C) Crown Copyright 2024-2026, Met Office. +# (C) Crown Copyright 2024-2025, Met Office. # The LICENSE.md file contains full licensing details. import pytest from configure_recipe import create_user_config_file From 119b6dc713cbd6dde3a8c69c6099fc8e7554cb17 Mon Sep 17 00:00:00 2001 From: zmaalick Date: Fri, 23 Jan 2026 08:41:29 +0000 Subject: [PATCH 31/31] revert back the change --- CMEW/app/configure_standardise/bin/test_create_request_file.py | 1 + 1 file changed, 1 insertion(+) diff --git a/CMEW/app/configure_standardise/bin/test_create_request_file.py b/CMEW/app/configure_standardise/bin/test_create_request_file.py index 17a903ec..3a9d600c 100644 --- a/CMEW/app/configure_standardise/bin/test_create_request_file.py +++ b/CMEW/app/configure_standardise/bin/test_create_request_file.py @@ -1,6 +1,7 @@ # (C) Crown Copyright 2024-2026, Met Office. # The LICENSE.md file contains full licensing details. import os + from create_request_file import create_request