annotate scripts/shortlog.py @ 8161:2786730e56e0

scripts: use explicit relative imports of contributor_data Avoid any ambiguity ... and avoid pytype failing to find scripts/contributor_data.py when scripts isn't in sys.path.
author Mads Kiilerich <mads@kiilerich.com>
date Tue, 04 Feb 2020 03:05:15 +0100
parents 0a277465fddf
children aa6f17a53b49
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7586
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
1 #!/usr/bin/env python2
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
3
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
4 """
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
5 Kallithea script for generating a quick overview of contributors and their
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
6 commit counts in a given revision set.
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
7 """
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
8 import argparse
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
9 import os
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
10 from collections import Counter
7811
0a277465fddf scripts: initial run of import cleanup using isort
Mads Kiilerich <mads@kiilerich.com>
parents: 7586
diff changeset
11
8161
2786730e56e0 scripts: use explicit relative imports of contributor_data
Mads Kiilerich <mads@kiilerich.com>
parents: 7811
diff changeset
12 from . import contributor_data
7586
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
13
7811
0a277465fddf scripts: initial run of import cleanup using isort
Mads Kiilerich <mads@kiilerich.com>
parents: 7586
diff changeset
14
7586
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
15 def main():
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
16
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
17 parser = argparse.ArgumentParser(description='Generate a list of committers and commit counts.')
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
18 parser.add_argument('revset',
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
19 help='revision set specifying the commits to count')
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
20 args = parser.parse_args()
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
21
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
22 repo_entries = [
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
23 (contributor_data.name_fixes.get(name) or contributor_data.name_fixes.get(name.rsplit('<', 1)[0].strip()) or name).rsplit('<', 1)[0].strip()
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
24 for name in (line.strip()
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
25 for line in os.popen("""hg log -r '%s' -T '{author}\n'""" % args.revset).readlines())
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
26 ]
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
27
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
28 counter = Counter(repo_entries)
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
29 for name, count in counter.most_common():
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
30 if name == '':
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
31 continue
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
32 print('%4s %s' % (count, name))
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
33
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
34
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
35 if __name__ == '__main__':
30e3d0a14f09 scripts/shortlog: new script
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
36 main()