File: attribution.py

package info (click to toggle)
celery 5.6.0-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 8,572 kB
  • sloc: python: 66,917; sh: 795; makefile: 378
file content (34 lines) | stat: -rwxr-xr-x 841 bytes parent folder | download | duplicates (3)
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
#!/usr/bin/env python

import fileinput
from pprint import pprint


def author(line):
    try:
        A, E = line.strip().rsplit(None, 1)
        E.replace('>', '').replace('<', '')
    except ValueError:
        A, E = line.strip(), None
    return A.lower() if A else A, E.lower() if E else E


def proper_name(name):
    return name and ' ' in name


def find_missing_authors(seen):
    with open('AUTHORS') as authors:
        known = [author(line) for line in authors.readlines()]

    seen_authors = {t[0] for t in seen if proper_name(t[0])}
    known_authors = {t[0] for t in known}
    # maybe later?:
    #   seen_emails = {t[1] for t in seen}
    #   known_emails = {t[1] for t in known}

    pprint(seen_authors - known_authors)


if __name__ == '__main__':
    find_missing_authors([author(line) for line in fileinput.input()])