From c7d4cda6e1cbfd06dd29aaa7106f002d67398401 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=2EFernando=20S=C3=A1nchez?= Date: Wed, 27 Feb 2013 18:13:40 +0100 Subject: [PATCH] Refactored loading and statistics methods --- library.py | 121 +++++++++++++++++++++++++++-------------------------- 1 file changed, 61 insertions(+), 60 deletions(-) diff --git a/library.py b/library.py index 5afcc70..fe1c127 100644 --- a/library.py +++ b/library.py @@ -53,6 +53,67 @@ class Store(dict): def add_user(self,user): self[u'users'][user[u'login']]=user + def load_all(self,file='lcs.json'): + lcs=json.load(open(file)) + self[u'lcs']=lcs + for lcrepo in lcs.keys(): + repo=Org(lcrepo,store=self) + self.add_org(repo) + for org in self.orgs.values(): + print "ORG: %s:" % org + org.reload_repos() + org.reload_members() + for user in self.users.values(): + print "USER: %s" %user + user.reload_repos() + + def get_stats(self): + statistics={} + usedlanguages={} + linesperlanguage={} + for repo in self.repos.values(): + language=repo[u'language'] + url=repo[u'url'] + if language in usedlanguages: + usedlanguages[language].append([url]) + else: + usedlanguages[language]=list([url]) + languages=repo[u'languages'] + for language,lines in languages.iteritems(): + if language in linesperlanguage: + linesperlanguage[language]+=lines + else: + linesperlanguage[language]=lines + lcrepos=0 + statistics[u'usedlanguages']=usedlanguages + statistics[u'linesperlanguage']=linesperlanguage + for lc in self[u'lcs']: + lcrepos+=len(self.orgs[lc][u'repos']) + statistics["lc-repos"]=lcrepos + statistics["total-repos"]=len(self.repos) + statistics["total-users"]=len(self.users) + totalfollowers=0 + totalfollowing=0 + totalstarred=0 + for user in self.users.values(): + totalfollowing+=len(user.following) + totalfollowers+=len(user.followers) + totalstarred+=len(user.starred) + user.repos + totalwatching=0 + totalforks=0 + for repo in self.repos.values(): + totalwatching+=repo[u'watchers_count'] + totalforks+=repo[u'forks_count'] + statistics['total-followers']=totalfollowers + statistics['total-following']=totalfollowing + statistics['total-starred']=totalstarred + statistics['total-watching']=totalwatching + statistics['total-forks']=totalforks + self[u'statistics']=statistics + print self[u'orgs'] + print self[u'statistics'][u'linesperlanguage'] + class BasicItem(dict): def __init__(self,name,dic=None,method=get_url,name_key=u'url',store=None): self.store=store @@ -183,63 +244,3 @@ class Org(BasicLogin): else: self[u'members']=arr -def load_all(store): - lcs=json.load(open('lcs.json')) - store[u'lcs']=lcs - for lcrepo in lcs.keys(): - repo=Org(lcrepo,store=store) - store.add_org(repo) - for org in store.orgs.values(): - print "ORG: %s:" % org - org.reload_repos() - org.reload_members() - for user in store.users.values(): - print "USER: %s" %user - user.reload_repos() - -def get_stats(store): - statistics={} - usedlanguages={} - linesperlanguage={} - for repo in store.repos.values(): - language=repo[u'language'] - url=repo[u'url'] - if language in usedlanguages: - usedlanguages[language].append([url]) - else: - usedlanguages[language]=list([url]) - languages=repo[u'languages'] - for language,lines in languages.iteritems(): - if language in linesperlanguage: - linesperlanguage[language]+=lines - else: - linesperlanguage[language]=lines - lcrepos=0 - statistics[u'usedlanguages']=usedlanguages - statistics[u'linesperlanguage']=linesperlanguage - for lc in store[u'lcs']: - lcrepos+=len(store.orgs[lc][u'repos']) - statistics["lc-repos"]=lcrepos - statistics["total-repos"]=len(store.repos) - statistics["total-users"]=len(store.users) - totalfollowers=0 - totalfollowing=0 - totalstarred=0 - for user in store.users.values(): - totalfollowing+=len(user.following) - totalfollowers+=len(user.followers) - totalstarred+=len(user.starred) - user.repos - totalwatching=0 - totalforks=0 - for repo in store.repos.values(): - totalwatching+=repo[u'watchers_count'] - totalforks+=repo[u'forks_count'] - statistics['total-followers']=totalfollowers - statistics['total-following']=totalfollowing - statistics['total-starred']=totalstarred - statistics['total-watching']=totalwatching - statistics['total-forks']=totalforks - store[u'statistics']=statistics - print store[u'orgs'] - print store[u'statistics'][u'linesperlanguage']