File: generate_authors.py

package info (click to toggle)
python-babel 2.17.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,892 kB
  • sloc: python: 14,521; makefile: 177; javascript: 77; sh: 8
file content (53 lines) | stat: -rw-r--r-- 1,577 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import os
import re
from collections import Counter
from subprocess import check_output

root_path = os.path.realpath(os.path.join(os.path.dirname(__file__), '..'))

aliases = {
    re.compile("Jun Omae"): "Jun Omae",
    re.compile(r"^Hugo$"): "Hugo van Kemenade",
    re.compile(r"^Tomas R([.])?"): "Tomas R.",
}


def map_alias(name):
    for pattern, alias in aliases.items():
        if pattern.match(name):
            return alias
    return name


def get_sorted_authors_list():
    authors = check_output(['git', 'log', '--format=%aN'], cwd=root_path).decode('UTF-8')
    counts = Counter(map_alias(name) for name in authors.splitlines())
    return [author for (author, count) in counts.most_common()]


def get_authors_file_content():
    author_list = "\n".join(f"- {a}" for a in get_sorted_authors_list())

    return f'''
Babel is written and maintained by the Babel team and various contributors:

{author_list}

Babel was previously developed under the Copyright of Edgewall Software.  The
following copyright notice holds true for releases before 2013: "Copyright (c)
2007 - 2011 by Edgewall Software"

In addition to the regular contributions Babel includes a fork of Lennart
Regebro's tzlocal that originally was licensed under the CC0 license.  The
original copyright of that project is "Copyright 2013 by Lennart Regebro".
'''


def write_authors_file():
    content = get_authors_file_content()
    with open(os.path.join(root_path, 'AUTHORS'), 'w', encoding='UTF-8') as fp:
        fp.write(content)


if __name__ == '__main__':
    write_authors_file()