1 # Copyright (c) 2009, Google Inc. All rights reserved. 2 # 3 # Redistribution and use in source and binary forms, with or without 4 # modification, are permitted provided that the following conditions are 5 # met: 6 # 7 # * Redistributions of source code must retain the above copyright 8 # notice, this list of conditions and the following disclaimer. 9 # * Redistributions in binary form must reproduce the above 10 # copyright notice, this list of conditions and the following disclaimer 11 # in the documentation and/or other materials provided with the 12 # distribution. 13 # * Neither the name of Google Inc. nor the names of its 14 # contributors may be used to endorse or promote products derived from 15 # this software without specific prior written permission. 16 # 17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 19 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 20 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 21 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 # 29 # WebKit's Python module for committer and reviewer validation 30 31 32 class Committer: 33 34 def __init__(self, name, email_or_emails, irc_nickname=None): 35 self.full_name = name 36 if isinstance(email_or_emails, str): 37 self.emails = [email_or_emails] 38 else: 39 self.emails = email_or_emails 40 self.irc_nickname = irc_nickname 41 self.can_review = False 42 43 def bugzilla_email(self): 44 # FIXME: We're assuming the first email is a valid bugzilla email, 45 # which might not be right. 46 return self.emails[0] 47 48 def __str__(self): 49 return '"%s" <%s>' % (self.full_name, self.emails[0]) 50 51 52 class Reviewer(Committer): 53 54 def __init__(self, name, email_or_emails, irc_nickname=None): 55 Committer.__init__(self, name, email_or_emails, irc_nickname) 56 self.can_review = True 57 58 59 # This is intended as a canonical, machine-readable list of all non-reviewer 60 # committers for WebKit. If your name is missing here and you are a committer, 61 # please add it. No review needed. All reviewers are committers, so this list 62 # is only of committers who are not reviewers. 63 64 65 committers_unable_to_review = [ 66 Committer("Aaron Boodman", "aa (at] chromium.org", "aboodman"), 67 Committer("Abhishek Arya", "inferno (at] chromium.org", "inferno-sec"), 68 Committer("Adam Langley", "agl (at] chromium.org", "agl"), 69 Committer("Adrienne Walker", ["enne (at] google.com", "enne (at] chromium.org"], "enne"), 70 Committer("Albert J. Wong", "ajwong (at] chromium.org"), 71 Committer("Alejandro G. Castro", ["alex (at] igalia.com", "alex (at] webkit.org"]), 72 Committer("Alexander Kellett", ["lypanov (at] mac.com", "a-lists001 (at] lypanov.net", "lypanov (at] kde.org"], "lypanov"), 73 Committer("Alexander Pavlov", "apavlov (at] chromium.org", "apavlov"), 74 Committer("Alexis Menard", ["alexis.menard (at] openbossa.org", "menard (at] kde.org"], "darktears"), 75 Committer("Andre Boule", "aboule (at] apple.com"), 76 Committer("Andrei Popescu", "andreip (at] google.com", "andreip"), 77 Committer("Andrew Wellington", ["andrew (at] webkit.org", "proton (at] wiretapped.net"], "proton"), 78 Committer("Andrew Scherkus", "scherkus (at] chromium.org", "scherkus"), 79 Committer("Andrey Kosyakov", "caseq (at] chromium.org", "caseq"), 80 Committer("Andras Becsi", ["abecsi (at] webkit.org", "abecsi (at] inf.u-szeged.hu"], "bbandix"), 81 Committer("Andy Estes", "aestes (at] apple.com", "estes"), 82 Committer("Anthony Ricaud", "rik (at] webkit.org", "rik"), 83 Committer("Anton Muhin", "antonm (at] chromium.org", "antonm"), 84 Committer("Balazs Kelemen", "kbalazs (at] webkit.org", "kbalazs"), 85 Committer("Ben Murdoch", "benm (at] google.com", "benm"), 86 Committer("Benjamin C Meyer", ["ben (at] meyerhome.net", "ben (at] webkit.org"], "icefox"), 87 Committer("Benjamin Kalman", ["kalman (at] chromium.org", "kalman (at] google.com"], "kalman"), 88 Committer("Benjamin Otte", ["otte (at] gnome.org", "otte (at] webkit.org"], "otte"), 89 Committer("Brent Fulgham", "bfulgham (at] webkit.org", "bfulgham"), 90 Committer("Brett Wilson", "brettw (at] chromium.org", "brettx"), 91 Committer("Cameron McCormack", "cam (at] webkit.org", "heycam"), 92 Committer("Carlos Garcia Campos", ["cgarcia (at] igalia.com", "carlosgc (at] gnome.org", "carlosgc (at] webkit.org"], "KaL"), 93 Committer("Carol Szabo", "carol (at] webkit.org", "cszabo1"), 94 Committer("Chang Shu", ["cshu (at] webkit.org", "Chang.Shu (at] nokia.com"], "cshu"), 95 Committer("Chris Evans", "cevans (at] google.com"), 96 Committer("Chris Petersen", "cpetersen (at] apple.com", "cpetersen"), 97 Committer("Chris Rogers", "crogers (at] google.com", "crogers"), 98 Committer("Christian Dywan", ["christian (at] twotoasts.de", "christian (at] webkit.org"]), 99 Committer("Collin Jackson", "collinj (at] webkit.org"), 100 Committer("Daniel Cheng", "dcheng (at] chromium.org", "dcheng"), 101 Committer("David Smith", ["catfish.man (at] gmail.com", "dsmith (at] webkit.org"], "catfishman"), 102 Committer("Dean Jackson", "dino (at] apple.com", "dino"), 103 Committer("Diego Gonzalez", ["diegohcg (at] webkit.org", "diego.gonzalez (at] openbossa.org"], "diegohcg"), 104 Committer("Dirk Pranke", "dpranke (at] chromium.org", "dpranke"), 105 Committer("Drew Wilson", "atwilson (at] chromium.org", "atwilson"), 106 Committer("Eli Fidler", "eli (at] staikos.net", "QBin"), 107 Committer("Emil A Eklund", "eae (at] chromium.org", "eae"), 108 Committer("Enrica Casucci", "enrica (at] apple.com"), 109 Committer("Erik Arvidsson", "arv (at] chromium.org", "arv"), 110 Committer("Eric Roman", "eroman (at] chromium.org", "eroman"), 111 Committer("Eric Uhrhane", "ericu (at] chromium.org", "ericu"), 112 Committer("Evan Martin", "evan (at] chromium.org", "evmar"), 113 Committer("Evan Stade", "estade (at] chromium.org", "estade"), 114 Committer("Fady Samuel", "fsamuel (at] chromium.org", "fsamuel"), 115 Committer("Feng Qian", "feng (at] chromium.org"), 116 Committer("Fumitoshi Ukai", "ukai (at] chromium.org", "ukai"), 117 Committer("Gabor Loki", "loki (at] webkit.org", "loki04"), 118 Committer("Gabor Rapcsanyi", ["rgabor (at] webkit.org", "rgabor (at] inf.u-szeged.hu"], "rgabor"), 119 Committer("Girish Ramakrishnan", ["girish (at] forwardbias.in", "ramakrishnan.girish (at] gmail.com"]), 120 Committer("Graham Dennis", ["Graham.Dennis (at] gmail.com", "gdennis (at] webkit.org"]), 121 Committer("Greg Bolsinga", "bolsinga (at] apple.com"), 122 Committer("Gyuyoung Kim", ["gyuyoung.kim (at] samsung.com", "gyuyoung.kim (at] webkit.org"], "gyuyoung"), 123 Committer("Hans Wennborg", "hans (at] chromium.org", "hwennborg"), 124 Committer("Hayato Ito", "hayato (at] chromium.org", "hayato"), 125 Committer("Helder Correia", "helder (at] sencha.com", "helder"), 126 Committer("Hin-Chung Lam", ["hclam (at] google.com", "hclam (at] chromium.org"]), 127 Committer("Ilya Tikhonovsky", "loislo (at] chromium.org", "loislo"), 128 Committer("Ivan Krsti\u0107", "ike (at] apple.com"), 129 Committer("Jakob Petsovits", ["jpetsovits (at] rim.com", "jpetso (at] gmx.at"], "jpetso"), 130 Committer("Jakub Wieczorek", "jwieczorek (at] webkit.org", "fawek"), 131 Committer("James Hawkins", ["jhawkins (at] chromium.org", "jhawkins (at] google.com"], "jhawkins"), 132 Committer("James Kozianski", ["koz (at] chromium.org", "koz (at] google.com"], "koz"), 133 Committer("James Simonsen", "simonjam (at] chromium.org", "simonjam"), 134 Committer("Jay Civelli", "jcivelli (at] chromium.org", "jcivelli"), 135 Committer("Jeff Miller", "jeffm (at] apple.com", "jeffm"), 136 Committer("Jenn Braithwaite", "jennb (at] chromium.org", "jennb"), 137 Committer("Jens Alfke", ["snej (at] chromium.org", "jens (at] apple.com"]), 138 Committer("Jer Noble", "jer.noble (at] apple.com", "jernoble"), 139 Committer("Jeremy Moskovich", ["playmobil (at] google.com", "jeremy (at] chromium.org"], "jeremymos"), 140 Committer("Jessie Berlin", ["jberlin (at] webkit.org", "jberlin (at] apple.com"]), 141 Committer("Jesus Sanchez-Palencia", ["jesus (at] webkit.org", "jesus.palencia (at] openbossa.org"], "jeez_"), 142 Committer("Jocelyn Turcotte", "jocelyn.turcotte (at] nokia.com", "jturcotte"), 143 Committer("Jochen Eisinger", "jochen (at] chromium.org", "jochen__"), 144 Committer("John Abd-El-Malek", "jam (at] chromium.org", "jam"), 145 Committer("John Gregg", ["johnnyg (at] google.com", "johnnyg (at] chromium.org"], "johnnyg"), 146 Committer("John Knottenbelt", "jknotten (at] chromium.org", "jknotten"), 147 Committer("Johnny Ding", ["jnd (at] chromium.org", "johnnyding.webkit (at] gmail.com"], "johnnyding"), 148 Committer("Joone Hur", ["joone.hur (at] collabora.co.uk", "joone (at] kldp.org", "joone (at] webkit.org"], "joone"), 149 Committer("Joost de Valk", ["joost (at] webkit.org", "webkit-dev (at] joostdevalk.nl"], "Altha"), 150 Committer("Julie Parent", ["jparent (at] google.com", "jparent (at] chromium.org"], "jparent"), 151 Committer("Julien Chaffraix", ["jchaffraix (at] webkit.org", "julien.chaffraix (at] gmail.com"]), 152 Committer("Jungshik Shin", "jshin (at] chromium.org"), 153 Committer("Justin Schuh", "jschuh (at] chromium.org", "jschuh"), 154 Committer("Keishi Hattori", "keishi (at] webkit.org", "keishi"), 155 Committer("Kelly Norton", "knorton (at] google.com"), 156 Committer("Kenji Imasaki", "imasaki (at] chromium.org", "imasaki"), 157 Committer("Kent Hansen", "kent.hansen (at] nokia.com", "khansen"), 158 Committer("Kimmo Kinnunen", ["kimmo.t.kinnunen (at] nokia.com", "kimmok (at] iki.fi", "ktkinnun (at] webkit.org"], "kimmok"), 159 Committer("Kinuko Yasuda", "kinuko (at] chromium.org", "kinuko"), 160 Committer("Krzysztof Kowalczyk", "kkowalczyk (at] gmail.com"), 161 Committer("Kwang Yul Seo", ["kwangyul.seo (at] gmail.com", "skyul (at] company100.net", "kseo (at] webkit.org"], "kwangseo"), 162 Committer("Leandro Pereira", ["leandro (at] profusion.mobi", "leandro (at] webkit.org"], "acidx"), 163 Committer("Levi Weintraub", ["leviw (at] chromium.org", "leviw (at] google.com", "lweintraub (at] apple.com"], "leviw"), 164 Committer("Lucas De Marchi", ["lucas.demarchi (at] profusion.mobi", "demarchi (at] webkit.org"], "demarchi"), 165 Committer("Lucas Forschler", ["lforschler (at] apple.com"], "lforschler"), 166 Committer("Luiz Agostini", ["luiz (at] webkit.org", "luiz.agostini (at] openbossa.org"], "lca"), 167 Committer("Mads Ager", "ager (at] chromium.org"), 168 Committer("Marcus Voltis Bulach", "bulach (at] chromium.org"), 169 Committer("Mario Sanchez Prada", ["msanchez (at] igalia.com", "mario (at] webkit.org"], "msanchez"), 170 Committer("Matt Delaney", "mdelaney (at] apple.com"), 171 Committer("Matt Lilek", ["webkit (at] mattlilek.com", "pewtermoose (at] webkit.org"]), 172 Committer("Matt Perry", "mpcomplete (at] chromium.org"), 173 Committer("Maxime Britto", ["maxime.britto (at] gmail.com", "britto (at] apple.com"]), 174 Committer("Maxime Simon", ["simon.maxime (at] gmail.com", "maxime.simon (at] webkit.org"], "maxime.simon"), 175 Committer("Michael Nordman", "michaeln (at] google.com", "michaeln"), 176 Committer("Michael Saboff", "msaboff (at] apple.com"), 177 Committer("Michelangelo De Simone", "michelangelo (at] webkit.org", "michelangelo"), 178 Committer("Mike Belshe", ["mbelshe (at] chromium.org", "mike (at] belshe.com"]), 179 Committer("Mike Fenton", ["mifenton (at] rim.com", "mike.fenton (at] torchmobile.com"], "mfenton"), 180 Committer("Mike Thole", ["mthole (at] mikethole.com", "mthole (at] apple.com"]), 181 Committer("Mikhail Naganov", "mnaganov (at] chromium.org"), 182 Committer("MORITA Hajime", "morrita (at] google.com", "morrita"), 183 Committer("Nico Weber", ["thakis (at] chromium.org", "thakis (at] google.com"], "thakis"), 184 Committer("Noam Rosenthal", "noam.rosenthal (at] nokia.com", "noamr"), 185 Committer("Pam Greene", "pam (at] chromium.org", "pamg"), 186 Committer("Patrick Gansterer", ["paroga (at] paroga.com", "paroga (at] webkit.org"], "paroga"), 187 Committer("Pavel Podivilov", "podivilov (at] chromium.org", "podivilov"), 188 Committer("Peter Kasting", ["pkasting (at] google.com", "pkasting (at] chromium.org"], "pkasting"), 189 Committer("Peter Varga", ["pvarga (at] webkit.org", "pvarga (at] inf.u-szeged.hu"], "stampho"), 190 Committer("Philippe Normand", ["pnormand (at] igalia.com", "philn (at] webkit.org"], "philn-tp"), 191 Committer("Pierre d'Herbemont", ["pdherbemont (at] free.fr", "pdherbemont (at] apple.com"], "pdherbemont"), 192 Committer("Pierre-Olivier Latour", "pol (at] apple.com", "pol"), 193 Committer("Pratik Solanki", "psolanki (at] apple.com", "psolanki"), 194 Committer("Qi Zhang", ["qi.2.zhang (at] nokia.com", "qi.zhang02180 (at] gmail.com"], "qi"), 195 Committer("Renata Hodovan", "reni (at] webkit.org", "reni"), 196 Committer("Robert Hogan", ["robert (at] webkit.org", "robert (at] roberthogan.net", "lists (at] roberthogan.net"], "mwenge"), 197 Committer("Roland Steiner", "rolandsteiner (at] chromium.org"), 198 Committer("Satish Sampath", "satish (at] chromium.org"), 199 Committer("Scott Violet", "sky (at] chromium.org", "sky"), 200 Committer("Sergio Villar Senin", ["svillar (at] igalia.com", "sergio (at] webkit.org"], "svillar"), 201 Committer("Stephen White", "senorblanco (at] chromium.org", "senorblanco"), 202 Committer("Trey Matteson", "trey (at] usa.net", "trey"), 203 Committer("Tristan O'Tierney", ["tristan (at] otierney.net", "tristan (at] apple.com"]), 204 Committer("Vangelis Kokkevis", "vangelis (at] chromium.org", "vangelis"), 205 Committer("Victor Wang", "victorw (at] chromium.org", "victorw"), 206 Committer("Vitaly Repeshko", "vitalyr (at] chromium.org"), 207 Committer("William Siegrist", "wsiegrist (at] apple.com", "wms"), 208 Committer("W. James MacLean", "wjmaclean (at] chromium.org", "wjmaclean"), 209 Committer("Xiaomei Ji", "xji (at] chromium.org", "xji"), 210 Committer("Yael Aharon", "yael.aharon (at] nokia.com", "yael"), 211 Committer("Yaar Schnitman", ["yaar (at] chromium.org", "yaar (at] google.com"]), 212 Committer("Yong Li", ["yong.li.webkit (at] gmail.com", "yong.li (at] torchmobile.com"], "yong"), 213 Committer("Yongjun Zhang", "yongjun.zhang (at] nokia.com"), 214 Committer("Yi Shen", ["yi.4.shen (at] nokia.com", "shenyi2006 (at] gmail.com"]), 215 Committer("Yuta Kitamura", "yutak (at] chromium.org", "yutak"), 216 Committer("Yuzo Fujishima", "yuzo (at] google.com", "yuzo"), 217 Committer("Zhenyao Mo", "zmo (at] google.com", "zhenyao"), 218 Committer("Zoltan Herczeg", "zherczeg (at] webkit.org", "zherczeg"), 219 Committer("Zoltan Horvath", ["zoltan (at] webkit.org", "hzoltan (at] inf.u-szeged.hu", "horvath.zoltan.6 (at] stud.u-szeged.hu"], "zoltan"), 220 ] 221 222 223 # This is intended as a canonical, machine-readable list of all reviewers for 224 # WebKit. If your name is missing here and you are a reviewer, please add it. 225 # No review needed. 226 227 228 reviewers_list = [ 229 Reviewer("Ada Chan", "adachan (at] apple.com", "chanada"), 230 Reviewer("Adam Barth", "abarth (at] webkit.org", "abarth"), 231 Reviewer("Adam Roben", "aroben (at] apple.com", "aroben"), 232 Reviewer("Adam Treat", ["treat (at] kde.org", "treat (at] webkit.org", "atreat (at] rim.com"], "manyoso"), 233 Reviewer("Adele Peterson", "adele (at] apple.com", "adele"), 234 Reviewer("Alexey Proskuryakov", ["ap (at] webkit.org", "ap (at] apple.com"], "ap"), 235 Reviewer("Alice Liu", "alice.liu (at] apple.com", "aliu"), 236 Reviewer("Alp Toker", ["alp (at] nuanti.com", "alp (at] atoker.com", "alp (at] webkit.org"], "alp"), 237 Reviewer("Anders Carlsson", ["andersca (at] apple.com", "acarlsson (at] apple.com"], "andersca"), 238 Reviewer("Andreas Kling", ["kling (at] webkit.org", "andreas.kling (at] nokia.com"], "kling"), 239 Reviewer("Antonio Gomes", ["tonikitoo (at] webkit.org", "agomes (at] rim.com"], "tonikitoo"), 240 Reviewer("Antti Koivisto", ["koivisto (at] iki.fi", "antti (at] apple.com", "antti.j.koivisto (at] nokia.com"], "anttik"), 241 Reviewer("Ariya Hidayat", ["ariya.hidayat (at] gmail.com", "ariya (at] sencha.com", "ariya (at] webkit.org"], "ariya"), 242 Reviewer("Benjamin Poulain", ["benjamin (at] webkit.org", "benjamin.poulain (at] nokia.com", "ikipou (at] gmail.com"], "benjaminp"), 243 Reviewer("Beth Dakin", "bdakin (at] apple.com", "dethbakin"), 244 Reviewer("Brady Eidson", "beidson (at] apple.com", "bradee-oh"), 245 Reviewer("Brian Weinstein", "bweinstein (at] apple.com", "bweinstein"), 246 Reviewer("Cameron Zwarich", ["zwarich (at] apple.com", "cwzwarich (at] apple.com", "cwzwarich (at] webkit.org"]), 247 Reviewer("Chris Blumenberg", "cblu (at] apple.com", "cblu"), 248 Reviewer("Chris Marrin", "cmarrin (at] apple.com", "cmarrin"), 249 Reviewer("Chris Fleizach", "cfleizach (at] apple.com", "cfleizach"), 250 Reviewer("Chris Jerdonek", "cjerdonek (at] webkit.org", "cjerdonek"), 251 Reviewer(u"Csaba Osztrogon\u00e1c", "ossy (at] webkit.org", "ossy"), 252 Reviewer("Dan Bernstein", ["mitz (at] webkit.org", "mitz (at] apple.com"], "mitzpettel"), 253 Reviewer("Daniel Bates", "dbates (at] webkit.org", "dydz"), 254 Reviewer("Darin Adler", "darin (at] apple.com", "darin"), 255 Reviewer("Darin Fisher", ["fishd (at] chromium.org", "darin (at] chromium.org"], "fishd"), 256 Reviewer("David Harrison", "harrison (at] apple.com", "harrison"), 257 Reviewer("David Hyatt", "hyatt (at] apple.com", "hyatt"), 258 Reviewer("David Kilzer", ["ddkilzer (at] webkit.org", "ddkilzer (at] apple.com"], "ddkilzer"), 259 Reviewer("David Levin", "levin (at] chromium.org", "dave_levin"), 260 Reviewer("Dimitri Glazkov", "dglazkov (at] chromium.org", "dglazkov"), 261 Reviewer("Dirk Schulze", "krit (at] webkit.org", "krit"), 262 Reviewer("Dmitry Titov", "dimich (at] chromium.org", "dimich"), 263 Reviewer("Don Melton", "gramps (at] apple.com", "gramps"), 264 Reviewer("Dumitru Daniliuc", "dumi (at] chromium.org", "dumi"), 265 Reviewer("Eric Carlson", "eric.carlson (at] apple.com"), 266 Reviewer("Eric Seidel", "eric (at] webkit.org", "eseidel"), 267 Reviewer("Gavin Barraclough", "barraclough (at] apple.com", "gbarra"), 268 Reviewer("Geoffrey Garen", "ggaren (at] apple.com", "ggaren"), 269 Reviewer("George Staikos", ["staikos (at] kde.org", "staikos (at] webkit.org"]), 270 Reviewer("Gustavo Noronha Silva", ["gns (at] gnome.org", "kov (at] webkit.org", "gustavo.noronha (at] collabora.co.uk"], "kov"), 271 Reviewer("Holger Freyther", ["zecke (at] selfish.org", "zecke (at] webkit.org"], "zecke"), 272 Reviewer("James Robinson", ["jamesr (at] chromium.org", "jamesr (at] google.com"], "jamesr"), 273 Reviewer("Jan Alonzo", ["jmalonzo (at] gmail.com", "jmalonzo (at] webkit.org"], "janm"), 274 Reviewer("Jeremy Orlow", "jorlow (at] chromium.org", "jorlow"), 275 Reviewer("Jian Li", "jianli (at] chromium.org", "jianli"), 276 Reviewer("John Sullivan", "sullivan (at] apple.com", "sullivan"), 277 Reviewer("Jon Honeycutt", "jhoneycutt (at] apple.com", "jhoneycutt"), 278 Reviewer("Joseph Pecoraro", ["joepeck (at] webkit.org", "pecoraro (at] apple.com"], "JoePeck"), 279 Reviewer("Justin Garcia", "justin.garcia (at] apple.com", "justing"), 280 Reviewer("Ken Kocienda", "kocienda (at] apple.com"), 281 Reviewer("Kenneth Rohde Christiansen", ["kenneth (at] webkit.org", "kenneth.christiansen (at] openbossa.org", "kenneth.christiansen (at] gmail.com"], "kenne"), 282 Reviewer("Kenneth Russell", "kbr (at] google.com", "kbr_google"), 283 Reviewer("Kent Tamura", "tkent (at] chromium.org", "tkent"), 284 Reviewer("Kevin Decker", "kdecker (at] apple.com", "superkevin"), 285 Reviewer("Kevin McCullough", "kmccullough (at] apple.com", "maculloch"), 286 Reviewer("Kevin Ollivier", ["kevino (at] theolliviers.com", "kevino (at] webkit.org"], "kollivier"), 287 Reviewer("Lars Knoll", ["lars (at] trolltech.com", "lars (at] kde.org", "lars.knoll (at] nokia.com"], "lars"), 288 Reviewer("Laszlo Gombos", "laszlo.1.gombos (at] nokia.com", "lgombos"), 289 Reviewer("Maciej Stachowiak", "mjs (at] apple.com", "othermaciej"), 290 Reviewer("Mark Rowe", "mrowe (at] apple.com", "bdash"), 291 Reviewer("Martin Robinson", ["mrobinson (at] webkit.org", "mrobinson (at] igalia.com", "martin.james.robinson (at] gmail.com"], "mrobinson"), 292 Reviewer("Mihai Parparita", "mihaip (at] chromium.org", "mihaip"), 293 Reviewer("Nate Chapin", "japhet (at] chromium.org", "japhet"), 294 Reviewer("Nikolas Zimmermann", ["zimmermann (at] kde.org", "zimmermann (at] physik.rwth-aachen.de", "zimmermann (at] webkit.org"], "wildfox"), 295 Reviewer("Ojan Vafai", "ojan (at] chromium.org", "ojan"), 296 Reviewer("Oliver Hunt", "oliver (at] apple.com", "olliej"), 297 Reviewer("Pavel Feldman", "pfeldman (at] chromium.org", "pfeldman"), 298 Reviewer("Richard Williamson", "rjw (at] apple.com", "rjw"), 299 Reviewer("Rob Buis", ["rwlbuis (at] gmail.com", "rwlbuis (at] webkit.org"], "rwlbuis"), 300 Reviewer("Ryosuke Niwa", "rniwa (at] webkit.org", "rniwa"), 301 Reviewer("Sam Weinig", ["sam (at] webkit.org", "weinig (at] apple.com"], "weinig"), 302 Reviewer("Shinichiro Hamaji", "hamaji (at] chromium.org", "hamaji"), 303 Reviewer("Simon Fraser", "simon.fraser (at] apple.com", "smfr"), 304 Reviewer("Simon Hausmann", ["hausmann (at] webkit.org", "hausmann (at] kde.org", "simon.hausmann (at] nokia.com"], "tronical"), 305 Reviewer("Stephanie Lewis", "slewis (at] apple.com", "sundiamonde"), 306 Reviewer("Steve Block", "steveblock (at] google.com", "steveblock"), 307 Reviewer("Steve Falkenburg", "sfalken (at] apple.com", "sfalken"), 308 Reviewer("Tim Omernick", "timo (at] apple.com"), 309 Reviewer("Timothy Hatcher", ["timothy (at] apple.com", "timothy (at] hatcher.name"], "xenon"), 310 Reviewer("Tony Chang", "tony (at] chromium.org", "tony^work"), 311 Reviewer("Tony Gentilcore", "tonyg (at] chromium.org", "tonyg-cr"), 312 Reviewer(u"Tor Arne Vestb\u00f8", ["vestbo (at] webkit.org", "tor.arne.vestbo (at] nokia.com"], "torarne"), 313 Reviewer("Vicki Murley", "vicki (at] apple.com"), 314 Reviewer("Xan Lopez", ["xan.lopez (at] gmail.com", "xan (at] gnome.org", "xan (at] webkit.org"], "xan"), 315 Reviewer("Yury Semikhatsky", "yurys (at] chromium.org", "yurys"), 316 Reviewer("Zack Rusin", "zack (at] kde.org", "zackr"), 317 ] 318 319 320 class CommitterList: 321 322 # Committers and reviewers are passed in to allow easy testing 323 324 def __init__(self, 325 committers=committers_unable_to_review, 326 reviewers=reviewers_list): 327 self._committers = committers + reviewers 328 self._reviewers = reviewers 329 self._committers_by_email = {} 330 331 def committers(self): 332 return self._committers 333 334 def reviewers(self): 335 return self._reviewers 336 337 def _email_to_committer_map(self): 338 if not len(self._committers_by_email): 339 for committer in self._committers: 340 for email in committer.emails: 341 self._committers_by_email[email] = committer 342 return self._committers_by_email 343 344 def committer_by_name(self, name): 345 # This could be made into a hash lookup if callers need it to be fast. 346 for committer in self.committers(): 347 if committer.full_name == name: 348 return committer 349 350 def committer_by_email(self, email): 351 return self._email_to_committer_map().get(email) 352 353 def reviewer_by_email(self, email): 354 committer = self.committer_by_email(email) 355 if committer and not committer.can_review: 356 return None 357 return committer 358