Skip to content

Commit f9b8156

Browse files
authored
utils-logger implimented (#86)
1 parent 395df6b commit f9b8156

File tree

7 files changed

+103
-99
lines changed

7 files changed

+103
-99
lines changed

commits_parser.py

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import csv
1+
from utils import logger
22
import pytz
33
from time import sleep
44
from github import Github, Repository, GithubException, PullRequest
@@ -18,16 +18,6 @@
1818
)
1919

2020

21-
def log_commit_to_csv(info, csv_name):
22-
with open(csv_name, 'a', newline='') as file:
23-
writer = csv.DictWriter(file, fieldnames=FIELDNAMES)
24-
writer.writerow(info)
25-
26-
27-
def log_commit_to_stdout(info):
28-
print(info)
29-
30-
3121
def log_repository_commits(repository: Repository, csv_name, start, finish, branch):
3222
branches = []
3323
match branch:
@@ -63,25 +53,24 @@ def log_repository_commits(repository: Repository, csv_name, start, finish, bran
6353
]
6454
info = dict(zip(FIELDNAMES, commit_data))
6555

66-
log_commit_to_csv(info, csv_name)
67-
log_commit_to_stdout(info)
56+
logger.log_to_csv(csv_name, FIELDNAMES, info)
57+
logger.log_to_stdout(info)
58+
6859
sleep(TIMEDELTA)
6960

7061

7162
def log_commits(
7263
client: Github, working_repos, csv_name, start, finish, branch, fork_flag
7364
):
74-
with open(csv_name, 'w', newline='') as file:
75-
writer = csv.writer(file)
76-
writer.writerow(FIELDNAMES)
65+
logger.log_to_csv(csv_name, FIELDNAMES)
7766

7867
for repo in working_repos:
7968
try:
80-
print('=' * 20, repo.full_name, '=' * 20)
69+
logger.log_title(repo.full_name)
8170
log_repository_commits(repo, csv_name, start, finish, branch)
8271
if fork_flag:
8372
for forked_repo in repo.get_forks():
84-
print('=' * 20, "FORKED:", forked_repo.full_name, '=' * 20)
73+
logger.log_title("FORKED:", forked_repo.full_name)
8574
log_repository_commits(forked_repo, csv_name, start, finish, branch)
8675
sleep(TIMEDELTA)
8776
sleep(TIMEDELTA)

contributors_parser.py

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import csv
1+
from utils import logger
22
from time import sleep
33
from typing import Generator
44
from github import Github, Repository, GithubException
@@ -22,16 +22,6 @@
2222
)
2323

2424

25-
def log_contributors_to_csv(info: dict, csv_name: str):
26-
with open(csv_name, 'a', newline='') as file:
27-
writer = csv.DictWriter(file, fieldnames=FIELDNAMES)
28-
writer.writerow(info)
29-
30-
31-
def log_contributors_to_stdout(info: dict):
32-
print(info)
33-
34-
3525
def log_repository_contributors(repository: Repository, csv_name: str):
3626
contributors_stats = get_contributors_stats(repository)
3727

@@ -56,8 +46,8 @@ def log_repository_contributors(repository: Repository, csv_name: str):
5646
'site_admin': contributor.site_admin,
5747
}
5848

59-
log_contributors_to_csv(info_tmp, csv_name)
60-
log_contributors_to_stdout(info_tmp)
49+
logger.log_to_csv(csv_name, FIELDNAMES, info_tmp)
50+
logger.log_to_stdout(info_tmp)
6151

6252
sleep(TIMEDELTA)
6353

@@ -85,18 +75,16 @@ def get_contributors_stats(repository: Repository) -> dict:
8575
def log_contributors(
8676
client: Github, working_repos: Generator, csv_name: str, fork_flag: bool
8777
):
88-
with open(csv_name, 'w', newline='') as file:
89-
writer = csv.writer(file)
90-
writer.writerow(FIELDNAMES)
78+
logger.log_to_csv(csv_name, FIELDNAMES)
9179

9280
for repo in working_repos:
9381
try:
94-
print('=' * 20, repo.full_name, '=' * 20)
82+
logger.log_title(repo.full_name)
9583
log_repository_contributors(repo, csv_name)
9684

9785
if fork_flag:
9886
for forked_repo in repo.get_forks():
99-
print('=' * 20, "FORKED:", forked_repo.full_name, '=' * 20)
87+
logger.log_title("FORKED:", forked_repo.full_name)
10088
log_repository_contributors(forked_repo, csv_name)
10189
sleep(TIMEDELTA)
10290

invites_parser.py

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
1-
import csv
2-
import pytz
3-
import requests
4-
import json
1+
from utils import logger
52
from time import sleep
63
from github import Github, Repository, GithubException, PullRequest
7-
import csv
84

95
FIELDNAMES = (
106
'repository name',
117
'invited login',
128
'invite creation date',
139
'invitation url',
1410
)
11+
TIMEDELTA = 0.05
1512

1613

1714
def log_inviter(repo, invite, writer):
@@ -25,16 +22,26 @@ def log_inviter(repo, invite, writer):
2522
print(invite_info)
2623

2724

28-
def log_invitations(client: Github, working_repos, csv_name, timedelta=1):
29-
with open(csv_name, 'w', newline='') as file:
30-
writer = csv.writer(file)
31-
writer.writerow(FIELDNAMES)
32-
for repo in working_repos:
33-
print('=' * 20, repo.full_name, '=' * 20)
34-
invitations = repo.get_pending_invitations()
35-
for invite in invitations:
36-
try:
37-
log_inviter(repo, invite, writer)
38-
sleep(timedelta)
39-
except Exception as e:
40-
print(e)
25+
def log_repository_invitations(repository: Repository, csv_name):
26+
invitations = repository.get_pending_invitations()
27+
for invite in invitations:
28+
invite_info = {
29+
'repository name': repository.full_name,
30+
'invited login': invite.invitee.login,
31+
'invite creation date': invite.created_at.strftime("%d/%m/%Y, %H:%M:%S"),
32+
'invitation url': invite.html_url,
33+
}
34+
logger.log_to_csv(csv_name, FIELDNAMES, invite_info)
35+
logger.log_to_stdout(invite_info)
36+
sleep(TIMEDELTA)
37+
38+
39+
def log_invitations(client: Github, working_repos, csv_name):
40+
logger.log_to_csv(csv_name, FIELDNAMES)
41+
42+
for repo in working_repos:
43+
logger.log_title(repo.full_name)
44+
try:
45+
log_repository_invitations(repo, csv_name)
46+
except Exception as e:
47+
print(e)

issues_parser.py

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import csv
1+
from utils import logger
22
import pytz
33
import requests
44
import json
@@ -35,16 +35,6 @@
3535
)
3636

3737

38-
def log_issue_to_csv(info, csv_name):
39-
with open(csv_name, 'a', newline='') as file:
40-
writer = csv.DictWriter(file, fieldnames=FIELDNAMES)
41-
writer.writerow(info)
42-
43-
44-
def log_issue_to_stdout(info):
45-
print(info)
46-
47-
4838
def get_connected_pulls(issue_number, repo_owner, repo_name, token):
4939
access_token = token
5040
repo_owner = repo_owner.login
@@ -172,26 +162,26 @@ def log_repository_issues(repository: Repository, csv_name, token, start, finish
172162
info['comment author name'] = comment.user.name
173163
info['comment author login'] = comment.user.login
174164
info['comment author email'] = comment.user.email
175-
log_issue_to_csv(info, csv_name)
176-
log_issue_to_stdout(info)
165+
166+
logger.log_to_csv(csv_name, FIELDNAMES, info)
167+
logger.log_to_stdout(info)
177168
else:
178-
log_issue_to_csv(info_tmp, csv_name)
179-
log_issue_to_stdout(info_tmp)
169+
logger.log_to_csv(csv_name, FIELDNAMES, info_tmp)
170+
logger.log_to_stdout(info_tmp)
171+
180172
sleep(TIMEDELTA)
181173

182174

183175
def log_issues(client: Github, working_repo, csv_name, token, start, finish, fork_flag):
184-
with open(csv_name, 'w', newline='') as file:
185-
writer = csv.writer(file)
186-
writer.writerow(FIELDNAMES)
176+
logger.log_to_csv(csv_name, FIELDNAMES)
187177

188178
for repo in working_repo:
189179
try:
190-
print('=' * 20, repo.full_name, '=' * 20)
180+
logger.log_title(repo.full_name)
191181
log_repository_issues(repo, csv_name, token, start, finish)
192182
if fork_flag:
193183
for forked_repo in repo.get_forks():
194-
print('=' * 20, "FORKED:", forked_repo.full_name, '=' * 20)
184+
logger.log_title("FORKED:", forked_repo.full_name)
195185
log_repository_issues(forked_repo, csv_name, token, start, finish)
196186
sleep(TIMEDELTA)
197187
sleep(TIMEDELTA)

main.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import contributors_parser
1313

1414

15-
1615
def parse_args():
1716
parser = argparse.ArgumentParser()
1817
parser.add_argument("--invites", help="print pending invites", action="store_true")
@@ -140,10 +139,9 @@ def main():
140139
print(e)
141140
else:
142141
working_repos = git_logger.get_next_repo(client, repositories)
143-
if args.start:
144-
start = parse_time(args.start.split('-'))
145-
if args.finish:
146-
finish = parse_time(args.finish.split('-'))
142+
start = parse_time(args.start.split('-'))
143+
finish = parse_time(args.finish.split('-'))
144+
147145
if args.commits:
148146
commits_parser.log_commits(
149147
client, working_repos, csv_name, start, finish, args.branch, fork_flag

pull_requests_parser.py

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import csv
1+
from utils import logger
22
import pytz
33
import requests
44
import json
@@ -38,16 +38,6 @@
3838
)
3939

4040

41-
def log_pr_to_stdout(info):
42-
print(info)
43-
44-
45-
def log_pr_to_csv(info, csv_name):
46-
with open(csv_name, 'a', newline='') as file:
47-
writer = csv.DictWriter(file, fieldnames=FIELDNAMES)
48-
writer.writerow(info)
49-
50-
5141
def get_related_issues(pull_request_number, repo_owner, repo_name, token):
5242
access_token = token
5343
repo_owner = repo_owner.login
@@ -161,11 +151,12 @@ def log_repositories_pr(
161151
info['comment author name'] = comment.user.name
162152
info['comment author login'] = comment.user.login
163153
info['comment author email'] = nvl(comment.user.email)
164-
log_pr_to_csv(info, csv_name)
165-
log_pr_to_stdout(info)
154+
155+
logger.log_to_csv(csv_name, FIELDNAMES, info)
156+
logger.log_to_stdout(info)
166157
else:
167-
log_pr_to_csv(info_tmp, csv_name)
168-
log_pr_to_stdout(info_tmp)
158+
logger.log_to_csv(csv_name, FIELDNAMES, info_tmp)
159+
logger.log_to_stdout(info_tmp)
169160
sleep(TIMEDELTA)
170161

171162

@@ -179,17 +170,15 @@ def log_pull_requests(
179170
fork_flag,
180171
log_comments=False,
181172
):
182-
with open(csv_name, 'w', newline='') as file:
183-
writer = csv.writer(file)
184-
writer.writerow(FIELDNAMES)
173+
logger.log_to_csv(csv_name, FIELDNAMES)
185174

186175
for repo in working_repos:
187176
try:
188-
print('=' * 20, repo.full_name, '=' * 20)
177+
logger.log_title(repo.full_name)
189178
log_repositories_pr(repo, csv_name, token, start, finish)
190179
if fork_flag:
191180
for forked_repo in repo.get_forks():
192-
print('=' * 20, "FORKED:", forked_repo.full_name, '=' * 20)
181+
logger.log_title("FORKED:", forked_repo.full_name)
193182
log_repositories_pr(
194183
forked_repo, csv_name, token, start, finish, log_comments
195184
)

utils.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import csv
2+
3+
TITLE_LEN = 80
4+
MIN_SIDE_PADDING = 4
5+
SIDE_WHITE_SPACES = 1
6+
7+
8+
class logger:
9+
@staticmethod
10+
def log_title(title: str, title_len: int = TITLE_LEN):
11+
final_len = max(
12+
title_len, len(title) + MIN_SIDE_PADDING * 2 + SIDE_WHITE_SPACES * 2
13+
)
14+
15+
print(
16+
f"{SIDE_WHITE_SPACES * ' ' + title + ' ' * SIDE_WHITE_SPACES:=^{final_len}}"
17+
)
18+
19+
@staticmethod
20+
def log_to_csv(csv_name: str, field_names: tuple[str], row: dict | None = None):
21+
if isinstance(row, dict):
22+
with open(csv_name, 'a', newline='') as file:
23+
writer = csv.DictWriter(file, fieldnames=field_names)
24+
writer.writerow(row)
25+
elif row is None:
26+
with open(csv_name, 'w', newline='') as file:
27+
writer = csv.writer(file)
28+
writer.writerow(field_names)
29+
else:
30+
raise TypeError(f"row has type {type(row)} but must be [ dict | None ]")
31+
32+
@staticmethod
33+
def log_to_stdout(info: dict):
34+
print(info)
35+
36+
@staticmethod
37+
def log_error(error: str):
38+
# или использовать logging, как в interface_wrapper
39+
pass
40+
41+
@staticmethod
42+
def log_warning(warning: str):
43+
pass

0 commit comments

Comments
 (0)