diff --git a/scripts/modules_matrix.py b/scripts/modules_matrix.py index e26d283f8a6c2669a3306ad80ec93a4d8e886ffb..3f410dcfa1e68ef01178f418453ee6645de5fd25 100755 --- a/scripts/modules_matrix.py +++ b/scripts/modules_matrix.py @@ -1,19 +1,16 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ modules_matrix """ -from __future__ import print_function - import argparse import csv import itertools import json import os.path -import packaging.specifiers def arg_parse(): """ - argument parser + Argument parser """ parser = argparse.ArgumentParser( description="Module_matrix" @@ -24,32 +21,29 @@ def arg_parse(): return parser.parse_args() def get_data(filename): - '''function to read the data form the input csv file to use in the analysis''' + """Function to read the data from the input CSV file to use in the analysis""" reader = [] # Just in case the file open fails with open(filename, 'r') as fdata: reader = csv.reader(fdata, delimiter=',') - # returns all the data from the csv file in list form -# print(list(reader)) - return list(reader) # only return the reader when you have finished. + return list(reader) # Only return the reader when you have finished. def get_datalist(): - """ get_datalist """ + """Get data list""" datalist = [] for name in ['karolina', 'dgx', 'barbora']: - path = os.path.join('scripts', "{}.csv".format(name)) + path = os.path.join('scripts', f"{name}.csv") datalist += get_data(path) return datalist def get_counts(datalist): - """ get_counts """ - counts = dict() + """Get counts""" + counts = {} for i in datalist: counts[i[0]] = counts.get(i[0], 0) + int(i[1]) return counts def get_matrix(): - """ get_matrix """ - # 1 2 4 8 16 32 + """Get matrix""" chars = ['K', 'B', 'D'] arr = [] mask = ''.join(reversed(chars)) @@ -65,10 +59,10 @@ def get_matrix(): return arr def get_software(datalist): - """ get_software """ + """Get software""" matrix = get_matrix() counts = get_counts(datalist) - software = dict() + software = {} prev = '' for mat, i in sorted(counts.items()): split = mat.split('/') @@ -80,31 +74,28 @@ def get_software(datalist): return software def packages_json(software): - """ packages_json """ + """Packages JSON""" packages = {} for module in sorted(software.items(), key=lambda i: i[0].lower()): - packages[module[0]] = sorted(module[1], - key=packaging.specifiers.LegacyVersion)[len(module[1]) - 1] + packages[module[0]] = sorted(module[1])[-1] data = {'total': len(packages), 'projects': packages} return data def print_software(software): - """ print_software """ - versions = '' - clusters = '' + """Print software""" for module in sorted(software.items(), key=lambda i: i[0].lower()): - software = module[0] + software_name = module[0] versions = [] clusters = [] - for key in sorted(module[1].keys(), key=packaging.specifiers.LegacyVersion): + for key in sorted(module[1].keys()): versions.append(key) clusters.append(module[1][key]) - print("| {} | {} | {} |".format(software, '</br>'.join(versions), '</br>'.join(clusters))) + print(f"| {software_name} | {'</br>'.join(versions)} | {'</br>'.join(clusters)} |") print() print('---8<--- "modules_matrix_search.md"') def print_hint(): - """ print_hint """ + """Print hint""" print('!!! Hint "Cluster Acronyms"') print(' ```') print(' D B K') @@ -114,13 +105,13 @@ def print_hint(): print(' +--------> DGX') print(' ```') print() - print("{} {} {}".format('| Module </br><form><input id="searchInput" placeholder="🔍 Filter"', - 'style="width: 8rem; border-radius: 0.2rem; color: black;', - 'padding-left: .2rem;"></form> | Versions | Clusters |')) + print(f"| Module </br><form><input id=\"searchInput\" placeholder=\"🔍 Filter\"" + f"style=\"width: 8rem; border-radius: 0.2rem; color: black;" + f"padding-left: .2rem;\"></form> | Versions | Clusters |") print("| ------ | -------- | -------- |") def print_changelog(): - """ print_changelog """ + """Print changelog""" print('**Modules Changelog**<br>') print('You can see the modules changelog for each supercomputer here:<br>') print('[DGX modules changelog][1]<br>') @@ -128,15 +119,13 @@ def print_changelog(): print('[Karolina modules changelog][3]<br>') def print_links(): - """ print_links """ + """Print links""" print('[1]: https://code.it4i.cz/sccs/it4i-modules/-/blob/master/dgx-changelog.md') print('[2]: https://code.it4i.cz/sccs/it4i-modules/-/blob/master/barbora-changelog.md') print('[3]: https://code.it4i.cz/sccs/it4i-modules/-/blob/master/karolina-changelog.md') def main(): - """ - main function - """ + """Main function""" arg = arg_parse() datalist = get_datalist() software = get_software(datalist)