@@ -54,6 +54,25 @@ async def get_repo_stats(repo_url: str):
5454 commits = github_api_request (f"/repos/{ owner } /{ repo_name } /commits?per_page=5" )
5555
5656 code_frequency = github_api_request (f"/repos/{ owner } /{ repo_name } /stats/code_frequency" )
57+
58+ pull_requests_by_state = {
59+ "open" : sum (1 for pr in prs if pr ["state" ] == "open" ),
60+ "closed" : sum (1 for pr in prs if pr ["state" ] == "closed" ),
61+ "draft" : sum (1 for pr in prs if pr .get ("draft" , False )),
62+ "merged" : sum (1 for pr in prs if pr .get ("merged_at" ))
63+ }
64+ pr_details = [{
65+ "title" : pr ["title" ],
66+ "number" : pr ["number" ],
67+ "state" : pr ["state" ],
68+ "url" : pr ["html_url" ],
69+ "author" : {
70+ "login" : pr ["user" ]["login" ],
71+ "avatar_url" : pr ["user" ]["avatar_url" ],
72+ "profile_url" : pr ["user" ]["html_url" ]
73+ },
74+ } for pr in prs ]
75+
5776
5877 return {
5978 "name" : repo_info ["full_name" ],
@@ -103,13 +122,17 @@ async def get_repo_stats(repo_url: str):
103122
104123 # Pull Requests
105124 "pull_requests" : {
125+ ** pull_requests_by_state ,
126+ "total" : len (prs ),
127+ "details" : pr_details
106128 "total" : len (prs ),
107129 "merged" : sum (1 for pr in prs if pr ["merged_at" ]),
108130 "draft" : sum (1 for pr in prs if pr ["draft" ]),
109131 "by_state" : {
110132 "open" : sum (1 for pr in prs if pr ["state" ] == "open" ),
111133 "closed" : sum (1 for pr in prs if pr ["state" ] == "closed" )
112134 }
135+
113136 },
114137 }
115138
0 commit comments