diff --git a/scripts/available_software/available_software.py b/scripts/available_software/available_software.py index 9e0c871cee..dba2eaa7a8 100644 --- a/scripts/available_software/available_software.py +++ b/scripts/available_software/available_software.py @@ -16,6 +16,7 @@ import json import os import yaml +from easybuild.tools import LooseVersion from mdutils.tools.Table import Table from string import Template @@ -182,7 +183,9 @@ def generate_software_page(software_name: str, software_data: dict, path: str) - n_cols = len(table_data) n_rows = 1 - for version in sorted(software_data["versions"], key=lambda x: x["version"]): + for version in sorted( + software_data["versions"], key=lambda x: LooseVersion(x["module"]["module_version"]), reverse=True + ): cpu_targets = format_cpu_arch_list(version["cpu_arch"]) gpu_targets = format_gpu_arch_list(version["gpu_arch"]) @@ -243,12 +246,14 @@ def generate_software_page(software_name: str, software_data: dict, path: str) - table_data[0] = table_data[0] % ext_name n_rows = 1 - for ext_version, ext_version_mods in sorted(ext_details.items(), key=lambda x: x[0]): + for ext_version, ext_version_mods in sorted( + ext_details.items(), key=lambda x: LooseVersion(x[0]), reverse=True + ): n_rows += 1 table_data.extend( [ ext_version, - "
".join("`" + m + "`" for m in sorted(ext_version_mods)), + "
".join("`" + m + "`" for m in sorted(ext_version_mods, key=LooseVersion, reverse=True)), ] ) @@ -271,9 +276,9 @@ def generate_software_page(software_name: str, software_data: dict, path: str) - with open(filename, "w") as f: # Add the software name ldjson_software_data["name"] = software_name - # Just output the supported versionsq + # Just output the supported versions ldjson_software_data["version"] = sorted( - list(set([version["version"] for version in software_data["versions"]])), reverse=True + list(set([version["version"] for version in software_data["versions"]])), key=LooseVersion, reverse=True ) # Make the description safe for json (and remove surrounding quotes) ldjson_software_data["description"] = json.dumps(ldjson_software_data["description"])[1:-1] diff --git a/scripts/available_software/requirements.txt b/scripts/available_software/requirements.txt index 6d558a8c4d..44b9377a8a 100644 --- a/scripts/available_software/requirements.txt +++ b/scripts/available_software/requirements.txt @@ -1,2 +1,3 @@ +easybuild-framework mdutils pyyaml diff --git a/scripts/available_software/tests/reference_detail/ESPResSo.md b/scripts/available_software/tests/reference_detail/ESPResSo.md index 14a051054d..969348cdfc 100644 --- a/scripts/available_software/tests/reference_detail/ESPResSo.md +++ b/scripts/available_software/tests/reference_detail/ESPResSo.md @@ -38,7 +38,7 @@ A software package for performing and analyzing scientific Molecular Dynamics si |ESPResSo version|Supported CPU targets|Supported GPU targets|EESSI version|Module| | --- | --- | --- | --- | --- | -|4.2.1|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`ESPResSo/4.2.1-foss-2023a`| +|4.2.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`ESPResSo/4.2.2-foss-2023b`| |4.2.2|`generic`: `aarch64`, `x86_64`
Arm: `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|NVIDIA: `cc70`, `cc80`, `cc90`
|2023.06|`ESPResSo/4.2.2-foss-2023a-CUDA-12.1.1`| |4.2.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`ESPResSo/4.2.2-foss-2023a`| -|4.2.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`ESPResSo/4.2.2-foss-2023b`| \ No newline at end of file +|4.2.1|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`ESPResSo/4.2.1-foss-2023a`| \ No newline at end of file diff --git a/scripts/available_software/tests/reference_detail/PMIx.md b/scripts/available_software/tests/reference_detail/PMIx.md index c58557dc87..05d283e673 100644 --- a/scripts/available_software/tests/reference_detail/PMIx.md +++ b/scripts/available_software/tests/reference_detail/PMIx.md @@ -67,9 +67,9 @@ the desired level of scalability. |PMIx version|Supported CPU targets|Supported GPU targets|EESSI version|Module| | --- | --- | --- | --- | --- | -|4.2.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`PMIx/4.2.2-GCCcore-12.2.0`| -|4.2.4|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`PMIx/4.2.4-GCCcore-12.3.0`| -|4.2.6|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`PMIx/4.2.6-GCCcore-13.2.0`| -|5.0.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`PMIx/5.0.2-GCCcore-13.3.0`| +|5.0.8|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`PMIx/5.0.8-GCCcore-14.3.0`| |5.0.6|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`PMIx/5.0.6-GCCcore-14.2.0`| -|5.0.8|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`PMIx/5.0.8-GCCcore-14.3.0`| \ No newline at end of file +|5.0.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`PMIx/5.0.2-GCCcore-13.3.0`| +|4.2.6|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`PMIx/4.2.6-GCCcore-13.2.0`| +|4.2.4|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`PMIx/4.2.4-GCCcore-12.3.0`| +|4.2.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`PMIx/4.2.2-GCCcore-12.2.0`| \ No newline at end of file diff --git a/scripts/available_software/tests/reference_detail/hatchling.md b/scripts/available_software/tests/reference_detail/hatchling.md index 76b795750e..3615679a5b 100644 --- a/scripts/available_software/tests/reference_detail/hatchling.md +++ b/scripts/available_software/tests/reference_detail/hatchling.md @@ -40,11 +40,11 @@ a modern, extensible Python project manager. |hatchling version|Supported CPU targets|Supported GPU targets|EESSI version|Module| | --- | --- | --- | --- | --- | -|1.18.0|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`hatchling/1.18.0-GCCcore-12.3.0`| -|1.18.0|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`hatchling/1.18.0-GCCcore-13.2.0`| -|1.24.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`hatchling/1.24.2-GCCcore-13.3.0`| -|1.27.0|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`hatchling/1.27.0-GCCcore-14.2.0`| |1.27.0|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`hatchling/1.27.0-GCCcore-14.3.0`| +|1.27.0|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`hatchling/1.27.0-GCCcore-14.2.0`| +|1.24.2|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2025.06|`hatchling/1.24.2-GCCcore-13.3.0`| +|1.18.0|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`hatchling/1.18.0-GCCcore-13.2.0`| +|1.18.0|`generic`: `aarch64`, `x86_64`
Arm: `a64fx`, `neoverse_n1`, `neoverse_v1`, `nvidia/grace`
AMD: `zen2`, `zen3`, `zen4`
Intel: `haswell`, `skylake_avx512`, `sapphirerapids`, `icelake`, `cascadelake`
|*(none)*|2023.06|`hatchling/1.18.0-GCCcore-12.3.0`| ## Extensions @@ -56,8 +56,8 @@ Overview of extensions included in hatchling installations |`editables` version|hatchling modules that include it| | --- | --- | +|0.5|`hatchling/1.27.0-GCCcore-14.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.18.0-GCCcore-13.2.0`| |0.3|`hatchling/1.18.0-GCCcore-12.3.0`| -|0.5|`hatchling/1.18.0-GCCcore-13.2.0`
`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.27.0-GCCcore-14.3.0`| ### hatch-docstring-description @@ -71,74 +71,74 @@ Overview of extensions included in hatchling installations |`hatch-fancy-pypi-readme` version|hatchling modules that include it| | --- | --- | -|24.1.0|`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`| |25.1.0|`hatchling/1.27.0-GCCcore-14.3.0`| +|24.1.0|`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.24.2-GCCcore-13.3.0`| ### hatch-requirements-txt |`hatch-requirements-txt` version|hatchling modules that include it| | --- | --- | -|0.4.1|`hatchling/1.18.0-GCCcore-12.3.0`
`hatchling/1.18.0-GCCcore-13.2.0`
`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.27.0-GCCcore-14.3.0`| +|0.4.1|`hatchling/1.27.0-GCCcore-14.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.18.0-GCCcore-13.2.0`
`hatchling/1.18.0-GCCcore-12.3.0`| ### hatch-vcs |`hatch-vcs` version|hatchling modules that include it| | --- | --- | -|0.4.0|`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`| |0.5.0|`hatchling/1.27.0-GCCcore-14.3.0`| +|0.4.0|`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.24.2-GCCcore-13.3.0`| ### hatch_fancy_pypi_readme |`hatch_fancy_pypi_readme` version|hatchling modules that include it| | --- | --- | -|23.1.0|`hatchling/1.18.0-GCCcore-12.3.0`
`hatchling/1.18.0-GCCcore-13.2.0`| +|23.1.0|`hatchling/1.18.0-GCCcore-13.2.0`
`hatchling/1.18.0-GCCcore-12.3.0`| ### hatch_vcs |`hatch_vcs` version|hatchling modules that include it| | --- | --- | -|0.3.0|`hatchling/1.18.0-GCCcore-12.3.0`
`hatchling/1.18.0-GCCcore-13.2.0`| +|0.3.0|`hatchling/1.18.0-GCCcore-13.2.0`
`hatchling/1.18.0-GCCcore-12.3.0`| ### hatchling |`hatchling` version|hatchling modules that include it| | --- | --- | -|1.18.0|`hatchling/1.18.0-GCCcore-12.3.0`
`hatchling/1.18.0-GCCcore-13.2.0`| +|1.27.0|`hatchling/1.27.0-GCCcore-14.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`| |1.24.2|`hatchling/1.24.2-GCCcore-13.3.0`| -|1.27.0|`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.27.0-GCCcore-14.3.0`| +|1.18.0|`hatchling/1.18.0-GCCcore-13.2.0`
`hatchling/1.18.0-GCCcore-12.3.0`| ### pathspec |`pathspec` version|hatchling modules that include it| | --- | --- | -|0.11.1|`hatchling/1.18.0-GCCcore-12.3.0`| +|0.12.1|`hatchling/1.27.0-GCCcore-14.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.24.2-GCCcore-13.3.0`| |0.11.2|`hatchling/1.18.0-GCCcore-13.2.0`| -|0.12.1|`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.27.0-GCCcore-14.3.0`| +|0.11.1|`hatchling/1.18.0-GCCcore-12.3.0`| ### pluggy |`pluggy` version|hatchling modules that include it| | --- | --- | -|1.2.0|`hatchling/1.18.0-GCCcore-12.3.0`| -|1.3.0|`hatchling/1.18.0-GCCcore-13.2.0`| -|1.5.0|`hatchling/1.24.2-GCCcore-13.3.0`
`hatchling/1.27.0-GCCcore-14.2.0`| |1.6.0|`hatchling/1.27.0-GCCcore-14.3.0`| +|1.5.0|`hatchling/1.27.0-GCCcore-14.2.0`
`hatchling/1.24.2-GCCcore-13.3.0`| +|1.3.0|`hatchling/1.18.0-GCCcore-13.2.0`| +|1.2.0|`hatchling/1.18.0-GCCcore-12.3.0`| ### trove-classifiers |`trove-classifiers` version|hatchling modules that include it| | --- | --- | -|2024.5.22|`hatchling/1.24.2-GCCcore-13.3.0`| -|2025.2.18.16|`hatchling/1.27.0-GCCcore-14.2.0`| |2025.5.9.12|`hatchling/1.27.0-GCCcore-14.3.0`| +|2025.2.18.16|`hatchling/1.27.0-GCCcore-14.2.0`| +|2024.5.22|`hatchling/1.24.2-GCCcore-13.3.0`| ### trove_classifiers