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