Skip to content

Commit 962457d

Browse files
committed
changed calls that were present in api
1 parent f9b8156 commit 962457d

File tree

7 files changed

+154
-104
lines changed

7 files changed

+154
-104
lines changed

.DS_Store

6 KB
Binary file not shown.

commits_parser.py

Lines changed: 38 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
from utils import logger
22
import pytz
33
from time import sleep
4-
from github import Github, Repository, GithubException, PullRequest
4+
from github import Github, Repository
5+
import GitHubRepoAPI # Импортируем обёртку
56

67
EMPTY_FIELD = 'Empty field'
78
TIMEDELTA = 0.05
@@ -17,12 +18,13 @@
1718
'branch',
1819
)
1920

20-
21-
def log_repository_commits(repository: Repository, csv_name, start, finish, branch):
21+
def log_repository_commits(client: Github, repository, csv_name, start, finish, branch):
2222
branches = []
2323
match branch:
2424
case 'all':
25-
for branch in repository.get_branches():
25+
api = GitHubRepoAPI(client)
26+
branches = api.get_branches(repository)
27+
for branch in branches:
2628
branches.append(branch.name)
2729
case None:
2830
branches.append(repository.default_branch)
@@ -31,45 +33,52 @@ def log_repository_commits(repository: Repository, csv_name, start, finish, bran
3133

3234
for branch in branches:
3335
print(f'Processing branch {branch}')
34-
# TODO add support of since and until in https://pygithub.readthedocs.io/en/stable/github_objects/Repository.html#github.Repository.Repository.get_commits
35-
for commit in repository.get_commits(sha=branch):
36+
# Используем обёртку для получения коммитов
37+
api = GitHubRepoAPI(repository._github)
38+
commits = api.get_commits(repository)
39+
for commit in commits:
3640
if (
37-
commit.commit.author.date.astimezone(pytz.timezone(TIMEZONE)) < start
38-
or commit.commit.author.date.astimezone(pytz.timezone(TIMEZONE))
39-
> finish
41+
commit.date.astimezone(pytz.timezone(TIMEZONE)) < start
42+
or commit.date.astimezone(pytz.timezone(TIMEZONE)) > finish
4043
):
4144
continue
42-
if commit.commit is not None:
43-
nvl = lambda val: val or EMPTY_FIELD
44-
commit_data = [
45-
repository.full_name,
46-
commit.commit.author.name,
47-
nvl(commit.author.login if commit.author else None),
48-
nvl(commit.commit.author.email),
49-
commit.commit.author.date,
50-
'; '.join([file.filename for file in commit.files]),
51-
commit.commit.sha,
52-
branch,
53-
]
54-
info = dict(zip(FIELDNAMES, commit_data))
55-
56-
logger.log_to_csv(csv_name, FIELDNAMES, info)
57-
logger.log_to_stdout(info)
45+
commit_data = [
46+
repository.full_name,
47+
commit.author.username,
48+
commit.author.email or EMPTY_FIELD,
49+
commit.date,
50+
'; '.join([file.filename for file in commit.files]),
51+
commit._id,
52+
branch,
53+
]
54+
info = dict(zip(FIELDNAMES, commit_data))
5855

59-
sleep(TIMEDELTA)
56+
logger.log_to_csv(csv_name, FIELDNAMES, info)
57+
logger.log_to_stdout(info)
6058

59+
sleep(TIMEDELTA)
6160

6261
def log_commits(
6362
client: Github, working_repos, csv_name, start, finish, branch, fork_flag
6463
):
6564
logger.log_to_csv(csv_name, FIELDNAMES)
6665

67-
for repo in working_repos:
66+
api = GitHubRepoAPI(client) # Используем обёртку
67+
68+
for repo_name in working_repos:
6869
try:
69-
logger.log_title(repo.full_name)
70+
# Получаем репозиторий через обёртку
71+
repo = api.get_repository(repo_name)
72+
if not repo:
73+
print(f"Repository {repo_name} not found or access denied.")
74+
continue
75+
76+
logger.log_title(repo.name)
7077
log_repository_commits(repo, csv_name, start, finish, branch)
7178
if fork_flag:
72-
for forked_repo in repo.get_forks():
79+
# Получаем форки через оригинальный метод, так как его нет в обёртке(Нужно добавить)
80+
forked_repos = client.get_repo(repo._id).get_forks()
81+
for forked_repo in forked_repos:
7382
logger.log_title("FORKED:", forked_repo.full_name)
7483
log_repository_commits(forked_repo, csv_name, start, finish, branch)
7584
sleep(TIMEDELTA)

contributors_parser.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from time import sleep
33
from typing import Generator
44
from github import Github, Repository, GithubException
5+
import GitHubRepoAPI # Импортируем обёртку
56

67
EMPTY_FIELD = 'Empty field'
78
TIMEDELTA = 0.05
@@ -21,14 +22,15 @@
2122
'site_admin',
2223
)
2324

24-
2525
def log_repository_contributors(repository: Repository, csv_name: str):
26+
#Нужно добавить
2627
contributors_stats = get_contributors_stats(repository)
2728

2829
nvl = lambda val: val or EMPTY_FIELD
2930

3031
for contributor_stat in contributors_stats.values():
3132
contributor = contributor_stat["contributor_object"]
33+
#Нужно добавить
3234
contributor_permissons = repository.get_collaborator_permission(contributor)
3335

3436
info_tmp = {
@@ -51,11 +53,14 @@ def log_repository_contributors(repository: Repository, csv_name: str):
5153

5254
sleep(TIMEDELTA)
5355

54-
5556
def get_contributors_stats(repository: Repository) -> dict:
5657
contributors_stats = dict()
5758

58-
for commit in repository.get_commits():
59+
# Используем обёртку для получения коммитов
60+
api = GitHubRepoAPI(repository._github)
61+
commits = api.get_commits(repository)
62+
63+
for commit in commits:
5964
contributor = commit.author
6065

6166
if not contributor.login in contributors_stats:
@@ -71,23 +76,25 @@ def get_contributors_stats(repository: Repository) -> dict:
7176

7277
return contributors_stats
7378

74-
7579
def log_contributors(
7680
client: Github, working_repos: Generator, csv_name: str, fork_flag: bool
7781
):
7882
logger.log_to_csv(csv_name, FIELDNAMES)
7983

84+
api = GitHubRepoAPI(client) # Используем обёртку
85+
8086
for repo in working_repos:
8187
try:
8288
logger.log_title(repo.full_name)
8389
log_repository_contributors(repo, csv_name)
8490

8591
if fork_flag:
92+
#Нужно добавить
8693
for forked_repo in repo.get_forks():
8794
logger.log_title("FORKED:", forked_repo.full_name)
8895
log_repository_contributors(forked_repo, csv_name)
8996
sleep(TIMEDELTA)
9097

9198
except GithubException as e:
9299
print(e)
93-
exit(1)
100+
exit(1)

git_logger.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,45 @@
1-
from github import Github, GithubException, PullRequest
21
from time import sleep
2+
from github import Github, GithubException, PullRequest
3+
import GitHubRepoAPI # Импортируем обёртку
34

45
TIMEDELTA = 0.05
56
TIMEZONE = 'Europe/Moscow'
67

7-
88
def login(token):
99
client = Github(login_or_token=token)
1010

1111
try:
12-
client.get_user().login
12+
# Проверяем аутентификацию через оригинальный метод(Нужно добавить)
13+
user_login = client.get_user().login
1314
except GithubException as err:
1415
print(f'Github: Connect: error {err.data}')
1516
print('Github: Connect: user could not be authenticated please try again.')
1617
exit(1)
1718
else:
1819
return client
1920

20-
2121
def get_next_repo(client: Github, repositories):
22+
api = GitHubRepoAPI(client) # Используем обёртку
2223
with open(repositories, 'r') as file:
2324
list_repos = [x for x in file.read().split('\n') if x]
2425
print(list_repos)
2526
for repo_name in list_repos:
2627
try:
27-
repo = client.get_repo(repo_name)
28+
# Получаем репозиторий через обёртку
29+
repo = api.get_repository(repo_name)
30+
if not repo:
31+
raise GithubException(status=404, data={"message": f"Repository {repo_name} not found."})
2832
except GithubException as err:
2933
print(f'Github: Connect: error {err.data}')
3034
print(f'Github: Connect: failed to load repository "{repo_name}"')
3135
exit(1)
3236
else:
3337
yield repo
3438

35-
3639
def get_assignee_story(github_object):
3740
assignee_result = ""
3841
events = (
42+
#Нужно добавить
3943
github_object.get_issue_events()
4044
if type(github_object) is PullRequest.PullRequest
4145
else github_object.get_events()
@@ -50,4 +54,4 @@ def get_assignee_story(github_object):
5054
assignee_result += "/"
5155
assignee_result += f"> {assignee}; "
5256
sleep(TIMEDELTA)
53-
return assignee_result
57+
return assignee_result

invites_parser.py

Lines changed: 52 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,56 @@
1-
from utils import logger
21
from time import sleep
3-
from github import Github, Repository, GithubException, PullRequest
2+
from github import Github, GithubException, PullRequest
3+
import GitHubRepoAPI # Импортируем обёртку
44

5-
FIELDNAMES = (
6-
'repository name',
7-
'invited login',
8-
'invite creation date',
9-
'invitation url',
10-
)
115
TIMEDELTA = 0.05
12-
13-
14-
def log_inviter(repo, invite, writer):
15-
invite_info = [
16-
repo.full_name,
17-
invite.invitee.login,
18-
invite.created_at.strftime("%d/%m/%Y, %H:%M:%S"),
19-
invite.html_url,
20-
]
21-
writer.writerow(invite_info)
22-
print(invite_info)
23-
24-
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)
6+
TIMEZONE = 'Europe/Moscow'
7+
8+
def login(token):
9+
client = Github(login_or_token=token)
10+
11+
try:
12+
# Проверяем аутентификацию через оригинальный метод
13+
user_login = client.get_user().login
14+
except GithubException as err:
15+
print(f'Github: Connect: error {err.data}')
16+
print('Github: Connect: user could not be authenticated please try again.')
17+
exit(1)
18+
else:
19+
return client
20+
21+
def get_next_repo(client: Github, repositories):
22+
api = GitHubRepoAPI(client) # Используем обёртку
23+
with open(repositories, 'r') as file:
24+
list_repos = [x for x in file.read().split('\n') if x]
25+
print(list_repos)
26+
for repo_name in list_repos:
4427
try:
45-
log_repository_invitations(repo, csv_name)
46-
except Exception as e:
47-
print(e)
28+
# Получаем репозиторий через обёртку
29+
repo = api.get_repository(repo_name)
30+
if not repo:
31+
raise GithubException(status=404, data={"message": f"Repository {repo_name} not found."})
32+
except GithubException as err:
33+
print(f'Github: Connect: error {err.data}')
34+
print(f'Github: Connect: failed to load repository "{repo_name}"')
35+
exit(1)
36+
else:
37+
yield repo
38+
39+
def get_assignee_story(github_object):
40+
assignee_result = ""
41+
events = (
42+
github_object.get_issue_events()
43+
if type(github_object) is PullRequest.PullRequest
44+
else github_object.get_events()
45+
)
46+
for event in events:
47+
if event.event in ["assigned", "unassigned"]:
48+
date = event.created_at
49+
assigner = github_object.user.login
50+
assignee = event.assignee.login
51+
assignee_result += f"{date}: {assigner} -"
52+
if event.event == "unassigned":
53+
assignee_result += "/"
54+
assignee_result += f"> {assignee}; "
55+
sleep(TIMEDELTA)
56+
return assignee_result

0 commit comments

Comments
 (0)