Automatically update list of contributors

This commit is contained in:
Bruno Alla 2020-08-03 09:57:44 +02:00
parent cc8cdc6eb1
commit 5ba525ad09
11 changed files with 3804 additions and 3 deletions

34
.github/browniebroke.json vendored Normal file
View File

@ -0,0 +1,34 @@
{
"login": "browniebroke",
"id": 861044,
"node_id": "MDQ6VXNlcjg2MTA0NA==",
"avatar_url": "https://avatars1.githubusercontent.com/u/861044?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/browniebroke",
"html_url": "https://github.com/browniebroke",
"followers_url": "https://api.github.com/users/browniebroke/followers",
"following_url": "https://api.github.com/users/browniebroke/following{/other_user}",
"gists_url": "https://api.github.com/users/browniebroke/gists{/gist_id}",
"starred_url": "https://api.github.com/users/browniebroke/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/browniebroke/subscriptions",
"organizations_url": "https://api.github.com/users/browniebroke/orgs",
"repos_url": "https://api.github.com/users/browniebroke/repos",
"events_url": "https://api.github.com/users/browniebroke/events{/privacy}",
"received_events_url": "https://api.github.com/users/browniebroke/received_events",
"type": "User",
"site_admin": false,
"name": "Bruno Alla",
"company": "Festicket",
"blog": "https://browniebroke.com",
"location": "London, UK",
"email": null,
"hireable": null,
"bio": null,
"twitter_username": "_BrunoAlla",
"public_repos": 149,
"public_gists": 5,
"followers": 70,
"following": 73,
"created_at": "2011-06-20T07:06:17Z",
"updated_at": "2020-07-27T15:48:03Z"
}

2417
.github/commits.json vendored Normal file

File diff suppressed because it is too large Load Diff

991
.github/contributors.json vendored Normal file
View File

@ -0,0 +1,991 @@
[
{
"name": "18",
"github_login": "dezoito",
"twitter_username": ""
},
{
"name": "2O4",
"github_login": "2O4",
"twitter_username": ""
},
{
"name": "a7p",
"github_login": "a7p",
"twitter_username": ""
},
{
"name": "Aaron Eikenberry",
"github_login": "aeikenberry",
"twitter_username": ""
},
{
"name": "Adam Bogdał",
"github_login": "bogdal",
"twitter_username": ""
},
{
"name": "Adam Dobrawy",
"github_login": "ad-m",
"twitter_username": ""
},
{
"name": "Adam Steele",
"github_login": "adammsteele",
"twitter_username": ""
},
{
"name": "Agam Dua",
"github_login": "",
"twitter_username": ""
},
{
"name": "Agustín Scaramuzza",
"github_login": "scaramagus",
"twitter_username": "scaramagus"
},
{
"name": "Alberto Sanchez",
"github_login": "alb3rto",
"twitter_username": ""
},
{
"name": "Alex Tsai",
"github_login": "caffodian",
"twitter_username": ""
},
{
"name": "Alvaro [Andor]",
"github_login": "andor-pierdelacabeza",
"twitter_username": ""
},
{
"name": "Amjith Ramanujam",
"github_login": "amjith",
"twitter_username": ""
},
{
"name": "Andreas Meistad",
"github_login": "ameistad",
"twitter_username": ""
},
{
"name": "Andres Gonzalez",
"github_login": "andresgz",
"twitter_username": ""
},
{
"name": "Andrew Mikhnevich",
"github_login": "zcho",
"twitter_username": ""
},
{
"name": "Andrew Chen Wang",
"github_login": "Andrew-Chen-Wang",
"twitter_username": ""
},
{
"name": "Andy Rose",
"github_login": "",
"twitter_username": ""
},
{
"name": "Anna Callahan",
"github_login": "jazztpt",
"twitter_username": ""
},
{
"name": "Anna Sidwell",
"github_login": "takkaria",
"twitter_username": ""
},
{
"name": "Antonia Blair",
"github_login": "antoniablair",
"twitter_username": "antoniablairart"
},
{
"name": "Anuj Bansal",
"github_login": "ahhda",
"twitter_username": ""
},
{
"name": "Arcuri Davide",
"github_login": "dadokkio",
"twitter_username": ""
},
{
"name": "Areski Belaid",
"github_login": "areski",
"twitter_username": ""
},
{
"name": "Ashley Camba",
"github_login": "",
"twitter_username": ""
},
{
"name": "Audrey Roy Greenfeld",
"github_login": "audreyr",
"twitter_username": "audreyr",
"is_core": true
},
{
"name": "Barclay Gauld",
"github_login": "yunti",
"twitter_username": ""
},
{
"name": "Bartek",
"github_login": "btknu",
"twitter_username": ""
},
{
"name": "Ben Lopatin",
"github_login": "",
"twitter_username": ""
},
{
"name": "Ben Warren",
"github_login": "bwarren2",
"twitter_username": ""
},
{
"name": "Benjamin Abel",
"github_login": "",
"twitter_username": ""
},
{
"name": "Bert de Miranda",
"github_login": "bertdemiranda",
"twitter_username": ""
},
{
"name": "Bo Lopker",
"github_login": "blopker",
"twitter_username": ""
},
{
"name": "Bo Peng",
"github_login": "BoPeng",
"twitter_username": ""
},
{
"name": "Bouke Haarsma",
"github_login": "",
"twitter_username": ""
},
{
"name": "Brent Payne",
"github_login": "brentpayne",
"twitter_username": "brentpayne"
},
{
"name": "Bruce Olivier",
"github_login": "bolivierjr",
"twitter_username": ""
},
{
"name": "Bruno Alla",
"github_login": "browniebroke",
"twitter_username": "_BrunoAlla",
"is_core": true
},
{
"name": "Burhan Khalid",
"github_login": "burhan",
"twitter_username": "burhan",
"is_core": true
},
{
"name": "Caio Ariede",
"github_login": "caioariede",
"twitter_username": "caioariede"
},
{
"name": "Carl Johnson",
"github_login": "carlmjohnson",
"twitter_username": "carlmjohnson"
},
{
"name": "Catherine Devlin",
"github_login": "catherinedevlin",
"twitter_username": ""
},
{
"name": "Cédric Gaspoz",
"github_login": "cgaspoz",
"twitter_username": ""
},
{
"name": "Charlie Smith",
"github_login": "chuckus",
"twitter_username": ""
},
{
"name": "Chris Curvey",
"github_login": "ccurvey",
"twitter_username": ""
},
{
"name": "Chris Franklin",
"github_login": "",
"twitter_username": ""
},
{
"name": "Chris Franklin",
"github_login": "hairychris",
"twitter_username": ""
},
{
"name": "Chris Pappalardo",
"github_login": "ChrisPappalardo",
"twitter_username": ""
},
{
"name": "Christopher Clarke",
"github_login": "chrisdev",
"twitter_username": ""
},
{
"name": "Cole Mackenzie",
"github_login": "cmackenzie1",
"twitter_username": ""
},
{
"name": "Cole Maclean",
"github_login": "cole",
"twitter_username": "cole"
},
{
"name": "Collederas",
"github_login": "Collederas",
"twitter_username": ""
},
{
"name": "Craig Margieson",
"github_login": "cmargieson",
"twitter_username": ""
},
{
"name": "Cristian Vargas",
"github_login": "cdvv7788",
"twitter_username": ""
},
{
"name": "Cullen Rhodes",
"github_login": "c-rhodes",
"twitter_username": ""
},
{
"name": "Curtis St Pierre",
"github_login": "curtisstpierre",
"twitter_username": "cstpierre1388"
},
{
"name": "Dan Shultz",
"github_login": "shultz",
"twitter_username": ""
},
{
"name": "Dani Hodovic",
"github_login": "danihodovic",
"twitter_username": ""
},
{
"name": "Daniel Hepper",
"github_login": "dhepper",
"twitter_username": "danielhepper"
},
{
"name": "Daniel Hillier",
"github_login": "danifus",
"twitter_username": ""
},
{
"name": "Daniel Roy Greenfeld",
"github_login": "pydanny",
"twitter_username": "pydanny",
"is_core": true
},
{
"name": "Daniel Sears",
"github_login": "highpost",
"twitter_username": "highpost"
},
{
"name": "Daniele Tricoli",
"github_login": "eriol",
"twitter_username": ""
},
{
"name": "David Díaz",
"github_login": "ddiazpinto",
"twitter_username": "DavidDiazPinto"
},
{
"name": "Davit Tovmasyan",
"github_login": "davitovmasyan",
"twitter_username": ""
},
{
"name": "Davur Clementsen",
"github_login": "dsclementsen",
"twitter_username": "davur"
},
{
"name": "Delio Castillo",
"github_login": "jangeador",
"twitter_username": "jangeador"
},
{
"name": "Demetris Stavrou",
"github_login": "demestav",
"twitter_username": ""
},
{
"name": "Denis Bobrov",
"github_login": "delneg",
"twitter_username": ""
},
{
"name": "Denis Orehovsky",
"github_login": "apirobot",
"twitter_username": ""
},
{
"name": "Denis Savran",
"github_login": "blaxpy",
"twitter_username": ""
},
{
"name": "Diane Chen",
"github_login": "purplediane",
"twitter_username": "purplediane88"
},
{
"name": "Dónal Adams",
"github_login": "epileptic-fish",
"twitter_username": ""
},
{
"name": "Dong Huynh",
"github_login": "trungdong",
"twitter_username": ""
},
{
"name": "Duda Nogueira",
"github_login": "dudanogueira",
"twitter_username": "dudanogueira"
},
{
"name": "Emanuel Calso",
"github_login": "bloodpet",
"twitter_username": "bloodpet"
},
{
"name": "Eraldo Energy",
"github_login": "eraldo",
"twitter_username": ""
},
{
"name": "Eric Groom",
"github_login": "ericgroom",
"twitter_username": ""
},
{
"name": "Ernesto Cedeno",
"github_login": "codnee",
"twitter_username": ""
},
{
"name": "Eyad Al Sibai",
"github_login": "eyadsibai",
"twitter_username": ""
},
{
"name": "Fábio C. Barrionuevo da Luz",
"github_login": "luzfcb",
"twitter_username": "luzfcb",
"is_core": true
},
{
"name": "Felipe Arruda",
"github_login": "arruda",
"twitter_username": ""
},
{
"name": "Florian Idelberger",
"github_login": "step21",
"twitter_username": "windrush"
},
{
"name": "Gabriel Mejia",
"github_login": "elgartoinf",
"twitter_username": "elgartoinf"
},
{
"name": "Garry Cairns",
"github_login": "garry-cairns",
"twitter_username": ""
},
{
"name": "Garry Polley",
"github_login": "garrypolley",
"twitter_username": ""
},
{
"name": "Gilbishkosma",
"github_login": "Gilbishkosma",
"twitter_username": ""
},
{
"name": "Glenn Wiskur",
"github_login": "gwiskur",
"twitter_username": ""
},
{
"name": "Guilherme Guy",
"github_login": "guilherme1guy",
"twitter_username": ""
},
{
"name": "Hamish Durkin",
"github_login": "durkode",
"twitter_username": ""
},
{
"name": "Hana Quadara",
"github_login": "hanaquadara",
"twitter_username": ""
},
{
"name": "Hannah Lazarus",
"github_login": "hanhanhan",
"twitter_username": ""
},
{
"name": "Harry Moreno",
"github_login": "morenoh149",
"twitter_username": "morenoh149"
},
{
"name": "Harry Percival",
"github_login": "hjwp",
"twitter_username": ""
},
{
"name": "Hendrik Schneider",
"github_login": "hendrikschneider",
"twitter_username": ""
},
{
"name": "Henrique G. G. Pereira",
"github_login": "ikkebr",
"twitter_username": ""
},
{
"name": "Howie Zhao",
"github_login": "howiezhao",
"twitter_username": ""
},
{
"name": "Ian Lee",
"github_login": "IanLee1521",
"twitter_username": ""
},
{
"name": "Irfan Ahmad",
"github_login": "erfaan",
"twitter_username": "erfaan"
},
{
"name": "Isaac12x",
"github_login": "Isaac12x",
"twitter_username": ""
},
{
"name": "Ivan Khomutov",
"github_login": "ikhomutov",
"twitter_username": ""
},
{
"name": "James Williams",
"github_login": "jameswilliams1",
"twitter_username": ""
},
{
"name": "Jan Van Bruggen",
"github_login": "jvanbrug",
"twitter_username": ""
},
{
"name": "Jannis Gebauer",
"github_login": "jayfk",
"twitter_username": "",
"is_core": true
},
{
"name": "Jelmer Draaijer",
"github_login": "foarsitter",
"twitter_username": ""
},
{
"name": "Jerome Caisip",
"github_login": "jeromecaisip",
"twitter_username": ""
},
{
"name": "Jens Nilsson",
"github_login": "phiberjenz",
"twitter_username": ""
},
{
"name": "Jerome Leclanche",
"github_login": "jleclanche",
"twitter_username": "Adys"
},
{
"name": "Jimmy Gitonga",
"github_login": "afrowave",
"twitter_username": "afrowave"
},
{
"name": "John Cass",
"github_login": "jcass77",
"twitter_username": "cass_john"
},
{
"name": "Jonathan Thompson",
"github_login": "nojanath",
"twitter_username": ""
},
{
"name": "Jules Cheron",
"github_login": "jules-ch",
"twitter_username": ""
},
{
"name": "Julien Almarcha",
"github_login": "sladinji",
"twitter_username": ""
},
{
"name": "Julio Castillo",
"github_login": "juliocc",
"twitter_username": ""
},
{
"name": "Kaido Kert",
"github_login": "kaidokert",
"twitter_username": ""
},
{
"name": "kappataumu",
"github_login": "kappataumu",
"twitter_username": "kappataumu"
},
{
"name": "Kaveh",
"github_login": "ka7eh",
"twitter_username": ""
},
{
"name": "Keith Bailey",
"github_login": "keithjeb",
"twitter_username": ""
},
{
"name": "Keith Webber",
"github_login": "townie",
"twitter_username": ""
},
{
"name": "Kevin A. Stone",
"github_login": "",
"twitter_username": ""
},
{
"name": "Kevin Ndung'u",
"github_login": "kevgathuku",
"twitter_username": ""
},
{
"name": "Keyvan Mosharraf",
"github_login": "keyvanm",
"twitter_username": ""
},
{
"name": "Krzysztof Szumny",
"github_login": "noisy",
"twitter_username": ""
},
{
"name": "Krzysztof Żuraw",
"github_login": "krzysztofzuraw",
"twitter_username": ""
},
{
"name": "Leo won",
"github_login": "leollon",
"twitter_username": ""
},
{
"name": "Leo Zhou",
"github_login": "glasslion",
"twitter_username": ""
},
{
"name": "Leonardo Jimenez",
"github_login": "xpostudio4",
"twitter_username": ""
},
{
"name": "Lin Xianyi",
"github_login": "iynaix",
"twitter_username": ""
},
{
"name": "Luis Nell",
"github_login": "originell",
"twitter_username": ""
},
{
"name": "Lukas Klein",
"github_login": "",
"twitter_username": ""
},
{
"name": "Lyla Fischer",
"github_login": "",
"twitter_username": ""
},
{
"name": "Malik Sulaimanov",
"github_login": "flyudvik",
"twitter_username": "flyudvik"
},
{
"name": "Martin Blech",
"github_login": "",
"twitter_username": ""
},
{
"name": "Martin Saizar",
"github_login": "msaizar",
"twitter_username": ""
},
{
"name": "Mateusz Ostaszewski",
"github_login": "mostaszewski",
"twitter_username": ""
},
{
"name": "Mathijs Hoogland",
"github_login": "MathijsHoogland",
"twitter_username": ""
},
{
"name": "Matt Braymer-Hayes",
"github_login": "mattayes",
"twitter_username": "mattayes"
},
{
"name": "Matt Knapper",
"github_login": "mknapper1",
"twitter_username": ""
},
{
"name": "Matt Linares",
"github_login": "",
"twitter_username": ""
},
{
"name": "Matt Menzenski",
"github_login": "menzenski",
"twitter_username": ""
},
{
"name": "Matt Warren",
"github_login": "mfwarren",
"twitter_username": ""
},
{
"name": "Matthew Sisley",
"github_login": "mjsisley",
"twitter_username": ""
},
{
"name": "Meghan Heintz",
"github_login": "dot2dotseurat",
"twitter_username": ""
},
{
"name": "Mesut Yılmaz",
"github_login": "myilmaz",
"twitter_username": ""
},
{
"name": "Michael Gecht",
"github_login": "mimischi",
"twitter_username": "_mischi"
},
{
"name": "Michael Samoylov",
"github_login": "msamoylov",
"twitter_username": ""
},
{
"name": "Min ho Kim",
"github_login": "minho42",
"twitter_username": ""
},
{
"name": "mozillazg",
"github_login": "mozillazg",
"twitter_username": ""
},
{
"name": "Nico Stefani",
"github_login": "nicolas471",
"twitter_username": "moby_dick91"
},
{
"name": "Oleg Russkin",
"github_login": "rolep",
"twitter_username": ""
},
{
"name": "Pablo",
"github_login": "oubiga",
"twitter_username": ""
},
{
"name": "Parbhat Puri",
"github_login": "parbhat",
"twitter_username": ""
},
{
"name": "Pawan Chaurasia",
"github_login": "rjsnh1522",
"twitter_username": ""
},
{
"name": "Peter Bittner",
"github_login": "bittner",
"twitter_username": ""
},
{
"name": "Peter Coles",
"github_login": "mrcoles",
"twitter_username": ""
},
{
"name": "Philipp Matthies",
"github_login": "canonnervio",
"twitter_username": ""
},
{
"name": "Pierre Chiquet",
"github_login": "pchiquet",
"twitter_username": ""
},
{
"name": "Raony Guimarães Corrêa",
"github_login": "raonyguimaraes",
"twitter_username": ""
},
{
"name": "Raphael Pierzina",
"github_login": "hackebrot",
"twitter_username": ""
},
{
"name": "Reggie Riser",
"github_login": "reggieriser",
"twitter_username": ""
},
{
"name": "René Muhl",
"github_login": "rm--",
"twitter_username": ""
},
{
"name": "Roman Afanaskin",
"github_login": "siauPatrick",
"twitter_username": ""
},
{
"name": "Roman Osipenko",
"github_login": "romanosipenko",
"twitter_username": ""
},
{
"name": "Russell Davies",
"github_login": "",
"twitter_username": ""
},
{
"name": "Sam Collins",
"github_login": "MightySCollins",
"twitter_username": ""
},
{
"name": "Saurabh Kumar",
"github_login": "theskumar",
"twitter_username": "_theskumar",
"is_core": true
},
{
"name": "Sascha",
"github_login": "saschalalala",
"twitter_username": "saschalalala"
},
{
"name": "Shupeyko Nikita",
"github_login": "webyneter",
"twitter_username": "",
"is_core": true
},
{
"name": "Sławek Ehlert",
"github_login": "slafs",
"twitter_username": ""
},
{
"name": "Sorasful",
"github_login": "sorasful",
"twitter_username": ""
},
{
"name": "Srinivas Nyayapati",
"github_login": "shireenrao",
"twitter_username": ""
},
{
"name": "stepmr",
"github_login": "stepmr",
"twitter_username": ""
},
{
"name": "Steve Steiner",
"github_login": "ssteinerX",
"twitter_username": ""
},
{
"name": "Sudarshan Wadkar",
"github_login": "wadkar",
"twitter_username": ""
},
{
"name": "Sule Marshall",
"github_login": "suledev",
"twitter_username": ""
},
{
"name": "Tano Abeleyra",
"github_login": "tanoabeleyra",
"twitter_username": ""
},
{
"name": "Taylor Baldwin",
"github_login": "",
"twitter_username": ""
},
{
"name": "Théo Segonds",
"github_login": "show0k",
"twitter_username": ""
},
{
"name": "Tim Claessens",
"github_login": "timclaessens",
"twitter_username": ""
},
{
"name": "Tim Freund",
"github_login": "timfreund",
"twitter_username": ""
},
{
"name": "Tom Atkins",
"github_login": "knitatoms",
"twitter_username": ""
},
{
"name": "Tom Offermann",
"github_login": "",
"twitter_username": ""
},
{
"name": "Travis McNeill",
"github_login": "Travistock",
"twitter_username": "tavistock_esq"
},
{
"name": "Tubo Shi",
"github_login": "Tubo",
"twitter_username": ""
},
{
"name": "Umair Ashraf",
"github_login": "umrashrf",
"twitter_username": "fabumair"
},
{
"name": "Vadim Iskuchekov",
"github_login": "Egregors",
"twitter_username": "egregors"
},
{
"name": "Vicente G. Reyes",
"github_login": "reyesvicente",
"twitter_username": "highcenburg"
},
{
"name": "Vitaly Babiy",
"github_login": "",
"twitter_username": ""
},
{
"name": "Vivian Guillen",
"github_login": "viviangb",
"twitter_username": ""
},
{
"name": "Vlad Doster",
"github_login": "vladdoster",
"twitter_username": ""
},
{
"name": "Will Farley",
"github_login": "goldhand",
"twitter_username": "g01dhand"
},
{
"name": "William Archinal",
"github_login": "archinal",
"twitter_username": ""
},
{
"name": "Wan Liuyang",
"github_login": "sfdye",
"twitter_username": "sfdye",
"is_core": true
},
{
"name": "Xaver Y.R. Chen",
"github_login": "yrchen",
"twitter_username": "yrchen"
},
{
"name": "Yaroslav Halchenko",
"github_login": "",
"twitter_username": ""
},
{
"name": "Yuchen Xie",
"github_login": "mapx",
"twitter_username": ""
}
]

View File

@ -0,0 +1,26 @@
name: Update Contributors
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: "3.8"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Update list
run: python scripts/update_contributors.py $GITHUB_EVENT_PATH

1
.gitignore vendored
View File

@ -214,7 +214,6 @@ tags
[Ii]nclude
[Ll]ib
[Ll]ib64
[Ss]cripts
pyvenv.cfg
pip-selfcheck.json

96
CONTRIBUTORS.md Normal file
View File

@ -0,0 +1,96 @@
# Contributors
## Core Developers
These contributors have commit flags for the repository, and are able to
accept and merge pull requests.
<table>
<tr>
<th>Name</th>
<th>Github</th>
<th>Twitter</th>
</tr>
<tr>
<td>Daniel Roy Greenfeld</td>
<td>
<a href="https://github.com/pydanny">pydanny</a>
</td>
<td>pydanny</td>
</tr>
<tr>
<td>Audrey Roy Greenfeld</td>
<td>
<a href="https://github.com/audreyr">audreyr</a>
</td>
<td>audreyr</td>
</tr>
<tr>
<td>Fábio C. Barrionuevo da Luz</td>
<td>
<a href="https://github.com/luzfcb">luzfcb</a>
</td>
<td>luzfcb</td>
</tr>
<tr>
<td>Saurabh Kumar</td>
<td>
<a href="https://github.com/theskumar">theskumar</a>
</td>
<td>_theskumar</td>
</tr>
<tr>
<td>Jannis Gebauer</td>
<td>
<a href="https://github.com/jayfk">jayfk</a>
</td>
<td></td>
</tr>
<tr>
<td>Burhan Khalid</td>
<td>
<a href="https://github.com/burhan">burhan</a>
</td>
<td>burhan</td>
</tr>
<tr>
<td>Nikita Shupeyko</td>
<td>
<a href="https://github.com/webyneter">webyneter</a>
</td>
<td></td>
</tr>
<tr>
<td>Bruno Alla</td>
<td>
<a href="https://github.com/browniebroke">browniebroke</a>
</td>
<td>_BrunoAlla</td>
</tr>
<tr>
<td>Wan Liuyang</td>
<td>
<a href="https://github.com/sfdye">sfdye</a>
</td>
<td>sfdye</td>
</tr>
</table>
*Audrey is also the creator of Cookiecutter. Audrey and Daniel are on
the Cookiecutter core team.*
## Other Contributors
Listed in alphabetical order.
<!-- BEGIN-GENERATED-CONTENT -->
<!-- END-GENERATED-CONTENT -->
### Special Thanks
The following haven't provided code directly, but have provided
guidance and advice.
- Jannis Leidel
- Nate Aune
- Barry Morrison

View File

@ -17,7 +17,7 @@ Saurabh Kumar `@theskumar`_ @_theskumar
Jannis Gebauer `@jayfk`_
Burhan Khalid `@burhan`_ @burhan
Nikita Shupeyko `@webyneter`_ @webyneter
Bruno Alla               `@browniebroke`_ @_BrunoAlla
Bruno Alla `@browniebroke`_ @_BrunoAlla
Wan Liuyang `@sfdye`_ @sfdye
=========================== ================= ===========
@ -29,6 +29,7 @@ Daniel are on the Cookiecutter core team.*
.. _@theskumar: https://github.com/theskumar
.. _@audreyr: https://github.com/audreyr
.. _@jayfk: https://github.com/jayfk
.. _@burhan: https://github.com/burhan
.. _@webyneter: https://github.com/webyneter
.. _@browniebroke: https://github.com/browniebroke
.. _@sfdye: https://github.com/sfdye
@ -267,7 +268,6 @@ Listed in alphabetical order.
.. _@BoPeng: https://github.com/BoPeng
.. _@brentpayne: https://github.com/brentpayne
.. _@btknu: https://github.com/btknu
.. _@burhan: https://github.com/burhan
.. _@bwarren2: https://github.com/bwarren2
.. _@c-rhodes: https://github.com/c-rhodes
.. _@caffodian: https://github.com/caffodian

View File

@ -16,3 +16,8 @@ pytest==6.0.1
pytest-cookies==0.5.1
pytest-instafail==0.4.2
pyyaml==5.3.1
# Scripting
# ------------------------------------------------------------------------------
requests
jinja2

1
scripts/__init__.py Normal file
View File

@ -0,0 +1 @@

102
scripts/rst_to_json.py Normal file
View File

@ -0,0 +1,102 @@
import json
from pathlib import Path
CURRENT_FILE = Path(__file__)
ROOT = CURRENT_FILE.parents[1]
def main():
input_file_path = ROOT / "CONTRIBUTORS.rst"
with input_file_path.open() as ifd:
content = ifd.read()
table_separator = (
"============================= ========================== =================="
)
table_content = content.split(table_separator)[2]
profiles_list = [
{
"name": "Audrey Roy Greenfeld",
"github_login": "audreyr",
"twitter_username": "audreyr",
"is_core": True,
},
{
"name": "Bruno Alla",
"github_login": "browniebroke",
"twitter_username": "_BrunoAlla",
"is_core": True,
},
{
"name": "Burhan Khalid",
"github_login": "burhan",
"twitter_username": "burhan",
"is_core": True,
},
{
"name": "Daniel Roy Greenfeld",
"github_login": "pydanny",
"twitter_username": "pydanny",
"is_core": True,
},
{
"name": "Fábio C. Barrionuevo da Luz",
"github_login": "luzfcb",
"twitter_username": "luzfcb",
"is_core": True,
},
{
"name": "Jannis Gebauer",
"github_login": "jayfk",
"twitter_username": "",
"is_core": True,
},
{
"name": "Saurabh Kumar",
"github_login": "theskumar",
"twitter_username": "_theskumar",
"is_core": True,
},
{
"name": "Shupeyko Nikita",
"github_login": "webyneter",
"twitter_username": "",
"is_core": True,
},
{
"name": "Wan Liuyang",
"github_login": "sfdye",
"twitter_username": "sfdye",
"is_core": True,
},
]
core_members = [member["github_login"] for member in profiles_list]
for contrib in table_content.split("\n"):
if not contrib:
continue
line_parts = contrib.split("`")
name = line_parts[0].strip()
github_login = line_parts[1].lstrip("@") if len(line_parts) > 1 else ""
if github_login in core_members:
continue
twitter_username = (
line_parts[2].lstrip("_").strip().lstrip("@")
if len(line_parts) == 3
else ""
)
profile = {
"name": name,
"github_login": github_login,
"twitter_username": twitter_username,
}
profiles_list.append(profile)
output_file_path = ROOT / ".github" / "contributors.json"
with output_file_path.open("w") as ofd:
json.dump(profiles_list, ofd, indent=2, ensure_ascii=False)
if __name__ == "__main__":
main()

View File

@ -0,0 +1,130 @@
import json
from pathlib import Path
import requests
from jinja2 import Template
CURRENT_FILE = Path(__file__)
ROOT = CURRENT_FILE.parents[1]
BOT_LOGINS = ["pyup-bot"]
OUTPUT_FILE_PATH = ROOT / "CONTRIBUTORS.rst"
CONTRIBUTORS_TABLE_TEMPLATE = """
<table>
<tr>
<th>Name</th>
<th>Github</th>
<th>Twitter</th>
</tr>
{%- for contributor in contributors %}
<tr>
<td>{{ contributor.name }}</td>
<td>
<a href="https://github.com/{{ contributor.github_login }}">{{ contributor.github_login }}</a>
</td>
<td>{{ contributor.twitter_username }}</td>
</tr>
{%- endfor %}
</table>
"""
def main() -> None:
gh = GitHub()
recent_authors = set(gh.iter_recent_authors())
contrib_file = ContributorsJSONFile()
for username in recent_authors:
if username not in contrib_file:
user_data = gh.fetch_user_info(username)
contrib_file.add_contributor(user_data)
contrib_file.save()
rst_file = ContributorsRSTFile()
rst_file.generate_table(contrib_file.content)
rst_file.save()
class GitHub:
base_url = "https://api.github.com"
def __init__(self) -> None:
self.session = requests.Session()
def request(self, endpoint):
response = self.session.get(f"{self.base_url}{endpoint}")
response.raise_for_status()
return response.json()
def iter_recent_authors(self):
commits = self.request("/repos/pydanny/cookiecutter-django/commits")
for commit in commits:
login = commit["author"]["login"]
if login not in BOT_LOGINS:
yield login
def fetch_user_info(self, username):
return self.request(f"/users/{username}")
class ContributorsJSONFile:
file_path = ROOT / ".github" / "contributors.json"
content = None
def __init__(self) -> None:
with self.file_path.open() as fd:
self.content = json.load(fd)
def __contains__(self, github_login: str):
return any(github_login == contrib["github_login"] for contrib in self.content)
def add_contributor(self, user_data):
contributor_data = {
"name": user_data["name"],
"github_login": user_data["login"],
"twitter_username": user_data["twitter_username"],
}
new_content = self.content + [contributor_data]
self.content = sorted(new_content, key=lambda user: user["name"])
def save(self):
with self.file_path.open("w") as fd:
json.dump(self.content, fd, indent=2)
class ContributorsRSTFile:
file_path = ROOT / "CONTRIBUTORS.md"
content = None
marker_start = "<!-- BEGIN-GENERATED-CONTENT -->"
marker_end = "<!-- END-GENERATED-CONTENT -->"
def __init__(self) -> None:
with self.file_path.open() as fd:
content = fd.read()
self.before, rest_initial = content.split(f"{self.marker_start}")
self.middle, self.after = rest_initial.split(f"{self.marker_end}")
def generate_table(self, profiles_list):
template = Template(CONTRIBUTORS_TABLE_TEMPLATE, autoescape=True)
contributors = [profile for profile in profiles_list if not profile.get("is_core", False)]
self.middle = template.render(contributors=contributors)
def save(self):
with self.file_path.open("w") as fd:
new_content = "\n".join(
[
self.before,
self.marker_start,
self.middle,
self.marker_end,
self.after,
]
)
fd.write(new_content)
if __name__ == "__main__":
template = Template(CONTRIBUTORS_TABLE_TEMPLATE, autoescape=True)
contrib_file = ContributorsJSONFile()
contributors = [profile for profile in contrib_file.content if profile.get("is_core", False)]
print(template.render(contributors=contributors))