Skip to content
Snippets Groups Projects
Select Git revision
  • blender-v2.92-release
  • master default protected
  • blender-v3.5-release
  • main
  • blender-v3.4-release
  • blender-v3.3-release
  • blender-v3.2-release
  • blender-v3.1-release
  • blender-v3.0-release
  • studio-sprite-fright
  • blender-v2.93-release
  • blender-v2.91-release
  • temp-code-clean
  • blender-v2.90-release
  • c-style-check
  • blender-v2.83-release
  • blender-v2.82-release
  • blender-v2.81-release
  • blender-v2.80-release
  • blender2.8_covise4
  • v3.3.4
  • v2.93.15
  • v2.93.14
  • v3.3.3
  • v2.93.13
  • v2.93.12
  • v3.4.1
  • v3.3.2
  • v3.4.0
  • v3.3.1
  • v2.93.11
  • v3.3.0
  • v3.2.2
  • v2.93.10
  • v3.2.1
  • v3.2.0
  • v2.83.20
  • v2.93.9
  • v3.1.2
  • v3.1.1
40 results

blender_theme_as_c.py

Blame
  • modules_matrix.py 4.17 KiB
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    """ modules_matrix """
    
    import argparse
    import csv
    import itertools
    import json
    import os.path
    
    def arg_parse():
        """
        Argument parser
        """
        parser = argparse.ArgumentParser(
            description="Module_matrix"
        )
        parser.add_argument('--json',
                            action='store_true',
                            help="get json")
        return parser.parse_args()
    
    def get_data(filename):
        """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=',')
            return list(reader)  # Only return the reader when you have finished.
    
    def get_datalist():
        """Get data list"""
        datalist = []
        for name in ['karolina', 'dgx', 'barbora']:
            path = os.path.join('scripts', f"{name}.csv")
            datalist += get_data(path)
        return datalist
    
    def get_counts(datalist):
        """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"""
        chars = ['K', 'B', 'D']
        arr = []
        mask = ''.join(reversed(chars))
        for bits in itertools.product([0, 1], repeat=len(chars)):
            sbit = "".join(str(bit) for bit in bits)
            nst = ""
            for i, _ in enumerate(sbit):
                if sbit[i] == "1":
                    nst += mask[i]
                else:
                    nst += "-"
            arr.append(nst)
        return arr
    
    def get_software(datalist):
        """Get software"""
        matrix = get_matrix()
        counts = get_counts(datalist)
        software = {}
        prev = ''
        for mat, i in sorted(counts.items()):
            split = mat.split('/')
            if len(split) > 1:
                if split[0] != prev:
                    software[split[0]] = {}
                software[split[0]][split[1]] = '`' + matrix[i] + '`'
                prev = split[0]
        return software
    
    def packages_json(software):
        """Packages JSON"""
        packages = {}
        for module in sorted(software.items(), key=lambda i: i[0].lower()):
            packages[module[0]] = sorted(module[1])[-1]
        data = {'total': len(packages), 'projects': packages}
        return data
    
    def print_software(software):
        """Print software"""
        for module in sorted(software.items(), key=lambda i: i[0].lower()):
            software_name = module[0]
            versions = []
            clusters = []
            for key in sorted(module[1].keys()):
                versions.append(key)
                clusters.append(module[1][key])
            print(f"| {software_name} | {'<br>'.join(versions)} | {'<br>'.join(clusters)} |")
        print()
        print('---8<--- "modules_matrix_search.md"')
    
    def print_hint():
        """Print hint"""
        print('!!! Hint "Cluster Acronyms"')
        print('    ```')
        print('    D B K')
        print('    | | |')
        print('    | | +----> Karolina')
        print('    | +------> Barbora')
        print('    +--------> DGX')
        print('    ```')
        print()
        print("| Module <br><form><input id=\"searchInput\" placeholder=\"🔍 Filter\""
              " style=\"width: 8rem; border-radius: 0.2rem; color: black;"
              " padding-left: .2rem;\"></form> | Versions | Clusters |")
        print("| ------ | -------- | -------- |")
    
    def 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>')
        print('[Barbora modules changelog][2]<br>')
        print('[Karolina modules changelog][3]<br>')
    
    def 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"""
        arg = arg_parse()
        datalist = get_datalist()
        software = get_software(datalist)
    
        if arg.json:
            print(json.dumps(packages_json(software)))
        else:
            print_changelog()
            print_hint()
            print_software(software)
            print_links()
    
    if __name__ == "__main__":
        main()