Skip to content

Commit a4b8629

Browse files
committed
Refactor code for improved readability and consistency by removing unnecessary line breaks and adjusting line length in configuration
1 parent 356431d commit a4b8629

File tree

9 files changed

+51
-145
lines changed

9 files changed

+51
-145
lines changed

gitlab_bot.py

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
from dotenv import load_dotenv
1818
from gidgetlab.aiohttp import GitLabBot
1919

20-
load_dotenv() # isort:skip
21-
2220
from src.config import (
2321
bot_gitlab_token,
2422
bot_gitlab_url,
@@ -31,9 +29,9 @@
3129
from src.merge_request_hook import MergeRequestHooks
3230
from src.note_hook import NoteHooks
3331

34-
bot = GitLabBot(
35-
bot_gitlab_username, url=bot_gitlab_url, access_token=bot_gitlab_token
36-
)
32+
load_dotenv() # isort:skip
33+
34+
bot = GitLabBot(bot_gitlab_username, url=bot_gitlab_url, access_token=bot_gitlab_token)
3735

3836
issue_hooks = IssueHooks()
3937
merge_request_hooks = MergeRequestHooks()
@@ -67,33 +65,25 @@ async def note_issue_event(event, gl, *args, **kwargs):
6765
@bot.router.register("Merge Request Hook", action="open")
6866
async def merge_request_opened_event(event, gl, *args, **kwargs):
6967
if not ignore_event(event):
70-
await merge_request_hooks.merge_request_opened_event(
71-
event, gl, args, kwargs
72-
)
68+
await merge_request_hooks.merge_request_opened_event(event, gl, args, kwargs)
7369

7470

7571
@bot.router.register("Merge Request Hook", action="update")
7672
async def merge_request_updated_event(event, gl, *args, **kwargs):
7773
if not ignore_event(event):
78-
await merge_request_hooks.merge_request_updated_event(
79-
event, gl, args, kwargs
80-
)
74+
await merge_request_hooks.merge_request_updated_event(event, gl, args, kwargs)
8175

8276

8377
@bot.router.register("Merge Request Hook", action="reopen")
8478
async def merge_request_reopen_event(event, gl, *args, **kwargs):
8579
if not ignore_event(event):
86-
await merge_request_hooks.merge_request_reopen_event(
87-
event, gl, args, kwargs
88-
)
80+
await merge_request_hooks.merge_request_reopen_event(event, gl, args, kwargs)
8981

9082

9183
@bot.router.register("Note Hook", noteable_type="MergeRequest")
9284
async def note_merge_request_event(event, gl, *args, **kwargs):
9385
if not ignore_event(event):
94-
await merge_request_hooks.note_merge_request_event(
95-
event, gl, args, kwargs
96-
)
86+
await merge_request_hooks.note_merge_request_event(event, gl, args, kwargs)
9787

9888

9989
@bot.router.register("Note Hook", noteable_type="Commit")
@@ -114,9 +104,7 @@ def ignore_event(event) -> bool:
114104
if username != bot_gitlab_username:
115105
return False
116106
else:
117-
logging.info(
118-
"Ignore event: %s triggered by admin", event.data["event_type"]
119-
)
107+
logging.info("Ignore event: %s triggered by admin", event.data["event_type"])
120108
return True
121109

122110

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ coverage = "7.2.7"
4040
pytest-cov = "4.1.0"
4141

4242
[tool.ruff]
43-
line-length = 79
43+
line-length = 120
4444
fix = true
4545
target-version = "py39"
4646

src/config.py

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@
1717
from dotenv import load_dotenv
1818

1919
load_dotenv() # isort:skip
20-
DEFAULT_BOT_GIT_COMMIT_SUBJECT_REGEX_VALUE = (
21-
"^(fix|feat|docs|style|refactor|test|chore|build|ci): .*$"
22-
)
20+
DEFAULT_BOT_GIT_COMMIT_SUBJECT_REGEX_VALUE = "^(fix|feat|docs|style|refactor|test|chore|build|ci): .*$"
2321
DEFAULT_BOT_GIT_COMMIT_SUBJECT_EXAMPLES_MARKDOWN_VALUE = """
2422
* feat: Add authentication module
2523
* fix: Resolve issue with login not working
@@ -94,9 +92,7 @@
9492
).lower()
9593
== "true"
9694
)
97-
bot_git_commit_subject_regex = os.getenv(
98-
"BOT_GIT_COMMIT_SUBJECT_REGEX", DEFAULT_BOT_GIT_COMMIT_SUBJECT_REGEX_VALUE
99-
)
95+
bot_git_commit_subject_regex = os.getenv("BOT_GIT_COMMIT_SUBJECT_REGEX", DEFAULT_BOT_GIT_COMMIT_SUBJECT_REGEX_VALUE)
10096
bot_git_commit_subject_example_markdown = os.getenv(
10197
"BOT_GIT_COMMIT_SUBJECT_EXAMPLES_MARKDOWN",
10298
DEFAULT_BOT_GIT_COMMIT_SUBJECT_EXAMPLES_MARKDOWN_VALUE,
@@ -131,13 +127,9 @@
131127
== "true"
132128
)
133129
# gitlab merge request summary
134-
bot_gitlab_merge_request_summary_language = os.getenv(
135-
"BOT_GITLAB_MERGE_REQUEST_SUMMARY_LANGUAGE", "English"
136-
)
130+
bot_gitlab_merge_request_summary_language = os.getenv("BOT_GITLAB_MERGE_REQUEST_SUMMARY_LANGUAGE", "English")
137131

138-
bot_gitlab_merge_request_summary_prompt_rule = os.getenv(
139-
"BOT_GITLAB_MERGE_REQUEST_SUMMARY_PROMPT_RULE", None
140-
)
132+
bot_gitlab_merge_request_summary_prompt_rule = os.getenv("BOT_GITLAB_MERGE_REQUEST_SUMMARY_PROMPT_RULE", None)
141133

142134
# gitlab merge request email username not match check
143135
bot_gitlab_merge_request_email_username_not_match_enabled = (

src/i18n.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,5 @@
1818
from src.config import bot_language
1919

2020
localedir = os.path.join(os.path.abspath(os.path.dirname(__file__)), "locales")
21-
translate = gettext.translation(
22-
"gitlab-bot", localedir, fallback=True, languages=[bot_language]
23-
)
21+
translate = gettext.translation("gitlab-bot", localedir, fallback=True, languages=[bot_language])
2422
_ = translate.gettext

src/issue_hook.py

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -39,34 +39,22 @@ async def parse_milestone_release_note(event, gl):
3939
match = re.search(pattern, note)
4040
if match:
4141
milestone_name = match.group(1)
42-
milestones_query_url = (
43-
f"/projects/{project_id}/milestones?title={milestone_name}"
44-
)
42+
milestones_query_url = f"/projects/{project_id}/milestones?title={milestone_name}"
4543
milestones = await gl.getitem(milestones_query_url)
4644
if len(milestones) == 1:
4745
milestone_id = milestones[0]["id"]
48-
query_merge_requests_by_milestone_url = f"/projects/{project_id}/milestones/{milestone_id}/merge_requests"
49-
merge_requests = await gl.getitem(
50-
query_merge_requests_by_milestone_url
46+
query_merge_requests_by_milestone_url = (
47+
f"/projects/{project_id}/milestones/{milestone_id}/merge_requests"
5148
)
49+
merge_requests = await gl.getitem(query_merge_requests_by_milestone_url)
5250
notes = []
5351
for merge_request in merge_requests:
54-
notes.append(
55-
f"* [{merge_request['title']}]({merge_request['web_url']})\n"
56-
)
57-
message = _("milestone_release_note").format(
58-
milestone=milestone_name, notes="".join(notes)
59-
)
52+
notes.append(f"* [{merge_request['title']}]({merge_request['web_url']})\n")
53+
message = _("milestone_release_note").format(milestone=milestone_name, notes="".join(notes))
6054
else:
61-
message = _("milestone_not_found").format(
62-
milestone=milestone_name
63-
)
55+
message = _("milestone_not_found").format(milestone=milestone_name)
6456
else:
65-
raise Exception(
66-
_("invalid_bot_action").format(
67-
action="/bot-release-note 1.0.0"
68-
)
69-
)
57+
raise Exception(_("invalid_bot_action").format(action="/bot-release-note 1.0.0"))
7058
except Exception as e:
7159
message = str(e)
7260

@@ -80,9 +68,7 @@ async def automatically_mark_label_outdated_issues(event, gl, days_ago=14):
8068
# get all issues updated before N days ago
8169
date_days_ago = datetime.now() - timedelta(days=days_ago)
8270
updated_before = date_days_ago.strftime("%Y-%m-%d")
83-
old_issues = await gl.getitem(
84-
f"/projects/{project_id}/issues?state=opened&updated_before={updated_before}"
85-
)
71+
old_issues = await gl.getitem(f"/projects/{project_id}/issues?state=opened&updated_before={updated_before}")
8672
outdated_issue_label = "Outdated"
8773
if len(old_issues) > 0:
8874
for issue in old_issues:

src/llm.py

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,7 @@
3636

3737
AI = None
3838

39-
if (
40-
model_name is not None
41-
and openai_api_key is not None
42-
and openai_api_base is not None
43-
and AI_PROVIDER == "openai"
44-
):
39+
if model_name is not None and openai_api_key is not None and openai_api_base is not None and AI_PROVIDER == "openai":
4540
AI = ChatOpenAI(
4641
openai_api_base=openai_api_base,
4742
openai_api_key=openai_api_key,
@@ -51,11 +46,7 @@
5146
max_retries=2,
5247
)
5348

54-
if (
55-
google_api_key is not None
56-
and model_name is not None
57-
and AI_PROVIDER == "google"
58-
):
49+
if google_api_key is not None and model_name is not None and AI_PROVIDER == "google":
5950
AI = ChatGoogleGenerativeAI(model=model_name)
6051

6152
if (

src/merge_request_hook.py

Lines changed: 20 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,7 @@ def check_commit_message(commit_msg):
5858
return
5959
if len(commit_msg) > bot_git_commit_subject_max_length:
6060
raise Exception(
61-
_("commit_subject_max_length").format(
62-
commit_subject_max_length=bot_git_commit_subject_max_length
63-
)
61+
_("commit_subject_max_length").format(commit_subject_max_length=bot_git_commit_subject_max_length)
6462
)
6563
if commit_msg.startswith("Merge branch "):
6664
return
@@ -96,10 +94,7 @@ def check_email(commit_author_name, commit_author_email):
9694
gitlab_email_domain=bot_git_email_domain,
9795
)
9896
)
99-
if (
100-
bot_gitlab_merge_request_email_username_not_match_enabled
101-
and username != commit_author_name
102-
):
97+
if bot_gitlab_merge_request_email_username_not_match_enabled and username != commit_author_name:
10398
raise Exception(
10499
_("email_username_not_match").format(
105100
commit_author_name=commit_author_name,
@@ -115,9 +110,7 @@ async def generate_diff_description_summary(event, gl):
115110
iid = event.data["object_attributes"]["iid"]
116111
change_event = event.data["changes"]
117112
if not change_event:
118-
logging.debug(
119-
"MR has no code changes, AI Summary generation skipped..."
120-
)
113+
logging.debug("MR has no code changes, AI Summary generation skipped...")
121114
return None
122115

123116
if bot_gitlab_merge_request_summary_enabled and AI is not None:
@@ -126,25 +119,17 @@ async def generate_diff_description_summary(event, gl):
126119
logging.debug("AI Summary not found, generating...")
127120
try:
128121
# Support 15.7+
129-
diff_url = (
130-
f"/projects/{project_id}/merge_requests/{iid}/diffs"
131-
)
122+
diff_url = f"/projects/{project_id}/merge_requests/{iid}/diffs"
132123
diffs = await gl.getitem(diff_url)
133124
except Exception as e:
134-
logging.warning(
135-
"Calling API /diffs error, trying to call /changes", e
136-
)
137-
diff_url = (
138-
f"/projects/{project_id}/merge_requests/{iid}/changes"
139-
)
125+
logging.warning("Calling API /diffs error, trying to call /changes", e)
126+
diff_url = f"/projects/{project_id}/merge_requests/{iid}/changes"
140127
changes = await gl.getitem(diff_url)
141128
diffs = changes["changes"]
142129

143130
response_summary = ai_diffs_summary(diffs)
144131

145-
merge_request_post_note_url = (
146-
f"/projects/{project_id}/merge_requests/{iid}/notes"
147-
)
132+
merge_request_post_note_url = f"/projects/{project_id}/merge_requests/{iid}/notes"
148133
await gl.post(
149134
merge_request_post_note_url,
150135
data={"body": response_summary},
@@ -154,10 +139,7 @@ async def generate_diff_description_summary(event, gl):
154139
logging.debug("AI Summary found, skipping...")
155140

156141
# Add AI Review status label if not exists
157-
if (
158-
bot_gitlab_merge_request_aireview_label_enabled
159-
and not has_ai_review_label(labels)
160-
):
142+
if bot_gitlab_merge_request_aireview_label_enabled and not has_ai_review_label(labels):
161143
await update_status_label(
162144
gl,
163145
project_id,
@@ -171,9 +153,7 @@ async def generate_diff_description_summary(event, gl):
171153
logging.error(e)
172154
raise e
173155
else:
174-
logging.debug(
175-
"AI Summary generation feature is disabled or AI feature is not available."
176-
)
156+
logging.debug("AI Summary generation feature is disabled or AI feature is not " "available.")
177157
# Remove AI Review status label
178158
await update_status_label(
179159
gl,
@@ -189,32 +169,22 @@ async def check_commit(event, gl):
189169
project_id = event.project_id
190170
if event.data["event_type"] == "note":
191171
commit_title = event.data["merge_request"]["last_commit"]["title"]
192-
commit_author_name = event.data["merge_request"]["last_commit"][
193-
"author"
194-
]["name"]
195-
commit_author_email = event.data["merge_request"]["last_commit"][
196-
"author"
197-
]["email"]
172+
commit_author_name = event.data["merge_request"]["last_commit"]["author"]["name"]
173+
commit_author_email = event.data["merge_request"]["last_commit"]["author"]["email"]
198174
iid = event.data["merge_request"]["iid"]
199175
milestone_id = event.data["merge_request"]["milestone_id"]
200176
# source_branch = event.data["merge_request"]["source_branch"]
201177
description = event.data["merge_request"]["description"]
202178
elif event.data["event_type"] == "merge_request":
203179
commit_title = event.data["object_attributes"]["last_commit"]["title"]
204-
commit_author_name = event.data["object_attributes"]["last_commit"][
205-
"author"
206-
]["name"]
207-
commit_author_email = event.data["object_attributes"]["last_commit"][
208-
"author"
209-
]["email"]
180+
commit_author_name = event.data["object_attributes"]["last_commit"]["author"]["name"]
181+
commit_author_email = event.data["object_attributes"]["last_commit"]["author"]["email"]
210182
iid = event.data["object_attributes"]["iid"]
211183
milestone_id = event.data["object_attributes"]["milestone_id"]
212184
# source_branch = event.data["object_attributes"]["source_branch"]
213185
description = event.data["object_attributes"]["description"]
214186

215-
merge_request_post_note_url = (
216-
f"/projects/{project_id}/merge_requests/{iid}/notes"
217-
)
187+
merge_request_post_note_url = f"/projects/{project_id}/merge_requests/{iid}/notes"
218188
try:
219189
check_email(commit_author_name, commit_author_email)
220190
check_commit_message(commit_title)
@@ -246,9 +216,7 @@ async def check_commit(event, gl):
246216

247217

248218
async def approval_merge_request(project_id, iid, gl):
249-
query_approvals_url = (
250-
f"/projects/{project_id}/merge_requests/{iid}/approvals"
251-
)
219+
query_approvals_url = f"/projects/{project_id}/merge_requests/{iid}/approvals"
252220
approvals = gl.getitem(query_approvals_url)
253221
bot_approved = False
254222
if approvals.approved:
@@ -257,9 +225,7 @@ async def approval_merge_request(project_id, iid, gl):
257225
bot_approved = True
258226
return
259227
if not bot_approved:
260-
await gl.post(
261-
f"/projects/{project_id}/merge_requests/{iid}/approve", data=None
262-
)
228+
await gl.post(f"/projects/{project_id}/merge_requests/{iid}/approve", data=None)
263229

264230

265231
def is_opened_merge_request(event):
@@ -270,9 +236,7 @@ def is_opened_merge_request(event):
270236
return merge_request_state == "opened"
271237

272238

273-
async def update_status_label(
274-
gl, pid, mr_iid, label, current_labels, action=StatusLabelAction.Add
275-
):
239+
async def update_status_label(gl, pid, mr_iid, label, current_labels, action=StatusLabelAction.Add):
276240
if not is_status_label(label):
277241
logging.error(f"Label '{label}' is not a valid status label")
278242
return False, None
@@ -282,18 +246,14 @@ async def update_status_label(
282246
to_update.append(label)
283247
logging.debug(f"Adding status label '{label}' to MR {mr_iid}")
284248
else:
285-
logging.debug(
286-
f"Status label '{label}' already exists in MR {mr_iid}"
287-
)
249+
logging.debug(f"Status label '{label}' already exists in MR {mr_iid}")
288250
return False, None
289251
elif action == StatusLabelAction.Remove:
290252
if label in to_update:
291253
to_update.remove(label)
292254
logging.debug(f"Removing status label '{label}' from MR {mr_iid}")
293255
else:
294-
logging.debug(
295-
f"Status label '{label}' does not exist in MR {mr_iid}"
296-
)
256+
logging.debug(f"Status label '{label}' does not exist in MR {mr_iid}")
297257
return False, None
298258
else:
299259
logging.error(f"Invalid action '{action}' for updating status label")
@@ -315,9 +275,7 @@ def is_status_label(label):
315275

316276

317277
def has_ai_review(description, labels):
318-
if bot_gitlab_merge_request_aireview_label_enabled and has_ai_review_label(
319-
labels
320-
):
278+
if bot_gitlab_merge_request_aireview_label_enabled and has_ai_review_label(labels):
321279
return True
322280
if has_ai_summary_description(description):
323281
return True

0 commit comments

Comments
 (0)