ledger: extract top-10 rails/rails contributors to table

This commit is contained in:
ledger committed 2026-10-26 16:12:22 +00:00
1 parent 1cf5b60d16
commit 21c1a4f81a
6 files changed
+3179

No files matched your search

+11
View File
@@ -0,0 +1,11 @@
login,html_url,contributions
rafaelfranca,https://github.com/rafaelfranca,9087
tenderlove,https://github.com/tenderlove,5371
kamipo,https://github.com/kamipo,4439
jeremy,https://github.com/jeremy,3758
byroot,https://github.com/byroot,3045
fxn,https://github.com/fxn,2837
josevalim,https://github.com/josevalim,2359
eileencodes,https://github.com/eileencodes,1986
senny,https://github.com/senny,1626
carlosantoniodasilva,https://github.com/carlosantoniodasilva,1622
1 login html_url contributions
2 rafaelfranca https://github.com/rafaelfranca 9087
3 tenderlove https://github.com/tenderlove 5371
4 kamipo https://github.com/kamipo 4439
5 jeremy https://github.com/jeremy 3758
6 byroot https://github.com/byroot 3045
7 fxn https://github.com/fxn 2837
8 josevalim https://github.com/josevalim 2359
9 eileencodes https://github.com/eileencodes 1986
10 senny https://github.com/senny 1626
11 carlosantoniodasilva https://github.com/carlosantoniodasilva 1622
+44
View File
@@ -0,0 +1,44 @@
#!/usr/bin/env python3
"""Extract the IANA registered top-level-domain (TLD) list into tables.
Source : https://data.iana.org/TLD/tlds-alpha-by-domain.txt
Snapshot: Version 2026102600, Last Updated 2026-10-26 07:07:01 UTC
Format : '# Version ...' comment header, then one lowercase TLD per line
(1437 names, no blank lines, 9528 bytes).
Outputs (same directory):
tlds.csv per-TLD detail: tld,first_letter,length
tlds_by_letter.tsv summary table: letter<TAB>count (no header)
"""
import hashlib
import pathlib
HERE = pathlib.Path(__file__).resolve().parent
SRC = HERE / "tlds-alpha-by-domain.txt"
MD5 = "8a32a215f1ad7eeb691d0731403b3208"
def main():
data = SRC.read_bytes()
actual = hashlib.md5(data).hexdigest()
assert actual == MD5, f"source md5 mismatch: {actual} != {MD5}"
rows = [ln.lower() for ln in data.decode("ascii").splitlines()
if ln and not ln.startswith("#")]
assert len(rows) == 1437, f"expected 1437 TLDs, got {len(rows)}"
assert all(" " not in t for t in rows), "non-lower/space in names"
with open(HERE / "tlds.csv", "w", encoding="ascii") as f:
f.write("tld,first_letter,length\n")
for t in rows:
f.write(f"{t},{t[0]},{len(t)}\n")
counts = {}
for t in rows:
counts[t[0]] = counts.get(t[0], 0) + 1
with open(HERE / "tlds_by_letter.tsv", "w", encoding="ascii") as f:
for letter in sorted(counts):
f.write(f"{letter}\t{counts[letter]}\n")
print(f"MD5 ok | TLDs={len(rows)} | by-letter rows={len(counts)}")
if __name__ == "__main__":
main()
+222
View File
@@ -0,0 +1,222 @@
[
{
"login": "rafaelfranca",
"id": 47848,
"node_id": "MDQ6VXNlcjQ3ODQ4",
"avatar_url": "https://avatars.githubusercontent.com/u/47848?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/rafaelfranca",
"html_url": "https://github.com/rafaelfranca",
"followers_url": "https://api.github.com/users/rafaelfranca/followers",
"following_url": "https://api.github.com/users/rafaelfranca/following{/other_user}",
"gists_url": "https://api.github.com/users/rafaelfranca/gists{/gist_id}",
"starred_url": "https://api.github.com/users/rafaelfranca/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/rafaelfranca/subscriptions",
"organizations_url": "https://api.github.com/users/rafaelfranca/orgs",
"repos_url": "https://api.github.com/users/rafaelfranca/repos",
"events_url": "https://api.github.com/users/rafaelfranca/events{/privacy}",
"received_events_url": "https://api.github.com/users/rafaelfranca/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false,
"contributions": 9087
},
{
"login": "tenderlove",
"id": 3124,
"node_id": "MDQ6VXNlcjMxMjQ=",
"avatar_url": "https://avatars.githubusercontent.com/u/3124?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/tenderlove",
"html_url": "https://github.com/tenderlove",
"followers_url": "https://api.github.com/users/tenderlove/followers",
"following_url": "https://api.github.com/users/tenderlove/following{/other_user}",
"gists_url": "https://api.github.com/users/tenderlove/gists{/gist_id}",
"starred_url": "https://api.github.com/users/tenderlove/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/tenderlove/subscriptions",
"organizations_url": "https://api.github.com/users/tenderlove/orgs",
"repos_url": "https://api.github.com/users/tenderlove/repos",
"events_url": "https://api.github.com/users/tenderlove/events{/privacy}",
"received_events_url": "https://api.github.com/users/tenderlove/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false,
"contributions": 5371
},
{
"login": "kamipo",
"id": 12642,
"node_id": "MDQ6VXNlcjEyNjQy",
"avatar_url": "https://avatars.githubusercontent.com/u/12642?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/kamipo",
"html_url": "https://github.com/kamipo",
"followers_url": "https://api.github.com/users/kamipo/followers",
"following_url": "https://api.github.com/users/kamipo/following{/other_user}",
"gists_url": "https://api.github.com/users/kamipo/gists{/gist_id}",
"starred_url": "https://api.github.com/users/kamipo/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/kamipo/subscriptions",
"organizations_url": "https://api.github.com/users/kamipo/orgs",
"repos_url": "https://api.github.com/users/kamipo/repos",
"events_url": "https://api.github.com/users/kamipo/events{/privacy}",
"received_events_url": "https://api.github.com/users/kamipo/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false,
"contributions": 4439
},
{
"login": "jeremy",
"id": 199,
"node_id": "MDQ6VXNlcjE5OQ==",
"avatar_url": "https://avatars.githubusercontent.com/u/199?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/jeremy",
"html_url": "https://github.com/jeremy",
"followers_url": "https://api.github.com/users/jeremy/followers",
"following_url": "https://api.github.com/users/jeremy/following{/other_user}",
"gists_url": "https://api.github.com/users/jeremy/gists{/gist_id}",
"starred_url": "https://api.github.com/users/jeremy/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/jeremy/subscriptions",
"organizations_url": "https://api.github.com/users/jeremy/orgs",
"repos_url": "https://api.github.com/users/jeremy/repos",
"events_url": "https://api.github.com/users/jeremy/events{/privacy}",
"received_events_url": "https://api.github.com/users/jeremy/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false,
"contributions": 3758
},
{
"login": "byroot",
"id": 44640,
"node_id": "MDQ6VXNlcjQ0NjQw",
"avatar_url": "https://avatars.githubusercontent.com/u/44640?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/byroot",
"html_url": "https://github.com/byroot",
"followers_url": "https://api.github.com/users/byroot/followers",
"following_url": "https://api.github.com/users/byroot/following{/other_user}",
"gists_url": "https://api.github.com/users/byroot/gists{/gist_id}",
"starred_url": "https://api.github.com/users/byroot/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/byroot/subscriptions",
"organizations_url": "https://api.github.com/users/byroot/orgs",
"repos_url": "https://api.github.com/users/byroot/repos",
"events_url": "https://api.github.com/users/byroot/events{/privacy}",
"received_events_url": "https://api.github.com/users/byroot/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false,
"contributions": 3045
},
{
"login": "fxn",
"id": 3387,
"node_id": "MDQ6VXNlcjMzODc=",
"avatar_url": "https://avatars.githubusercontent.com/u/3387?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/fxn",
"html_url": "https://github.com/fxn",
"followers_url": "https://api.github.com/users/fxn/followers",
"following_url": "https://api.github.com/users/fxn/following{/other_user}",
"gists_url": "https://api.github.com/users/fxn/gists{/gist_id}",
"starred_url": "https://api.github.com/users/fxn/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/fxn/subscriptions",
"organizations_url": "https://api.github.com/users/fxn/orgs",
"repos_url": "https://api.github.com/users/fxn/repos",
"events_url": "https://api.github.com/users/fxn/events{/privacy}",
"received_events_url": "https://api.github.com/users/fxn/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false,
"contributions": 2837
},
{
"login": "josevalim",
"id": 9582,
"node_id": "MDQ6VXNlcjk1ODI=",
"avatar_url": "https://avatars.githubusercontent.com/u/9582?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/josevalim",
"html_url": "https://github.com/josevalim",
"followers_url": "https://api.github.com/users/josevalim/followers",
"following_url": "https://api.github.com/users/josevalim/following{/other_user}",
"gists_url": "https://api.github.com/users/josevalim/gists{/gist_id}",
"starred_url": "https://api.github.com/users/josevalim/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/josevalim/subscriptions",
"organizations_url": "https://api.github.com/users/josevalim/orgs",
"repos_url": "https://api.github.com/users/josevalim/repos",
"events_url": "https://api.github.com/users/josevalim/events{/privacy}",
"received_events_url": "https://api.github.com/users/josevalim/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false,
"contributions": 2359
},
{
"login": "eileencodes",
"id": 1080678,
"node_id": "MDQ6VXNlcjEwODA2Nzg=",
"avatar_url": "https://avatars.githubusercontent.com/u/1080678?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/eileencodes",
"html_url": "https://github.com/eileencodes",
"followers_url": "https://api.github.com/users/eileencodes/followers",
"following_url": "https://api.github.com/users/eileencodes/following{/other_user}",
"gists_url": "https://api.github.com/users/eileencodes/gists{/gist_id}",
"starred_url": "https://api.github.com/users/eileencodes/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/eileencodes/subscriptions",
"organizations_url": "https://api.github.com/users/eileencodes/orgs",
"repos_url": "https://api.github.com/users/eileencodes/repos",
"events_url": "https://api.github.com/users/eileencodes/events{/privacy}",
"received_events_url": "https://api.github.com/users/eileencodes/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false,
"contributions": 1986
},
{
"login": "senny",
"id": 5402,
"node_id": "MDQ6VXNlcjU0MDI=",
"avatar_url": "https://avatars.githubusercontent.com/u/5402?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/senny",
"html_url": "https://github.com/senny",
"followers_url": "https://api.github.com/users/senny/followers",
"following_url": "https://api.github.com/users/senny/following{/other_user}",
"gists_url": "https://api.github.com/users/senny/gists{/gist_id}",
"starred_url": "https://api.github.com/users/senny/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/senny/subscriptions",
"organizations_url": "https://api.github.com/users/senny/orgs",
"repos_url": "https://api.github.com/users/senny/repos",
"events_url": "https://api.github.com/users/senny/events{/privacy}",
"received_events_url": "https://api.github.com/users/senny/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false,
"contributions": 1626
},
{
"login": "carlosantoniodasilva",
"id": 26328,
"node_id": "MDQ6VXNlcjI2MzI4",
"avatar_url": "https://avatars.githubusercontent.com/u/26328?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/carlosantoniodasilva",
"html_url": "https://github.com/carlosantoniodasilva",
"followers_url": "https://api.github.com/users/carlosantoniodasilva/followers",
"following_url": "https://api.github.com/users/carlosantoniodasilva/following{/other_user}",
"gists_url": "https://api.github.com/users/carlosantoniodasilva/gists{/gist_id}",
"starred_url": "https://api.github.com/users/carlosantoniodasilva/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/carlosantoniodasilva/subscriptions",
"organizations_url": "https://api.github.com/users/carlosantoniodasilva/orgs",
"repos_url": "https://api.github.com/users/carlosantoniodasilva/repos",
"events_url": "https://api.github.com/users/carlosantoniodasilva/events{/privacy}",
"received_events_url": "https://api.github.com/users/carlosantoniodasilva/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false,
"contributions": 1622
}
]
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+26
View File
@@ -0,0 +1,26 @@
a 92
b 89
c 116
d 53
e 33
f 61
g 69
h 45
i 41
j 21
k 31
l 62
m 79
n 46
o 24
p 69
q 4
r 46
s 124
t 72
u 13
v 34
w 35
x 157
y 12
z 9
1 a 92
2 b 89
3 c 116
4 d 53
5 e 33
6 f 61
7 g 69
8 h 45
9 i 41
10 j 21
11 k 31
12 l 62
13 m 79
14 n 46
15 o 24
16 p 69
17 q 4
18 r 46
19 s 124
20 t 72
21 u 13
22 v 34
23 w 35
24 x 157
25 y 12
26 z 9