Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
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
141 changes: 141 additions & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
# Authors of apache/sedona

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

913 Jia Yu
167 John Bampton
130 Kristin Cowalcijk
57 Nilesh Gajwani
56 Furqaan Khan
40 jinxuan wu
36 Furqaanahmed Khan
35 zongsizhang
34 Kengo Seki
33 dependabot[bot]
28 Masha Basmanova
27 Pranav Toggi
27 Feng Zhang
26 Martin Andersson
23 Mohamed Sarwat
20 zongsi zhang
18 James Willis
18 Junhao Liu
17 Jinxuan Wu
16 gregleleu
14 Paweł Kociński
13 Netanel Malka
10 Adam Binford
10 Douglas Dennis
10 kanchanchy
9 Matthew Powers
8 Sachio Wakai
8 Yitao Li
8 Mo Sarwat
7 zongsi.zhang
6 Ana Caroline Ferreira
6 Magdalena
6 Paweł Tokaj
5 Kontinuation
5 Erni Durdevic
4 Omkar Kaptan
4 Dewey Dunnington
3 Avshalom Orenstein
3 Kanchan Chowdhury
3 Kelly-Ann Dolor
3 Tanel Kiis
3 Wrussia
3 Michael Merg
2 Anton Peniaziev
2 BarbieQkiller
2 Brian Rice
2 Dan
2 Dan Corbiani
2 Emmanuel Ferdman
2 HuiWang
2 Lucas C
2 Merijn
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
2 Akshay Gogeri
2 Kurtis Seebaldt
1 AMRIT BHASKAR
1 Alex Ott
1 Amir Tallap
1 Arindam Jain
1 Artem
1 Dane Springmeyer
1 Dimitris Bilidas
1 Elephantusparvus
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 Lenno Nagel
1 Mariano Gonzalez
1 Max Base
1 Maxime Petazzoni
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 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
90 changes: 90 additions & 0 deletions tools/scripts/generate_authors.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
import shutil
import re
from datetime import datetime
from collections import defaultdict
import subprocess # nosec B404


def get_git_command():
git_path = shutil.which("git")
if not git_path:
raise EnvironmentError("Git executable not found in system PATH.")
return git_path


def get_contributors():
git = get_git_command()
try:
output = subprocess.check_output(
[git, "shortlog", "-sne", "--all"], encoding="utf-8"
) # nosec B603
except subprocess.CalledProcessError as e:
raise RuntimeError("Failed to get git shortlog output.") from e

lines = output.strip().split("\n")
contributors = defaultdict(int)

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 ""

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

key = (name, username)
contributors[key] += count

result = []
for (name, username), count in contributors.items():
result.append(
{
"count": count,
"name": name,
"username": username,
}
)

return result


def write_authors_file(contributors, filename="AUTHORS"):
today = datetime.now().strftime("%Y-%m-%d")
git = get_git_command()
try:
hash_output = subprocess.check_output(
[git, "rev-parse", "--short", "HEAD"], encoding="utf-8"
).strip() # nosec
except subprocess.CalledProcessError as e:
raise RuntimeError("Failed to get git commit hash.") from e

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"]
line = f"{count:6} {name}"
if username:
line += f" {username}"
f.write(line.rstrip() + "\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.")
Loading