# HG changeset patch # User Thomas De Schampheleire # Date 2019-03-15 20:21:12 # Node ID 050a94de8e7f1cdb2f8cc8cce01b855fa9a1ce47 # Parent 9d972ac5437b418e4fbfa3a382d51f79baabe111 scripts: extract contributor data out of update-copyrights.py ... to allow re-use in other scripts, like shortlog.py. diff --git a/scripts/contributor_data.py b/scripts/contributor_data.py new file mode 100644 --- /dev/null +++ b/scripts/contributor_data.py @@ -0,0 +1,89 @@ +# -*- coding: utf-8 -*- + +# Some committers are so wrong that it doesn't point at any contributor: +total_ignore = set() +total_ignore.add('*** failed to import extension hggit: No module named hggit') +total_ignore.add('<>') + +# Normalize some committer names where people have contributed under different +# names or email addresses: +name_fixes = {} +name_fixes['Andrew Shadura'] = "Andrej Shadura " +name_fixes['aparkar'] = "Aparkar " +name_fixes['Aras Pranckevicius'] = "Aras Pranckevičius " +name_fixes['Augosto Hermann'] = "Augusto Herrmann " +name_fixes['"Bradley M. Kuhn" '] = "Bradley M. Kuhn " +name_fixes['dmitri.kuznetsov'] = "Dmitri Kuznetsov" +name_fixes['Dmitri Kuznetsov'] = "Dmitri Kuznetsov" +name_fixes['domruf'] = "Dominik Ruf " +name_fixes['Ingo von borstel'] = "Ingo von Borstel " +name_fixes['Jan Heylen'] = "Jan Heylen " +name_fixes['Jason F. Harris'] = "Jason Harris " +name_fixes['Jelmer Vernooij'] = "Jelmer Vernooij " +name_fixes['jfh '] = "Jason Harris " +name_fixes['Leonardo Carneiro'] = "Leonardo Carneiro " +name_fixes['leonardo'] = "Leonardo Carneiro " +name_fixes['Leonardo '] = "Leonardo Carneiro " +name_fixes['Les Peabody'] = "Les Peabody " +name_fixes['"Lorenzo M. Catucci" '] = "Lorenzo M. Catucci " +name_fixes['Lukasz Balcerzak'] = "Łukasz Balcerzak " +name_fixes['mao '] = "Ching-Chen Mao " +name_fixes['marcink'] = "Marcin Kuźmiński " +name_fixes['Marcin Kuzminski'] = "Marcin Kuźmiński " +name_fixes['nansenat16@null.tw'] = "nansenat16 " +name_fixes['Peter Vitt'] = "Peter Vitt " +name_fixes['philip.j@hostdime.com'] = "Philip Jameson " +name_fixes['Søren Løvborg'] = "Søren Løvborg " +name_fixes['Thomas De Schampheleire'] = "Thomas De Schampheleire " +name_fixes['Weblate'] = "<>" +name_fixes['xpol'] = "xpol " +name_fixes['Lars '] = "Lars Kruse " + +# Some committer email address domains that indicate that another entity might +# hold some copyright too: +domain_extra = {} +domain_extra['unity3d.com'] = "Unity Technologies" +domain_extra['rhodecode.com'] = "RhodeCode GmbH" + +# Repository history show some old contributions that traditionally hasn't been +# listed in about.html - preserve that: +no_about = set(total_ignore) +# The following contributors were traditionally not listed in about.html and it +# seems unclear if the copyright is personal or belongs to a company. +no_about.add(('Thayne Harbaugh ', '2011')) +no_about.add(('Dies Koper ', '2012')) +no_about.add(('Erwin Kroon ', '2012')) +no_about.add(('Vincent Caron ', '2012')) +# These contributors' contributions might be too small to be copyrightable: +no_about.add(('philip.j@hostdime.com', '2012')) +no_about.add(('Stefan Engel ', '2012')) +no_about.add(('Ton Plomp ', '2013')) +# Was reworked and contributed later and shadowed by other contributions: +no_about.add(('Sean Farley ', '2013')) + +# Preserve contributors listed in about.html but not appearing in repository +# history: +other_about = [ + ("2011", "Aparkar "), + ("2010", "RhodeCode GmbH"), + ("2011", "RhodeCode GmbH"), + ("2012", "RhodeCode GmbH"), + ("2013", "RhodeCode GmbH"), +] + +# Preserve contributors listed in CONTRIBUTORS but not appearing in repository +# history: +other_contributors = [ + ("", "Andrew Kesterson "), + ("", "cejones"), + ("", "David A. Sjøen "), + ("", "James Rhodes "), + ("", "Jonas Oberschweiber "), + ("", "larikale"), + ("", "RhodeCode GmbH"), + ("", "Sebastian Kreutzberger "), + ("", "Steve Romanow "), + ("", "SteveCohen"), + ("", "Thomas "), + ("", "Thomas Waldmann "), +] diff --git a/scripts/update-copyrights.py b/scripts/update-copyrights.py --- a/scripts/update-copyrights.py +++ b/scripts/update-copyrights.py @@ -38,100 +38,10 @@ When the copyright might belong to a dif contributor, the legal entity is given credit too. """ - -# Some committers are so wrong that it doesn't point at any contributor: -total_ignore = set() -total_ignore.add('*** failed to import extension hggit: No module named hggit') -total_ignore.add('<>') - -# Normalize some committer names where people have contributed under different -# names or email addresses: -name_fixes = {} -name_fixes['Andrew Shadura'] = "Andrej Shadura " -name_fixes['aparkar'] = "Aparkar " -name_fixes['Aras Pranckevicius'] = "Aras Pranckevičius " -name_fixes['Augosto Hermann'] = "Augusto Herrmann " -name_fixes['"Bradley M. Kuhn" '] = "Bradley M. Kuhn " -name_fixes['dmitri.kuznetsov'] = "Dmitri Kuznetsov" -name_fixes['Dmitri Kuznetsov'] = "Dmitri Kuznetsov" -name_fixes['domruf'] = "Dominik Ruf " -name_fixes['Ingo von borstel'] = "Ingo von Borstel " -name_fixes['Jan Heylen'] = "Jan Heylen " -name_fixes['Jason F. Harris'] = "Jason Harris " -name_fixes['Jelmer Vernooij'] = "Jelmer Vernooij " -name_fixes['jfh '] = "Jason Harris " -name_fixes['Leonardo Carneiro'] = "Leonardo Carneiro " -name_fixes['leonardo'] = "Leonardo Carneiro " -name_fixes['Leonardo '] = "Leonardo Carneiro " -name_fixes['Les Peabody'] = "Les Peabody " -name_fixes['"Lorenzo M. Catucci" '] = "Lorenzo M. Catucci " -name_fixes['Lukasz Balcerzak'] = "Łukasz Balcerzak " -name_fixes['mao '] = "Ching-Chen Mao " -name_fixes['marcink'] = "Marcin Kuźmiński " -name_fixes['Marcin Kuzminski'] = "Marcin Kuźmiński " -name_fixes['nansenat16@null.tw'] = "nansenat16 " -name_fixes['Peter Vitt'] = "Peter Vitt " -name_fixes['philip.j@hostdime.com'] = "Philip Jameson " -name_fixes['Søren Løvborg'] = "Søren Løvborg " -name_fixes['Thomas De Schampheleire'] = "Thomas De Schampheleire " -name_fixes['Weblate'] = "<>" -name_fixes['xpol'] = "xpol " -name_fixes['Lars '] = "Lars Kruse " - - -# Some committer email address domains that indicate that another entity might -# hold some copyright too: -domain_extra = {} -domain_extra['unity3d.com'] = "Unity Technologies" -domain_extra['rhodecode.com'] = "RhodeCode GmbH" - -# Repository history show some old contributions that traditionally hasn't been -# listed in about.html - preserve that: -no_about = set(total_ignore) -# The following contributors were traditionally not listed in about.html and it -# seems unclear if the copyright is personal or belongs to a company. -no_about.add(('Thayne Harbaugh ', '2011')) -no_about.add(('Dies Koper ', '2012')) -no_about.add(('Erwin Kroon ', '2012')) -no_about.add(('Vincent Caron ', '2012')) -# These contributors' contributions might be too small to be copyrightable: -no_about.add(('philip.j@hostdime.com', '2012')) -no_about.add(('Stefan Engel ', '2012')) -no_about.add(('Ton Plomp ', '2013')) -# Was reworked and contributed later and shadowed by other contributions: -no_about.add(('Sean Farley ', '2013')) - -# Preserve contributors listed in about.html but not appearing in repository -# history: -other_about = [ - ("2011", "Aparkar "), - ("2010", "RhodeCode GmbH"), - ("2011", "RhodeCode GmbH"), - ("2012", "RhodeCode GmbH"), - ("2013", "RhodeCode GmbH"), -] - -# Preserve contributors listed in CONTRIBUTORS but not appearing in repository -# history: -other_contributors = [ - ("", "Andrew Kesterson "), - ("", "cejones"), - ("", "David A. Sjøen "), - ("", "James Rhodes "), - ("", "Jonas Oberschweiber "), - ("", "larikale"), - ("", "RhodeCode GmbH"), - ("", "Sebastian Kreutzberger "), - ("", "Steve Romanow "), - ("", "SteveCohen"), - ("", "Thomas "), - ("", "Thomas Waldmann "), -] - - import os import re from collections import defaultdict +import contributor_data def sortkey(x): @@ -209,7 +119,7 @@ def insert_entries( def main(): repo_entries = [ - (year, name_fixes.get(name) or name_fixes.get(name.rsplit('<', 1)[0].strip()) or name) + (year, contributor_data.name_fixes.get(name) or contributor_data.name_fixes.get(name.rsplit('<', 1)[0].strip()) or name) for year, name in (line.strip().split(' ', 1) for line in os.popen("""hg log -r '::.' -T '{date(date,"%Y")} {author}\n'""").readlines()) @@ -217,9 +127,9 @@ def main(): insert_entries( filename='kallithea/templates/about.html', - all_entries=repo_entries + other_about, - no_entries=no_about, - domain_extra=domain_extra, + all_entries=repo_entries + contributor_data.other_about, + no_entries=contributor_data.no_about, + domain_extra=contributor_data.domain_extra, split_re=r'(?:
  • Copyright © [^\n]*
  • \n)*', normalize_name=lambda name: name.split('<', 1)[0].strip(), format_f=lambda years, name: '
  • Copyright © %s, %s
  • \n' % (nice_years(years, '–', ', '), name), @@ -227,9 +137,9 @@ def main(): insert_entries( filename='CONTRIBUTORS', - all_entries=repo_entries + other_contributors, - no_entries=total_ignore, - domain_extra=domain_extra, + all_entries=repo_entries + contributor_data.other_contributors, + no_entries=contributor_data.total_ignore, + domain_extra=contributor_data.domain_extra, split_re=r'(?: [^\n]*\n)*', normalize_name=lambda name: name, format_f=lambda years, name: (' %s%s%s\n' % (name, ' ' if years else '', nice_years(years))), @@ -238,7 +148,7 @@ def main(): insert_entries( filename='kallithea/templates/base/base.html', all_entries=repo_entries, - no_entries=total_ignore, + no_entries=contributor_data.total_ignore, domain_extra={}, split_re=r'(?<=©) .* (?=by various authors)', normalize_name=lambda name: '',