Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
155 changes: 155 additions & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
# Authors of apache/sedona

## The List of Contributors sorted by number of commits (as of 2025-03-29 141a3682)

483 Jia Yu
424 Jia Yu
167 John Bampton
78 Kristin Cowalcijk
57 Nilesh Gajwani
56 Furqaan Khan
40 jinxuan wu
36 Furqaanahmed Khan
35 zongsizhang
34 Kengo Seki
34 Kristin Cowalcijk
33 dependabot[bot]
28 Masha Basmanova
27 Pranav Toggi
26 Feng Zhang
26 Martin Andersson
20 zongsi zhang
18 James Willis
18 Junhao Liu
18 Kristin Cowalcijk
16 gregleleu
14 Mohamed Sarwat
14 Paweł Kociński
13 Netanel Malka
10 Adam Binford
10 Douglas Dennis
10 kanchanchy
9 Jinxuan Wu
9 Matthew Powers
9 Mohamed Sarwat
8 Jinxuan Wu
8 Sachio Wakai
7 Yitao Li
7 zongsi.zhang
6 Ana Caroline Ferreira
6 Jia Yu
6 Magdalena
6 Paweł Tokaj
5 Kontinuation
5 Mo Sarwat
4 Erni Durdevic
4 Omkar Kaptan
3 Avshalom Orenstein
3 Dewey Dunnington
3 Kanchan Chowdhury
3 Kelly-Ann Dolor
3 Mo Sarwat
3 Tanel Kiis
3 Wrussia
2 Anton Peniaziev
2 BarbieQkiller
2 Brian Rice
2 Dan
2 Dan Corbiani
2 Emmanuel Ferdman
2 HuiWang
2 Lucas C
2 Merijn
2 Michael Merg
2 Paul Wu
2 Pawel
2 Pawel Kocinski
2 Sebastian Eckweiler
2 StepSecurity Bot
2 Zhenghua Gao
2 aggunr
2 awadhesh singh
2 chenpengchuan
2 freamdx
2 jiayuasu
2 shantanuaggarwal2695
2 sshiv012
2 willbowditch
1 AMRIT BHASKAR
1 Akshay Gogeri
1 Akshay Gogeri
1 Alex Ott
1 Amir Tallap
1 Arindam Jain
1 Artem
1 Dane Springmeyer
1 Dewey Dunnington
1 Dimitris Bilidas
1 Elephantusparvus
1 Erni Durdevic
1 Feng Zhang
1 Guilhem de Viry
1 Hannah Chi
1 Haode Du
1 HarryZhu
1 Hemendu Roy
1 Hersh Gupta
1 Hongbo Miao
1 Ilya Zverev
1 James
1 Jonathan Leitschuh
1 Jordan Perr-Sauer
1 Jozef Dúc
1 Juan Ignacio Fulponi
1 Julien
1 Karthick Narendran
1 Kartikey
1 Keivan Shahida
1 Kevin Bohinski
1 Kurtis Seebaldt
1 Kurtis Seebaldt
1 Lenno Nagel
1 Mariano Gonzalez
1 Max Base
1 Maxime Petazzoni
1 Michael Merg
1 Mikael Vaaltola
1 Mohammad Lotfi Akbarabadi
1 Niklas Løvenholdt Petersen (Maersk)
1 Nikolay Gorylenko
1 Oliver Kennedy
1 Onkar Pandit
1 Pavan
1 Phoenix Daddy
1 Pooja Kulkarni
1 R B Krishna
1 Rishabh Mishra
1 Semen Komissarov
1 Sergey Nuyanzin
1 Sergii Mikhtoniuk
1 Serhuela
1 Shi-Hao Liu
1 Sébastien Diemer
1 Tejesh Reddy
1 The Gitter Badger
1 Tongxing Ren
1 Varsha Ravindra
1 Venkata Pankaj Kodavandlapalli
1 Vinoo Ganesh
1 Xiangyun Huang
1 Yitao Li
1 ashar
1 davidkell
1 gmaraswa
1 golfalot
1 mjohns-databricks
1 naharon2210
1 ngaur9
1 ruanqizhen
1 sagar1993
1 strump
1 the-sea
1 tmodi7
1 tociek
1 ttomasz
1 wendrickje
88 changes: 88 additions & 0 deletions generate_authors.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
import subprocess
import re
from datetime import datetime

def get_contributors():
output = subprocess.check_output(["git", "shortlog", "-sne", "--all"], encoding="utf-8")
lines = output.strip().split("\n")
contributors = []

for line in lines:
if not line.strip():
continue

parts = line.strip().split("\t")
if len(parts) != 2:
continue

count = int(parts[0].strip())
name_email = parts[1].strip()

name_match = re.match(r"^([^<]+)", name_email)
name = name_match.group(1).strip() if name_match else ""

email_match = re.search(r"<([^>]+)>", name_email)
email = email_match.group(1) if email_match else ""

username_match = re.search(r"\(@([^)]+)\)", name_email)
username = f"@{username_match.group(1)}" if username_match else ""

special_mark = ""
if username and email:
if email.lower().endswith(("@gmail.com")):
special_mark += "*"
elif not name.lower() in email.lower():
special_mark += "+"

contributors.append({
"count": count,
"name": name,
"username": username,
"special_mark": special_mark
})

return contributors

def write_authors_file(contributors, filename="AUTHORS"):
today = datetime.now().strftime("%Y-%m-%d")
hash_output = subprocess.check_output(["git", "rev-parse", "--short", "HEAD"], encoding="utf-8").strip()

with open(filename, "w", encoding="utf-8") as f:
f.write("# Authors of apache/sedona\n\n")
f.write(f"## The List of Contributors sorted by number of commits (as of {today} {hash_output})\n\n")

for contributor in contributors:
count = contributor["count"]
name = contributor["name"]
username = contributor["username"]
mark = contributor["special_mark"]

line = f"{count:6} {name} {username}{mark}\n"
f.write(line)

# f.write("\n`*` - Entries unified according to names and addresses\n")
# f.write("`+` - Entries with names different from commits\n\n")

# f.write("## Contributors without named commits\n\n")
# f.write(" Yuichi Osawa (Mitsubishi Electric Micro-Computer Application Software)\n")
# f.write(" Shota Nakano (Manycolors)\n")
# f.write(" Bjorn De Meyer\n\n")

# f.write("## Corporate contributors\n\n")
# f.write(" Ministry of Economy, Trade and Industry, Japan\n")
# f.write(" Kyushu Bureau of Economy, Trade and Industry\n")
# f.write(" SCSK KYUSHU CORPORATION\n")
# f.write(" Kyushu Institute of Technology\n")
# f.write(" Network Applied Communication Laboratory, Inc.\n")
# f.write(" Internet Initiative Japan Inc.\n")
# f.write(" Specified non-profit organization mruby Forum\n")
# f.write(" Mitsubishi Electric Micro-Computer Application Software Co.,Ltd.\n")
# f.write(" Manycolors, Inc.\n")

if __name__ == "__main__":
contributors = get_contributors()

contributors.sort(key=lambda x: x["count"], reverse=True)

write_authors_file(contributors)
print("AUTHORS file has been generated in the requested format.")
Loading