Skip to content
Snippets Groups Projects
modules-json.py 1.54 KiB
Newer Older
#!/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:
Lukáš Krupčík's avatar
Lukáš Krupčík committed
        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]

Lukáš Krupčík's avatar
Lukáš Krupčík committed
data = {'total': len(packages), 'projects': packages }
print json.dumps(data)