1- from utils import logger
1+ from dataclasses import asdict , dataclass
22from time import sleep
33from typing import Generator
4+
5+ from constants import EMPTY_FIELD , TIMEDELTA
46from interface_wrapper import IRepositoryAPI , Repository
7+ from utils import logger
8+
59
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- )
10+ @dataclass (kw_only = True , frozen = True )
11+ class ContributorData :
12+ repository_name : str = ''
13+ login : str = ''
14+ name : str = ''
15+ email : str = ''
16+ url : str = ''
17+ permissions : str = ''
18+ total_commits : int = 0
19+ node_id : str = ''
20+ type : str = ''
21+ bio : str = ''
22+ site_admin : bool = False
2323
2424
2525def log_repository_contributors (
@@ -36,22 +36,24 @@ def nvl(val):
3636 repository , contributor
3737 )
3838
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 )
39+ contributor_data = ContributorData (
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+ info_dict = asdict (contributor_data )
54+
55+ logger .log_to_csv (csv_name , list (info_dict .keys ()), info_dict )
56+ logger .log_to_stdout (info_dict )
5557
5658 sleep (TIMEDELTA )
5759
@@ -80,7 +82,8 @@ def get_contributors_stats(client: IRepositoryAPI, repository: Repository) -> di
8082def log_contributors (
8183 client : IRepositoryAPI , working_repos : Generator , csv_name : str , fork_flag : bool
8284):
83- logger .log_to_csv (csv_name , FIELDNAMES )
85+ info = asdict (ContributorData ())
86+ logger .log_to_csv (csv_name , list (info .keys ()))
8487
8588 for repo , token in working_repos :
8689 try :
0 commit comments