Skip to content
Snippets Groups Projects
modules-json.py 1.56 KiB
Newer Older
  • Learn to ignore specific revisions
  • #!/usr/bin/python
    # -*- coding: utf-8 -*-
    import csv
    import collections
    import json
    from distutils.version import LooseVersion
    
    def get_data(filename):
        '''function to read the data form the input csv file to use in the analysis'''
        reader = [] # Just in case the file open fails
        with open(filename, 'rb') as f:
            reader = csv.reader(f,delimiter=',')                      
            #returns all the data from the csv file in list form
            #f.close() # May need to close the file when done
            return list(reader)  # only return the reader when you have finished.
    
    your_list = []
    your_list += get_data('./scripts/modules-anselm.csv')
    your_list += get_data('./scripts/modules-salomon.csv')
    your_list += get_data('./scripts/modules-salomon-uv.csv')
    #print your_list
    
    #a=[["python/2.8.1",1],["python/2.9.1",2],["python/2.8.1",4],["python/3.0.1",4]]
    counts = dict()
    for i in your_list:
      #print i[0]
      #print int(i[1])
      counts[i[0]]=counts.get(i[0], 0) + int(i[1])
    
    #print sorted(counts.items())
    
    c=[
    "---",
    "--A",
    "-S-",
    "-SA",
    "U--",
    "U-A",
    "US-",
    "USA",
    ]
    
    software = dict()
    versions = ''
    clusters = ''
    prev = ''
    
    for m,i in sorted(counts.items()):
      #print m
      split =  m.split('/')
      #print split
      if len(split) > 1:
        a = split[0]
        b = split[1]
        if split[0] <> prev:
          software[a] = {}
        software[a][b] = '`' + c[i] + '`'
        prev = a
    
    
    packages = {}
    
    for m in sorted(software.items(), key=lambda i: i[0].lower()):
      packages[m[0]]=sorted(m[1], key=LooseVersion)[len(m[1])-1]
    
    data = {'total': len(packages), 'projects': packages } 
    print json.dumps(data)