#!/usr/bin/env python3 # SPDX-FileCopyrightText: 2023 Blender Authors # # SPDX-License-Identifier: GPL-2.0-or-later """ The intent of this map is to be able to a single canonical author for every ``Name `` combination. This data is used for: - Extracting a list of authors to create the ``AUTHORS`` file (in the projects root), see ``./git_data_canonical_authors.py``. - Generating the credits page: ``https://www.blender.org/about/credits/`` see ``./credits_git_gen.py``. """ __all__ = ( "canonical_author_map", ) def canonical_author_map() -> dict[str, str]: """ Return a map of authors to their canonical author & email. """ # NOTE: # - Keys must be ordered, # - Values must also be ordered. author_map_valid_to_invalid = { "20kdc ": ( "20kdc <20kdc@noreply.localhost>", ), "Aaron Carlisle ": ( "Aaron ", "Aaron ", "Aaron Carlisle ", "Aaron Carlisle ", "Aaron Carlisle ", "Your Name ", ), "Abinjith-Tk ": ( "AbinjithTK ", ), "Adarsh TS ": ( "Adarsh TS ", "blend_adarsh ", ), "Alan Troth ": ( "Alan ", ), "Alaska ": ( "Alaska ", "Alaska ", "Alaska ", ), "Alberto Pilotto ": ( "Alberto Pilotto ", "Alberto12345678999 ", ), "Aleksandr Zinovev ": ( "raa ", ), "Alex Fuller ": ( "Alex ", "Alex Fuller <>", "Alex Fuller ", "Alex Fuller ", ), "Alexander Gavrilov ": ( "Alexander Gavrilov ", ), "Alexander Romanov ": ( "Romanov Alexander ", ), "Alexandr Kuznetsov ": ( "Alexandr Kuznetsov ", ), "Alexandre-Cardaillac ": ( "Alexandre Cardaillac ", ), "Ale\u0161 Jelov\u010dan ": ( "Ale\u0161 Jelov\u010dan <33534+frogstomp@noreply.localhost>", "Ale\u0161 Jelov\u010dan ", "frogstomp ", "frogstomp ", ), "Almaz Shinbay ": ( "Almaz-Shinbay ", ), "Am\u00e9lie Fondevilla ": ( "Amelie ", "Amelie Fondevilla ", "Amelie Fondevilla ", "Amelie Fondevilla ", "Amelie Fondevilla ", "Am\u00e9lie Fondevilla ", ), "Andrej ": ( "Andrej730 ", ), "Andrew Oates ": ( "Andrew Oates ", "Andrew Oates ", ), "Andrii Symkin ": ( "Andrii ", "pembem22 ", ), "Andy Beers ": ( "Andy Beers ", ), "Angus Stanton ": ( "Angus Stanton ", ), "Ankit Meel ": ( "Ankit ", "Ankit Meel ", "Ankit Meel ", ), "Anthony Edlin ": ( "Anthony Edlin ", ), "Anthony Roberts ": ( "Anthony ", ), "Anton Stuk ": ( "Anton Stuk ", "SiGMan ", ), "Antonio Vazquez ": ( "Antonio Vazquez ", "Antonio Vazquez ", "Antonio Vazquez ", "Antonioya ", ), "Antony Riakiotakis ": ( "Antony Ryakiotakis ", ), "Aras Pranckevicius ": ( "Aras Pranckevicius ", "Aras Pranckevicius ", ), "Aryan Verma ": ( "Aryan Verma ", ), "Arye Ramaty ": ( "Arye Ramaty ", "Arye Ramaty ", ), "Attila Afra ": ( "Attila \u00c1fra ", ), "Bai Gave <3171394913@qq.com>": ( "BaiGave <107305554+BaiGave@users.noreply.github.com>", "BaiGave-1 <3171394913@qq.com>", ), "Bastien Montagne ": ( "Bastien Montagne (@mont29) <>", "Bastien Montagne ", "Bastien Montagne ", "Bastien Montagne ", "Bastien Montagne ", "bastien ", "mont29 ", ), "Beckham, Verena ": ( "vbeckham ", ), "Ben-7 ": ( "Ben-7 ", ), "Benjamin Beilharz ": ( "Ben Beilharz ", ), "Bill Spitzak ": ( "Bill Spitzak ", "Bill-Spitzak ", ), "Blastframe ": ( "blastframe ", ), "Bogdan Nagirniak ": ( "Bogdan Nagirniak ", ), "Brady Johnston ": ( "Brady Johnston <36021261+BradyAJohnston@users.noreply.github.com>", "Brady Johnston <>", "Brady Johnston ", ), "Brecht Van Lommel ": ( "Brecht Van Lommel ", "Brecht Van Lommel ", "Brecht Van Lommel ", "Brecht Van Lommel ", "Brecht Van Lommel ", "Brecht Van L\u00f6mmel ", "Brecht van Lommel ", "recht Van Lommel ", ), "Brendon Murphy ": ( "meta-androcto ", ), "Brian Savery ": ( "Brian Savery (AMD) ", "Brian Savery ", "bsavery ", ), "Campbell Barton ": ( "Campbell Barton ", "Campbell Barton ", "Campbell Barton ", ), "Carlo Andreacchio ": ( "Carlo Andreacchio ", ), "Cartesian Caramel ": ( "Cartesian Caramel ", ), "Casey Bianco-Davis ": ( "casey bianco-davis ", "casey-bianco-davis ", ), "Charles Fl\u00e8che ": ( "Charles Fl\u00e8che ", "Charles Fl\u00e8che ", ), "Charles Wardlaw ": ( "Charles Wardlaw (@CharlesWardlaw) <>", "Charles Wardlaw ", "Charles Wardlaw ", ), "Charlie Jolly ": ( "Charlie Jolly ", "Charlie Jolly ", "charlie ", ), "Chris Clyne ": ( "Chris Clyne ", ), "Christian Brinkmann ": ( "christian brinkmann <>", ), "Christian Rauch ": ( "Christian Rauch ", ), "Christoph Lendenfeld ": ( "Christoph Lendenfeld ", "Christoph Lendenfeld ", "Christoph Lendenfeld ", ), "Christophe Hery ": ( "Christophe Hery ", ), "Cl\u00e9ment Foucault ": ( "Clment Foucault ", "Clment Foucault ", "Cl\u00c3\u00a9ment Foucault ", "Cl\u00e9ment ", "Cl\u00e9ment FOUCAULT ", "Cl\u00e9ment Foucault <8117+fclem@noreply.localhost>", "Cl\u00e9ment Foucault <>", "Cl\u00e9ment Foucault ", "Cl\u00e9ment Foucault ", "fclem ", ), "Colin Basnett ": ( "Colin Basnett <5035660+cmbasnett@users.noreply.github.com>", "Colin Basnett ", "Colin Basnett ", "Colin Basnett ", ), "Colin Marmond ": ( "Colin ", "Colin Marmond ", "Colin Marmond ", "Colin Marmont ", ), "Criss-Ivana ": ( "Criss-Ivana ", ), "Dalai Felinto ": ( "Dalai Felinto ", "Dalai Felinto ", "Dalai Felinto ", ), "Damien Picard ": ( "Damien Picard <>", "Damien Picard ", "Damien Picard ", "Damien Picard ", ), "Dan-Gry ": ( "Dangry98 ", ), "Daniel Salazar ": ( "Daniel Salazar ", "Daniel Salazar ", "ZanQdo ", "zanqdo ", ), "Dave Pagurek ": ( "Dave Pagurek ", ), "David Friedli ": ( "David ", ), "Dawid Kurek ": ( "Dawid-Kurek ", ), "Demeter Dzadik ": ( "Demeter Dzadik ", "Demeter Dzadik ", "demeterdzadik@gmail.com ", ), "Diego Borghetti ": ( "Diego Hernan Borghetti ", ), "Dilith Jayakody ": ( "dilithjay ", ), "Dmitry Dygalo ": ( "Dmitry Dygalo <>", ), "Dontsov Valentin <@blend4web.com>": ( "Dotsnov Valentin ", ), "Eitan Traurig ": ( "Eitan ", "EitanSomething ", "EitanSomething ", ), "Ejner Fergo ": ( "Ejner Fergo ", ), "Emmett Lalish ": ( "Emmett-Lalish ", ), "Eoin Mcloughlin ": ( "Eoin Mcloughlin ", ), "Eric Cosky ": ( "Eric Cosky ", ), "Erik Abrahamsson ": ( "Eric Abrahamsson ", "Erick Abrahammson ", "Erik ", "Erik Abrahamsson ", "Erik Abrahamsson ", ), "Ethan Hall ": ( "Ethan-Hall ", ), "Fabian Schempp ": ( "Fabian Schempp ", ), "Fabricio Luis ": ( "Fabr\u00edcio Luis ", ), "Falk David ": ( "Falk David ", "Falk David ", "Falk David ", "filedescriptor ", ), "Francesco Siddi ": ( "Francesco Siddi ", "Francesco Siddi ", ), "Fynn Grotehans ": ( "Fynn Grotehans <68659993+Fynn-G@users.noreply.github.com>", "Fynn Grotehans ", ), "F\u00e9lix ": ( "Flix ", ), "Gabriel Lee ": ( "Gabriel Lee ", ), "Gaia Clary ": ( "Gaia Clary ", "gaiaclary ", ), "Gaktan ": ( "Gaktan ", ), "Geedoubleu ": ( "Geedoubleu ", ), "George Mavroeidis ": ( "George Mavroeidis ", ), "Georgiy Markelov ": ( "georgiy.m.markelov@gmail.com ", ), "Gerard Taulats ": ( "Gerard Taulats ", ), "Germain Le Chapelain ": ( "Germain-Le-Chapelain ", ), "Germano Cavalcante ": ( "Germano ", "Germano Cavalcante ", "Germano Cavalcante ", "Germano Cavalcante ", "Germano Cavalcantemano-wii ", "mano-wii ", "mano-wii ", ), "Gianluca Giampuzzo ": ( "Gianluca Giampuzzo <>", ), "Gilberto Rodrigues ": ( "Gilberto Rodrigues ", "Gilberto.R ", ), "Gon Solo ": ( "Gon Solo ", ), "Guillermo S. Romero ": ( "gsr b3d ", ), "Guillermo Venegas ": ( "Guillermo ", "guishe ", ), "Habib Gahbiche ": ( "Habib Gahbiche ", "Habib Gahbiche ", "Habib Gahbiche ", ), "Hallam Roberts ": ( "Hallam Roberts ", ), "Hans Goudey ": ( "Hans Goudey ", "Hans Goudey ", "Hans Goudey ", ), "Harley Acheson ": ( "Harley Acheson ", "Harley Acheson ", ), "Henrik Dick ": ( "Henrik Dick (weasel) <>", "Henrik Dick ", ), "Henry Jiang ": ( "Henry Jiang ", ), "Himanshi Kalra ": ( "Himanshi Kalra ", ), "Howard Trickey ": ( "Howard Trickey <5005+howardt@noreply.localhost>", "Howard Trickey ", "Howard Trickey ", "howardt ", ), "Hristo Gueorguiev ": ( "Hristo Gueorguiev <>", ), "IRIE Shinsuke ": ( "Irie Shinsuke ", ), "Ido Shahar ": ( "Ido-Shahar ", ), "Iliya Katueshenock ": ( "Iliay Katueshenock ", "Iliya Katueshenock ", "Iliya Katueshenock ", "Iliya Katushenock ", "Iliya Katushenock ", "MOD ", "illua1 ", "\u0438\u043b\u044c\u044f _ ", ), "In\u00eas Almeida ": ( "Ines Almeida ", "brita ", ), "Ish Bosamiya ": ( "Ish Bosamiya ", "Ish Bosamiya ", ), "Ivan Kosarev ": ( "kosarev ", ), "Iyad Ahmed ": ( "Iyad Ahmed ", ), "Jacques Lucke ": ( "Jacques Lucke <>", "Jacques Lucke ", "Jacques Lucke ", ), "Jan-Hendrik M\u00fcller ": ( "Jan-Hendrik-Muller ", ), "Jason Fielder ": ( "Jason Fielder ", ), "Jens Ole Wund ": ( "bjornmose ", ), "Jens Verwiebe ": ( "Jens ", "Jens Verwiebe ", "jensverwiebe ", ), "Jeroen Bakker ": ( "Jeroen Bakker <88891617+jeroen-blender@users.noreply.github.com>", "Jeroen Bakker ", "Jeroen Bakker ", "jeroen@blender.org ", "jeroen@blender.org ", ), "Jerry Wei <79512937+JerryWeii-27@users.noreply.github.com>": ( "Jerry Wei ", ), "Jesse Yurkovich ": ( "Jesse Y ", "Jesse Yurkovich ", "Jesse Yurkovich ", ), "Johan Walles ": ( "Johan Walles ", ), "Johannes J ": ( "Johannes J ", ), "John Kinzel ": ( "John Kinzel ", ), "John Kiril Swenson ": ( "John Kiril Swenson ", "John Kiril Swenson ", "John Swenson ", ), "Johnny Matthews ": ( "Johnny Matthews (guitargeek) ", "Johnny Matthews ", "Johnny Matthews ", "guitargeek ", ), "Jonas Holzman ": ( "Jonas Holzman ", ), "Jonathan Lampel ": ( "jlampel ", ), "Jorijn de Graaf ": ( "Jorijn de Graaf ", "bonj ", ), "Joseph Eagar ": ( "Joe Eagar ", "Joseph Eagar ", "Joseph Eagar ", ), "Josh Belanich ": ( "Josh Belanich ", ), "Josh Maros ": ( "Josh Maros <60271685+joshua-maros@users.noreply.github.com>", "joshua-maros <60271685+joshua-maros@users.noreply.github.com>", ), "Julian Eisel ": ( "Julian Eisel <7320+julianeisel@noreply.localhost>", "Julian Eisel <>", "Julian Eisel ", "Julian Eisel ", "Julian Eisel ", "Julian Eisel ", "Julian Eisel ", "Julian Eisel ", "Severin ", "Severin ", "julianeisel ", ), "Julien Kaspar ": ( "Julien Kaspar ", ), "Jun Mizutani ": ( "Jun Mizutani ", "Jun Mizutani ", ), "J\u00f6rg M\u00fcller ": ( "Joerg Mueller ", ), "J\u00fcrgen Herrmann ": ( "Juergen Herrmann ", ), "Kamil Galik ": ( "kgalik ", ), "Kaspian Jakobsson ": ( "\x96kaspian.jakobssongmail.com ", ), "Kazashi Yoshioka ": ( "AgAmemnno ", "Kazashi Yoshioka ", "vnapdv ", ), "Kevin C. Burke ": ( "Kevin C. Burke ", ), "K\u00e9vin Dietrich ": ( "Kevin Dietrich ", "K\u00e9vin Dietrich ", "K\u00e9vin Dietrich ", ), "Laurynas Duburas ": ( "Laurynas Duburas ", "laurynas ", ), "Leon Schittek ": ( "Leon Leno ", "Leon Schittek ", "Leon Schittek ", ), "Lictex Steaven ": ( "lictex_ ", ), "Lleu Yang ": ( "megakite ", ), "Lorenzo-Carpaneto ": ( "lolloz98 ", ), "Lo\xefc 'Lauloque' Dautry ": ( "Lo\xefc DAUTRY ", ), "Luca Rood ": ( "Luca Rood ", ), "Lucas Boutrot ": ( "Lucas Boutrot ", ), "Lucas Tadeu Teixeira ": ( "Lucas Tadeu ", ), "Lukas Stockner ": ( "Lukas Stockner <>", "Lukas Stockner ", "Lukas Stockner ", ), "Lukas T\u00f6nne ": ( "Lukas Toenne ", "Lukas T\u00f6nne <>", "Lukas T\u00f6nne ", "Lukas T\u00f6nne ", ), "Luya Tshimbalanga ": ( "Luya Tshimbalanga ", ), "L\u00e9o Depoix ": ( "PiloeGAO ", ), "Mai Lavelle ": ( "Mai Lavelle ", ), "Mal Duffin ": ( "Mal Duffin ", ), "Mangal Kushwah ": ( "Mangal Kushwah ", ), "Manuel Castilla ": ( "Manuel Castilla ", ), "Marc Chehab ": ( "Marc Ch\u00e9hab ", "Marc Ch\u00e9hab ", ), "Marc Hamamji ": ( "MarcHamamji ", ), "Marcos Perez ": ( "Marcos Perez ", ), "Mark Stead ": ( "Mark Stead ", ), "Martijn Berger ": ( "Martijn Berger ", "Martijn Berger ", "Martijn Berger ", ), "Martijn Versteegh ": ( "Martijn Versteegh <23055+baardaap@noreply.localhost>", "Martijn Versteegh ", "Martijn Versteegh ", "Martijn Versteegh ", ), "Martin Vignali ": ( "Martin-Vignali <33432858+mvji@users.noreply.github.com>", "Martin-Vignali ", "mvji <33432858+mvji@users.noreply.github.com>", ), "Mateusz Grzeli\u0144ski ": ( "Mateusz Grzeli\u0144ski ", ), "Matias Mendiola ": ( "Matias Mendiola ", ), "Matt Heimlich ": ( "Matt Heimlich ", ), "Matteo F. Vescovi ": ( "Matteo F. Vescovi ", ), "Matthew-Kabin ": ( "Kabinet0 ", ), "Matthieu Carteron ": ( "Matthieu Carteron ", ), "Mattias Fredriksson ": ( "Mattias Fredriksson ", "MattiasF ", "Osares ", ), "Max Schlecht ": ( "Max Schlecht ", ), "Maxime Casas ": ( "Maxime Casas ", ), "Michael Jones ": ( "Michael Jones (Apple) ", "Michael Jones ", ), "Michael Kowalski ": ( "Michael Kowalski ", "Michael Kowalski ", ), "Michal Krupa ": ( "Michal Krupa ", "michal.krupa ", ), "Miguel Porces ": ( "Miguel Porces ", ), "Miguel Pozo ": ( "Miguel Pozo <>", "Miguel Pozo ", "Miguel Pozo ", "Miguel Pozo ", ), "Mikhail Matrosov ": ( "Mikhail ", "Mikhail Matrosov ", ), "Mohamed Gad ": ( "Mohamed Hassan ", ), "Monique Dewanchand ": ( "Monique Dewanchand ", "Monique Dewanchand ", ), "Nate Rupsis ": ( "Nate Rupsis ", "Nate Rupsis ", "Nate Rupsis ", "Nate Rupsis ", ), "Nathan Craddock ": ( "Nathan Craddock ", ), "Nathan Letwory ": ( "Nathan Letwory ", "Nathan Letwory ", "Nathan Letwory ", ), "Nathan Vegdahl ": ( "Nathan Vegdahl ", ), "Nazir Galimov ": ( "Nazir ", "Nazir Galimov ", ), "Nicholas Bishop ": ( "Nicholas Bishop ", ), "Nicholas Rishel ": ( "Nicholas Rishel ", ), "Nick Milios ": ( "milios ", ), "Nikhil Shringarpurey ": ( "Nikhil Shringarpurey ", ), "Nikita Sirgienko ": ( "Nikita Sirgienko ", "Nikita Sirgienko ", ), "Nithurshen Karthikeyan ": ( "Nithurshen ", "Nithurshen Karthikeyan ", ), "Olivier Maury ": ( "Olivier Maury ", ), "Omar Emara ": ( "Omar Emara ", "Omar Emara ", "OmarSquircleArt ", "OmarSquircleArt ", ), "Oscar Blumberg ": ( "carnaval ", ), "Pablo Dobarro ": ( "Pablo Dobarro ", ), "Pablo Vazquez ": ( "Pablo Vazquez ", "Pablo Vazquez ", "Pablo Vazquez ", "Pablo Vazquez ", ), "Padraig O Cinneide ": ( "Padraig-O-Cinneide ", ), "Paolo Amadini ": ( "Paolo Amadini ", ), "Pasang Bomjan ": ( "IREXTIA ", "IREXTIA ", "irex124 ", ), "Pascal Schoen ": ( "Pascal Sch\u00f6n ", ), "Patrick Busch ": ( "Patrick Busch ", ), "Patrick Huang ": ( "Patrick Huang ", ), "Patrick Mours ": ( "Patrick Mours ", ), "Paul Golter ": ( "Paul Golter ", ), "Pavel \u0160eve\u010dek ": ( "Pavel \u0160eve\u010dek ", "pavel ", ), "Pedro A ": ( "Pedro A ", ), "Philipp Oeser ": ( "Philipp Oeser <>", "Philipp Oeser ", "Philipp Oeser ", "Philipp Oeser ", "Philipp Oeser ", "Philipp Oeser ", ), "Phoenix Katsch ": ( "Phoenix Katsch ", ), "Pierce Brooks ": ( "Pierce Brooks ", ), "Pierre Pontier ": ( "Pierre Pontier ", ), "Pratik Borhade ": ( "Prakhar-Singh-Chouhan ", "Pratik Borhade ", "Pratik Borhade ", ), "Quentin ": ( "Eqkoss / T1NT1N ", "Eqkoss ", ), "Rajesh Malviya ": ( "rajveermalviya ", ), "Ramon Klauck ": ( "Ram\xf3n Klauck ", "ernst-ellert ", "lucid3dr ", ), "Raul Fernandez ": ( "Raul Fernandez Hernandez ", ), "Ray Molenkamp ": ( "Lazydodo ", "Ray Molenkamp ", "Ray molenkamp ", "Ray molenkamp ", "lazydodo ", ), "Red Mser ": ( "RedMser ", "RedMser ", "RedMser ", "RedMser ", ), "Richard Antalik ": ( "Richard Antalik <13648+iss@noreply.localhost>", "Richard Antalik ", "Richard Antalik ", ), "Rob-Blair ": ( "Rob Blair ", ), "Robert Guetzkow ": ( "Robert Guetzkow ", ), "Robin Hohnsbeen ": ( "Robin Hohnsbeen ", ), "Sahar A. Kashi ": ( "Sahar A. Kashi ", "Sahar A. Kashi ", "Sahar Kashi ", "salipour ", "salipourto ", ), "Scurest ": ( "Scurest ", "scurest ", ), "Sean ": ( "sean-murray ", ), "Sean Kim ": ( "Sean Kim ", ), "Sean Stirling ": ( "Sean Stirling ", ), "Sebastian Herholz ": ( "Sebastian ", "Sebastian Herholz ", "Sebastian Herholz ", "Sebastian Herholz ", "Sebastian Herholz ", "Sebastian Herhoz ", "sherholz ", ), "Sebastian Koenig ": ( "Sebastian Koenig ", "Sebastian Koenig ", ), "Sebastian Parborg ": ( "Sebastian Parborg ", "Sebastian Parborg ", "Sebastian Parborg ", ), "Sergey Sharybin ": ( "Sergey ", "Sergey Sharybin ", "Sergey Sharybin ", "Sergey Sharybin ", "blender ", ), "Shane Ambler ": ( "Shane Ambler ", ), "Shashank Shekhar ": ( "Shashank Shekhar ", "cmdr2 ", ), "Siddhartha Jejurkar ": ( "Siddhartha Jejurkar ", ), "Sietse Brouwer ": ( "Sietse Brouwer ", ), "Simon G ": ( "Simon ", ), "Sonny Campbell ": ( "DESKTOP-ON14TH5\\Sonny Campbell ", "Sonny Campbell (@SonnyCampbell_Unity) <>", "Sonny Campbell ", "Sonny Campbell ", ), "Stefan Werner ": ( "Stefan Werner ", "Stefan Werner ", "Stefan Werner ", "Stefan Werner ", "Stefan Werner ", "Werner, Stefan ", ), "Stephan Seitz ": ( "Stephan ", ), "Sun Kim ": ( "Sun Kim ", "persun ", ), "Sybren A. St\u00fcvel ": ( "Sybren A. St\xC3\x83\xC2\xBCvel ", "Sybren A. St\u00fcvel ", "Sybren A. St\u00fcvel ", ), "T0MIS0N ": ( "T0MIS0N <50230774+T0MIS0N@users.noreply.github.com>", ), "Tariq-Sulley ": ( "tariqsulley ", ), "Tenkai Raiko ": ( "Raiko ", ), "Thomas Dinges ": ( "Thomas Dinges ", "Thomas Dinges ", "Thomas Dinges ", "blender ", ), "Thomas Lachmann ": ( "Thomas Lachmann ", ), "Thomas Szepe ": ( "HG1 ", ), "Tibo Stans ": ( "Stanzerelli <192132910+stanzerelli@users.noreply.github.com>", "Tibo Stans <192132910+stanzerelli@users.noreply.github.com>", "Tibo Stans ", ), "Tobias Kummer | Overmind Studios ": ( "Tobias Kummer | Overmind Studios ", "tobi ", "tobiaskummer ", ), "Tom Edwards ": ( "Tom Edwards ", ), "Torsten Ke\u00dfler ": ( "Torsten Ke\u00dfler ", ), "Treata Norouzi ": ( "Treata Norouzi ", "Treata11 ", ), "Tristan Porteries ": ( "Porteries Tristan ", ), "Troy Sobotka ": ( "Troy Sobotka ", ), "Trung Ph\u1ea1m <0znightlord0@gmail.com>": ( "Trung <0znightlord0@gmail.com>", ), "Tuomo Keskitalo ": ( "Tuomo Keskitalo ", ), "Ulysse Martin ": ( "Ulysse Martin ", "youle31 ", ), "Urko Mauduit ": ( "Urko ", ), "Vasyl Pidhirskyi ": ( "Vasyl-Pidhirskyi ", ), "Vitalijs Komasilovs ": ( "Vitaljok <11552222+Vitaljok@users.noreply.github.com>", ), "Vitor Boschi ": ( "Vitor Boschi ", "Vitor Boschi da Silva " ), "Vuk Garda\u0161evi\u0107 ": ( "Vuk Garda\xC5\u00a1evi\xC4\x87 ", ), "Wannes Malfait ": ( "Wannes Malfait ", ), "Wayde Moss ": ( "Wayde Moss ", ), "Weikang Qiu ": ( "Boltzmachine ", ), "Weizhen Huang ": ( "RiverIntheSky ", "RiverIntheSky ", "Weizhen Huang ", "Weizhen Huang ", "weizhen ", ), "Welp ": ( "Jake ", ), "William Leeson ": ( "William Leeson ", "William Leeson ", ), "William Reynish ": ( "William Reynish ", "William Reynish ", "William Reynish ", ), "Willian Padovani Germano ": ( "ianwill ", ), "XDzZyq ": ( "Zyq-XDz ", ), "Xavier Hallade ": ( "Xavier Hallade ", "Xavier Hallade ", ), "Yann Lanthony ": ( "@yann-lty <>", ), "Yiming Wu ": ( "ChengduLittleA ", "YimingWu ", "YimingWu ", "YimingWu ", "YimingWu ", ), "Zhou Qiankang ": ( "wszqkzqk ", ), "Zijun Zhou ": ( "EaryChow ", "Zijun Zhou ", ), "bartus ": ( "bartus ", ), "dupoxy ": ( "dupoxy ", "dupoxy ", ), "golden dragon ": ( "golden-dragon ", ), "howetuft ": ( "howetuft ", ), "jon denning ": ( "Jon Denning ", ), "luz paz ": ( "luz paz <>", "luz paz ", "luzpaz ", "luzpaz-2 ", ), "nBurn ": ( "nBurn ", ), "nutti ": ( "nutti ", ), "ok_what ": ( "ok what ", ), "quackarooni ": ( "Quackers ", ), "syzygial ": ( "syzygial ", ), "unerr ": ( "unerr ", ), "\u4f73\u96ef \u7a0b ": ( "Chiaki_meow ", "\u4f73\u96ef \u7a0b ", ), } # Some validation, ensure ordered, consistent to help with maintenance. keys = list(author_map_valid_to_invalid.keys()) for i, (key, key_ordered) in enumerate(zip(keys, sorted(keys))): if key != key_ordered: raise RuntimeError(( "Names unordered: {:d}\n" " {:s} ~ (found)\n" " {:s} ~ (expected)\n" "" ).format(i, key, key_ordered)) for i, (key, value) in enumerate(author_map_valid_to_invalid.items()): if value != tuple(sorted(value)): raise RuntimeError("Name values: {:s} at index {:d} is not ordered".format(key, i)) if len(set(value)) != len(value): raise RuntimeError("Name values: {:s} at index {:d} contains duplicate values".format(key, i)) if key in value: raise RuntimeError("Name values: {:s} at index {:d} contains the key in the values body".format(key, i)) table = {} for key, values in author_map_valid_to_invalid.items(): for value_old in values: table[value_old] = key return table