[PATCH 3 of 8] scripts: extract contributor data out of update-copyrights.py

Thomas De Schampheleire patrickdepinguin at gmail.com
Mon Mar 18 22:09:28 UTC 2019


# HG changeset patch
# User Thomas De Schampheleire <thomas.de_schampheleire at nokia.com>
# Date 1552681272 -3600
#      Fri Mar 15 21:21:12 2019 +0100
# Node ID c28490c48e1d51898e9ffb3c5dac112ece7b3821
# Parent  04bfb03e74e911d719bb0917c4b486b158779262
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 <andrew at shadura.me>"
+name_fixes['aparkar'] = "Aparkar <aparkar at icloud.com>"
+name_fixes['Aras Pranckevicius'] = "Aras Pranckevičius <aras at unity3d.com>"
+name_fixes['Augosto Hermann'] = "Augusto Herrmann <augusto.herrmann at planejamento.gov.br>"
+name_fixes['"Bradley M. Kuhn" <bkuhn at ebb.org>'] = "Bradley M. Kuhn <bkuhn at sfconservancy.org>"
+name_fixes['dmitri.kuznetsov'] = "Dmitri Kuznetsov"
+name_fixes['Dmitri Kuznetsov'] = "Dmitri Kuznetsov"
+name_fixes['domruf'] = "Dominik Ruf <dominikruf at gmail.com>"
+name_fixes['Ingo von borstel'] = "Ingo von Borstel <kallithea at planetmaker.de>"
+name_fixes['Jan Heylen'] = "Jan Heylen <heyleke at gmail.com>"
+name_fixes['Jason F. Harris'] = "Jason Harris <jason at jasonfharris.com>"
+name_fixes['Jelmer Vernooij'] = "Jelmer Vernooij <jelmer at samba.org>"
+name_fixes['jfh <jason at jasonfharris.com>'] = "Jason Harris <jason at jasonfharris.com>"
+name_fixes['Leonardo Carneiro<leonardo at unity3d.com>'] = "Leonardo Carneiro <leonardo at unity3d.com>"
+name_fixes['leonardo'] = "Leonardo Carneiro <leonardo at unity3d.com>"
+name_fixes['Leonardo <leo at unity3d.com>'] = "Leonardo Carneiro <leonardo at unity3d.com>"
+name_fixes['Les Peabody'] = "Les Peabody <lpeabody at gmail.com>"
+name_fixes['"Lorenzo M. Catucci" <lorenzo at sancho.ccd.uniroma2.it>'] = "Lorenzo M. Catucci <lorenzo at sancho.ccd.uniroma2.it>"
+name_fixes['Lukasz Balcerzak'] = "Łukasz Balcerzak <lukaszbalcerzak at gmail.com>"
+name_fixes['mao <mao at lins.fju.edu.tw>'] = "Ching-Chen Mao <mao at lins.fju.edu.tw>"
+name_fixes['marcink'] = "Marcin Kuźmiński <marcin at python-works.com>"
+name_fixes['Marcin Kuzminski'] = "Marcin Kuźmiński <marcin at python-works.com>"
+name_fixes['nansenat16 at null.tw'] = "nansenat16 <nansenat16 at null.tw>"
+name_fixes['Peter Vitt'] = "Peter Vitt <petervitt at web.de>"
+name_fixes['philip.j at hostdime.com'] = "Philip Jameson <philip.j at hostdime.com>"
+name_fixes['Søren Løvborg'] = "Søren Løvborg <sorenl at unity3d.com>"
+name_fixes['Thomas De Schampheleire'] = "Thomas De Schampheleire <thomas.de_schampheleire at nokia.com>"
+name_fixes['Weblate'] = "<>"
+name_fixes['xpol'] = "xpol <xpolife at gmail.com>"
+name_fixes['Lars <devel at sumpfralle.de>'] = "Lars Kruse <devel at sumpfralle.de>"
+
+# 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 <thayne at fusionio.com>', '2011'))
+no_about.add(('Dies Koper <diesk at fast.au.fujitsu.com>', '2012'))
+no_about.add(('Erwin Kroon <e.kroon at smartmetersolutions.nl>', '2012'))
+no_about.add(('Vincent Caron <vcaron at bearstech.com>', '2012'))
+# These contributors' contributions might be too small to be copyrightable:
+no_about.add(('philip.j at hostdime.com', '2012'))
+no_about.add(('Stefan Engel <mail at engel-stefan.de>', '2012'))
+no_about.add(('Ton Plomp <tcplomp at gmail.com>', '2013'))
+# Was reworked and contributed later and shadowed by other contributions:
+no_about.add(('Sean Farley <sean.michael.farley at gmail.com>', '2013'))
+
+# Preserve contributors listed in about.html but not appearing in repository
+# history:
+other_about = [
+    ("2011", "Aparkar <aparkar at icloud.com>"),
+    ("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 <andrew at aklabs.net>"),
+    ("", "cejones"),
+    ("", "David A. Sjøen <david.sjoen at westcon.no>"),
+    ("", "James Rhodes <jrhodes at redpointsoftware.com.au>"),
+    ("", "Jonas Oberschweiber <jonas.oberschweiber at d-velop.de>"),
+    ("", "larikale"),
+    ("", "RhodeCode GmbH"),
+    ("", "Sebastian Kreutzberger <sebastian at rhodecode.com>"),
+    ("", "Steve Romanow <slestak989 at gmail.com>"),
+    ("", "SteveCohen"),
+    ("", "Thomas <thomas at rhodecode.com>"),
+    ("", "Thomas Waldmann <tw-public at gmx.de>"),
+]
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 <andrew at shadura.me>"
-name_fixes['aparkar'] = "Aparkar <aparkar at icloud.com>"
-name_fixes['Aras Pranckevicius'] = "Aras Pranckevičius <aras at unity3d.com>"
-name_fixes['Augosto Hermann'] = "Augusto Herrmann <augusto.herrmann at planejamento.gov.br>"
-name_fixes['"Bradley M. Kuhn" <bkuhn at ebb.org>'] = "Bradley M. Kuhn <bkuhn at sfconservancy.org>"
-name_fixes['dmitri.kuznetsov'] = "Dmitri Kuznetsov"
-name_fixes['Dmitri Kuznetsov'] = "Dmitri Kuznetsov"
-name_fixes['domruf'] = "Dominik Ruf <dominikruf at gmail.com>"
-name_fixes['Ingo von borstel'] = "Ingo von Borstel <kallithea at planetmaker.de>"
-name_fixes['Jan Heylen'] = "Jan Heylen <heyleke at gmail.com>"
-name_fixes['Jason F. Harris'] = "Jason Harris <jason at jasonfharris.com>"
-name_fixes['Jelmer Vernooij'] = "Jelmer Vernooij <jelmer at samba.org>"
-name_fixes['jfh <jason at jasonfharris.com>'] = "Jason Harris <jason at jasonfharris.com>"
-name_fixes['Leonardo Carneiro<leonardo at unity3d.com>'] = "Leonardo Carneiro <leonardo at unity3d.com>"
-name_fixes['leonardo'] = "Leonardo Carneiro <leonardo at unity3d.com>"
-name_fixes['Leonardo <leo at unity3d.com>'] = "Leonardo Carneiro <leonardo at unity3d.com>"
-name_fixes['Les Peabody'] = "Les Peabody <lpeabody at gmail.com>"
-name_fixes['"Lorenzo M. Catucci" <lorenzo at sancho.ccd.uniroma2.it>'] = "Lorenzo M. Catucci <lorenzo at sancho.ccd.uniroma2.it>"
-name_fixes['Lukasz Balcerzak'] = "Łukasz Balcerzak <lukaszbalcerzak at gmail.com>"
-name_fixes['mao <mao at lins.fju.edu.tw>'] = "Ching-Chen Mao <mao at lins.fju.edu.tw>"
-name_fixes['marcink'] = "Marcin Kuźmiński <marcin at python-works.com>"
-name_fixes['Marcin Kuzminski'] = "Marcin Kuźmiński <marcin at python-works.com>"
-name_fixes['nansenat16 at null.tw'] = "nansenat16 <nansenat16 at null.tw>"
-name_fixes['Peter Vitt'] = "Peter Vitt <petervitt at web.de>"
-name_fixes['philip.j at hostdime.com'] = "Philip Jameson <philip.j at hostdime.com>"
-name_fixes['Søren Løvborg'] = "Søren Løvborg <sorenl at unity3d.com>"
-name_fixes['Thomas De Schampheleire'] = "Thomas De Schampheleire <thomas.de_schampheleire at nokia.com>"
-name_fixes['Weblate'] = "<>"
-name_fixes['xpol'] = "xpol <xpolife at gmail.com>"
-name_fixes['Lars <devel at sumpfralle.de>'] = "Lars Kruse <devel at sumpfralle.de>"
-
-
-# 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 <thayne at fusionio.com>', '2011'))
-no_about.add(('Dies Koper <diesk at fast.au.fujitsu.com>', '2012'))
-no_about.add(('Erwin Kroon <e.kroon at smartmetersolutions.nl>', '2012'))
-no_about.add(('Vincent Caron <vcaron at bearstech.com>', '2012'))
-# These contributors' contributions might be too small to be copyrightable:
-no_about.add(('philip.j at hostdime.com', '2012'))
-no_about.add(('Stefan Engel <mail at engel-stefan.de>', '2012'))
-no_about.add(('Ton Plomp <tcplomp at gmail.com>', '2013'))
-# Was reworked and contributed later and shadowed by other contributions:
-no_about.add(('Sean Farley <sean.michael.farley at gmail.com>', '2013'))
-
-# Preserve contributors listed in about.html but not appearing in repository
-# history:
-other_about = [
-    ("2011", "Aparkar <aparkar at icloud.com>"),
-    ("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 <andrew at aklabs.net>"),
-    ("", "cejones"),
-    ("", "David A. Sjøen <david.sjoen at westcon.no>"),
-    ("", "James Rhodes <jrhodes at redpointsoftware.com.au>"),
-    ("", "Jonas Oberschweiber <jonas.oberschweiber at d-velop.de>"),
-    ("", "larikale"),
-    ("", "RhodeCode GmbH"),
-    ("", "Sebastian Kreutzberger <sebastian at rhodecode.com>"),
-    ("", "Steve Romanow <slestak989 at gmail.com>"),
-    ("", "SteveCohen"),
-    ("", "Thomas <thomas at rhodecode.com>"),
-    ("", "Thomas Waldmann <tw-public at gmx.de>"),
-]
-
-
 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'(?:  <li>Copyright © [^\n]*</li>\n)*',
         normalize_name=lambda name: name.split('<', 1)[0].strip(),
         format_f=lambda years, name: '  <li>Copyright © %s, %s</li>\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: '',


More information about the kallithea-general mailing list