annotate scripts/contributors.py @ 4827:f1c7f99e6fc0

contributors.py: Add aliases and process them
author anatoly techtonik <techtonik@gmail.com>
date Sun, 25 Aug 2013 17:45:43 +0300
parents 7c765b6fc44b
children 64daaa4bf816
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4822
e162fb7353df contributors.py: Add script to find out contributors
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
1 """
e162fb7353df contributors.py: Add script to find out contributors
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
2 Get Mercurial history data and output list of contributors with years.
e162fb7353df contributors.py: Add script to find out contributors
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
3
e162fb7353df contributors.py: Add script to find out contributors
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
4 Public domain work by:
e162fb7353df contributors.py: Add script to find out contributors
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
5
e162fb7353df contributors.py: Add script to find out contributors
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
6 anatoly techtonik <techtonik@gmail.com>
e162fb7353df contributors.py: Add script to find out contributors
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
7
e162fb7353df contributors.py: Add script to find out contributors
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
8 """
e162fb7353df contributors.py: Add script to find out contributors
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
9
e162fb7353df contributors.py: Add script to find out contributors
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
10 from subprocess import check_output
e162fb7353df contributors.py: Add script to find out contributors
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
11
e162fb7353df contributors.py: Add script to find out contributors
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
12 # --- output settings
e162fb7353df contributors.py: Add script to find out contributors
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
13 contributors_by_year = True
e162fb7353df contributors.py: Add script to find out contributors
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
14 years_for_contributors = True
e162fb7353df contributors.py: Add script to find out contributors
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
15 verbose = True
e162fb7353df contributors.py: Add script to find out contributors
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
16 # /--
e162fb7353df contributors.py: Add script to find out contributors
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
17
4827
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
18 # --- project specific configuration
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
19 ALIASES = {
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
20 'Richard Jones <richard@mechanicalcat.net>':
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
21 ['richard',
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
22 'Richard Jones <richard@users.sourceforge.net>'],
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
23 'Bernhard Reiter <bernhard@intevation.de>':
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
24 ['Bernhard Reiter <ber@users.sourceforge.net>',
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
25 'Bernhard Reiter <Bernhard.Reiter@intevation.de>'],
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
26 'Ralf Schlatterbeck <rsc@runtux.com>':
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
27 ['Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>'],
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
28 'Stefan Seefeld <stefan@seefeld.name>':
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
29 ['Stefan Seefeld <stefan@users.sourceforge.net>'],
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
30 'John P. Rouillard <rouilj@cs.umb.edu>':
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
31 ['rouilj'],
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
32 }
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
33 # /--
4822
e162fb7353df contributors.py: Add script to find out contributors
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
34
e162fb7353df contributors.py: Add script to find out contributors
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
35
4824
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
36 def compress(years):
4823
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
37 """
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
38 Given a list of years like [2003, 2004, 2007],
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
39 compress it into string like '2003-2004, 2007'
4824
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
40
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
41 >>> compress([2002])
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
42 '2002'
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
43 >>> compress([2003, 2002])
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
44 '2002-2003'
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
45 >>> compress([2009, 2004, 2005, 2006, 2007])
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
46 '2004-2007, 2009'
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
47 >>> compress([2001, 2003, 2004, 2005])
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
48 '2001, 2003-2005'
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
49 >>> compress([2009, 2011])
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
50 '2009, 2011'
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
51 >>> compress([2009, 2010, 2011, 2006, 2007])
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
52 '2006-2007, 2009-2011'
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
53 >>> compress([2002, 2003, 2004, 2005, 2006, 2009, 2012])
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
54 '2002-2006, 2009, 2012'
4823
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
55 """
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
56 years = sorted(years)
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
57 # compress years into string
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
58 comma = ', '
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
59 yearstr = ''
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
60 for i in range(0,len(years)-1):
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
61 if years[i+1]-years[i] == 1:
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
62 if not yearstr or yearstr.endswith(comma):
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
63 yearstr += '%s' % years[i]
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
64 if yearstr.endswith('-'):
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
65 pass
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
66 else:
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
67 yearstr += '-'
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
68 else:
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
69 yearstr += '%s, ' % years[i]
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
70
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
71 if len(years) == 1:
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
72 yearstr += str(years[0])
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
73 else:
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
74 yearstr += '%s' % years[-1]
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
75 return yearstr
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
76
dfef44485418 contributors.py: Compress years list into single string
anatoly techtonik <techtonik@gmail.com>
parents: 4822
diff changeset
77
4824
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
78 if __name__ == '__main__':
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
79 if verbose:
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
80 print("Getting HG log...")
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
81 authorship = check_output('hg log --template "{date(date,\\"%Y\\")},{author}\n"')
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
82 # authorship are strings like
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
83 # 2003,Richard Jones <richard@users.sourceforge.net>
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
84 # ...
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
85
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
86 if verbose:
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
87 print("Splitting...")
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
88 # transform to a list of tuples
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
89 authorship = [line.split(',', 1) for line in authorship.splitlines()]
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
90
4822
e162fb7353df contributors.py: Add script to find out contributors
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
91 if verbose:
4824
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
92 print("Sorting...")
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
93 years = {} # year -> set(author1, author2, ...)
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
94 names = {} # author -> set(years)
4827
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
95 for year, author in authorship:
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
96 # process aliases
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
97 for name, aliases in ALIASES.items():
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
98 if author in aliases:
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
99 author = name
f1c7f99e6fc0 contributors.py: Add aliases and process them
anatoly techtonik <techtonik@gmail.com>
parents: 4826
diff changeset
100 break
4824
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
101 # years
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
102 if not year in years:
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
103 years[year] = set()
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
104 years[year].add(author)
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
105 # names
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
106 if not author in names:
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
107 names[author] = set()
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
108 names[author].add(int(year))
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
109
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
110
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
111 if contributors_by_year:
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
112 if verbose:
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
113 print("Contributors by year...")
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
114 print('')
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
115 for year in sorted(years, reverse=True):
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
116 print(year)
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
117 for author in sorted(years[year]):
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
118 print(" " + author)
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
119 print('')
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
120
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
121 if years_for_contributors:
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
122 if verbose:
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
123 print("Years for each contributor...")
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
124 print('')
4825
b3bf0aa48368 contributors.py: Sort contributors by last contributor's year (newest first)
anatoly techtonik <techtonik@gmail.com>
parents: 4824
diff changeset
125
b3bf0aa48368 contributors.py: Sort contributors by last contributor's year (newest first)
anatoly techtonik <techtonik@gmail.com>
parents: 4824
diff changeset
126 def last_year(name):
4826
7c765b6fc44b contributors.py: Improve sorting, output string instead of list
anatoly techtonik <techtonik@gmail.com>
parents: 4825
diff changeset
127 """Return year of the latest contribution for a given name"""
7c765b6fc44b contributors.py: Improve sorting, output string instead of list
anatoly techtonik <techtonik@gmail.com>
parents: 4825
diff changeset
128 return sorted(list(names[name]))[-1]
7c765b6fc44b contributors.py: Improve sorting, output string instead of list
anatoly techtonik <techtonik@gmail.com>
parents: 4825
diff changeset
129
7c765b6fc44b contributors.py: Improve sorting, output string instead of list
anatoly techtonik <techtonik@gmail.com>
parents: 4825
diff changeset
130 def first_year(name):
7c765b6fc44b contributors.py: Improve sorting, output string instead of list
anatoly techtonik <techtonik@gmail.com>
parents: 4825
diff changeset
131 """Return year of the first contribution"""
7c765b6fc44b contributors.py: Improve sorting, output string instead of list
anatoly techtonik <techtonik@gmail.com>
parents: 4825
diff changeset
132 return sorted(list(names[name]))[0]
7c765b6fc44b contributors.py: Improve sorting, output string instead of list
anatoly techtonik <techtonik@gmail.com>
parents: 4825
diff changeset
133
7c765b6fc44b contributors.py: Improve sorting, output string instead of list
anatoly techtonik <techtonik@gmail.com>
parents: 4825
diff changeset
134 def year_cmp(name1, name2):
7c765b6fc44b contributors.py: Improve sorting, output string instead of list
anatoly techtonik <techtonik@gmail.com>
parents: 4825
diff changeset
135 """
7c765b6fc44b contributors.py: Improve sorting, output string instead of list
anatoly techtonik <techtonik@gmail.com>
parents: 4825
diff changeset
136 Year comparison function. First sort by latest contribution year (desc).
7c765b6fc44b contributors.py: Improve sorting, output string instead of list
anatoly techtonik <techtonik@gmail.com>
parents: 4825
diff changeset
137 If it matches, compare first contribution year (desc).
7c765b6fc44b contributors.py: Improve sorting, output string instead of list
anatoly techtonik <techtonik@gmail.com>
parents: 4825
diff changeset
138 """
7c765b6fc44b contributors.py: Improve sorting, output string instead of list
anatoly techtonik <techtonik@gmail.com>
parents: 4825
diff changeset
139 if last_year(name1) != last_year(name2):
7c765b6fc44b contributors.py: Improve sorting, output string instead of list
anatoly techtonik <techtonik@gmail.com>
parents: 4825
diff changeset
140 return last_year(name1) - last_year(name2)
7c765b6fc44b contributors.py: Improve sorting, output string instead of list
anatoly techtonik <techtonik@gmail.com>
parents: 4825
diff changeset
141 else:
7c765b6fc44b contributors.py: Improve sorting, output string instead of list
anatoly techtonik <techtonik@gmail.com>
parents: 4825
diff changeset
142 return first_year(name1) - first_year(name2)
4825
b3bf0aa48368 contributors.py: Sort contributors by last contributor's year (newest first)
anatoly techtonik <techtonik@gmail.com>
parents: 4824
diff changeset
143
4826
7c765b6fc44b contributors.py: Improve sorting, output string instead of list
anatoly techtonik <techtonik@gmail.com>
parents: 4825
diff changeset
144 for author in sorted(list(names), cmp=year_cmp, reverse=True):
4824
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
145 years = list(names[author])
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
146 yearstr = compress(years)
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
147
4825
b3bf0aa48368 contributors.py: Sort contributors by last contributor's year (newest first)
anatoly techtonik <techtonik@gmail.com>
parents: 4824
diff changeset
148 if 0: #DEBUG
4824
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
149 print(years, yearstr, author)
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
150 else:
4826
7c765b6fc44b contributors.py: Improve sorting, output string instead of list
anatoly techtonik <techtonik@gmail.com>
parents: 4825
diff changeset
151 print("Copyright (c) %s %s" % (yearstr, author))
4824
b83576aa3f74 contributors.py: Reorganize code for easy testing
anatoly techtonik <techtonik@gmail.com>
parents: 4823
diff changeset
152 print('')

Roundup Issue Tracker: http://roundup-tracker.org/