ledger: extract top-10 rails/rails contributors to table
This commit is contained in:
1 parent
1cf5b60d16
commit
21c1a4f81a
6 files changed
+3179
No files matched your search
@@ -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
|
||||
|
@@ -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()
|
||||
@@ -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
@@ -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
|
||||
|
Reference in new issue
Block a user