1- from utils import logger
1+ from dataclasses import asdict , dataclass
22from time import sleep
33from typing import Generator
4+ from datetime import datetime
5+
6+ from constants import EMPTY_FIELD , TIMEDELTA
47from interface_wrapper import IRepositoryAPI , Repository
8+ from utils import logger
9+
510
6- EMPTY_FIELD = 'Empty field'
7- TIMEDELTA = 0.05
8- TIMEZONE = 'Europe/Moscow'
9- FIELDNAMES = (
10- 'repository name' ,
11- 'login' ,
12- 'name' ,
13- 'email' ,
14- 'url' ,
15- 'permissions' ,
16- 'total_commits' ,
17- 'id' ,
18- 'node_id' ,
19- 'type' ,
20- 'bio' ,
21- 'site_admin' ,
22- )
11+ @dataclass (kw_only = True , frozen = True )
12+ class ContributorData :
13+ repository_name : str = ''
14+ login : str = ''
15+ name : str = ''
16+ email : str = ''
17+ url : str = ''
18+ permissions : str = ''
19+ total_commits : int = 0
20+ node_id : str = ''
21+ type : str = ''
22+ bio : str = ''
23+ site_admin : bool = False
2324
2425
2526def log_repository_contributors (
@@ -36,22 +37,24 @@ def nvl(val):
3637 repository , contributor
3738 )
3839
39- info_tmp = {
40- 'repository name' : repository .name ,
41- 'login' : contributor .login ,
42- 'name' : nvl (contributor .username ),
43- 'email' : nvl (contributor_stat ['email' ]),
44- 'url' : contributor .html_url ,
45- 'permissions' : nvl (contributor_permissions ),
46- 'total_commits' : contributor_stat ['total_commits' ],
47- 'node_id' : contributor .node_id ,
48- 'type' : contributor .type ,
49- 'bio' : nvl (contributor .bio ),
50- 'site_admin' : contributor .site_admin ,
51- }
52-
53- logger .log_to_csv (csv_name , FIELDNAMES , info_tmp )
54- logger .log_to_stdout (info_tmp )
40+ contributor_data = ContributorData (
41+ repository_name = repository .name ,
42+ login = contributor .login ,
43+ name = nvl (contributor .username ),
44+ email = nvl (contributor_stat ['email' ]),
45+ url = contributor .html_url ,
46+ permissions = nvl (contributor_permissions ),
47+ total_commits = contributor_stat ['total_commits' ],
48+ node_id = contributor .node_id ,
49+ type = contributor .type ,
50+ bio = nvl (contributor .bio ),
51+ site_admin = contributor .site_admin ,
52+ )
53+
54+ info_dict = asdict (contributor_data )
55+
56+ logger .log_to_csv (csv_name , list (info_dict .keys ()), info_dict )
57+ logger .log_to_stdout (info_dict )
5558
5659 sleep (TIMEDELTA )
5760
@@ -78,11 +81,14 @@ def get_contributors_stats(client: IRepositoryAPI, repository: Repository) -> di
7881
7982
8083def log_contributors (
81- client : IRepositoryAPI , working_repos : Generator , csv_name : str , fork_flag : bool
84+ binded_repos : Generator [tuple [IRepositoryAPI , Repository , str ], None ],
85+ csv_name : str ,
86+ fork_flag : bool ,
8287):
83- logger .log_to_csv (csv_name , FIELDNAMES )
88+ info = asdict (ContributorData ())
89+ logger .log_to_csv (csv_name , list (info .keys ()))
8490
85- for repo , token in working_repos :
91+ for client , repo , token in binded_repos :
8692 try :
8793 logger .log_title (repo .name )
8894 log_repository_contributors (client , repo , csv_name )
0 commit comments