ultralytics-actions 0.0.24__tar.gz → 0.0.26__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ultralytics_actions-0.0.24/ultralytics_actions.egg-info → ultralytics_actions-0.0.26}/PKG-INFO +1 -1
- {ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/actions/__init__.py +1 -1
- {ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/actions/summarize_pr.py +57 -2
- {ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/actions/utils/github_utils.py +0 -2
- {ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26/ultralytics_actions.egg-info}/PKG-INFO +1 -1
- {ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/LICENSE +0 -0
- {ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/README.md +0 -0
- {ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/actions/first_interaction.py +0 -0
- {ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/actions/summarize_release.py +0 -0
- {ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/actions/update_markdown_code_blocks.py +0 -0
- {ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/actions/utils/__init__.py +0 -0
- {ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/actions/utils/common_utils.py +0 -0
- {ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/actions/utils/openai_utils.py +0 -0
- {ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/pyproject.toml +0 -0
- {ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/setup.cfg +0 -0
- {ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/ultralytics_actions.egg-info/SOURCES.txt +0 -0
- {ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/ultralytics_actions.egg-info/dependency_links.txt +0 -0
- {ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/ultralytics_actions.egg-info/entry_points.txt +0 -0
- {ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/ultralytics_actions.egg-info/requires.txt +0 -0
- {ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/ultralytics_actions.egg-info/top_level.txt +0 -0
{ultralytics_actions-0.0.24/ultralytics_actions.egg-info → ultralytics_actions-0.0.26}/PKG-INFO
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ultralytics-actions
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.26
|
4
4
|
Summary: Ultralytics Actions for GitHub automation and PR management.
|
5
5
|
Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>
|
6
6
|
Maintainer-email: Ultralytics <hello@ultralytics.com>
|
@@ -13,7 +13,7 @@ from .utils import (
|
|
13
13
|
get_pr_diff,
|
14
14
|
)
|
15
15
|
|
16
|
-
#
|
16
|
+
# Constants
|
17
17
|
SUMMARY_START = (
|
18
18
|
"## 🛠️ PR Summary\n\n<sub>Made with ❤️ by [Ultralytics Actions](https://github.com/ultralytics/actions)<sub>\n\n"
|
19
19
|
)
|
@@ -71,12 +71,60 @@ def update_pr_description(repo_name, pr_number, new_summary, max_retries=2):
|
|
71
71
|
return update_response.status_code
|
72
72
|
|
73
73
|
|
74
|
+
def label_fixed_issues(pr_number):
|
75
|
+
"""Labels issues that are closed by this PR when it's merged."""
|
76
|
+
# GraphQL query to get closing issues
|
77
|
+
query = """
|
78
|
+
query($owner: String!, $repo: String!, $pr_number: Int!) {
|
79
|
+
repository(owner: $owner, name: $repo) {
|
80
|
+
pullRequest(number: $pr_number) {
|
81
|
+
closingIssuesReferences(first: 50) {
|
82
|
+
nodes {
|
83
|
+
number
|
84
|
+
}
|
85
|
+
}
|
86
|
+
}
|
87
|
+
}
|
88
|
+
}
|
89
|
+
"""
|
90
|
+
|
91
|
+
owner, repo = GITHUB_REPOSITORY.split("/")
|
92
|
+
variables = {"owner": owner, "repo": repo, "pr_number": pr_number}
|
93
|
+
graphql_url = "https://api.github.com/graphql"
|
94
|
+
response = requests.post(graphql_url, json={"query": query, "variables": variables}, headers=GITHUB_HEADERS)
|
95
|
+
if response.status_code != 200:
|
96
|
+
print(f"Failed to fetch linked issues. Status code: {response.status_code}")
|
97
|
+
return
|
98
|
+
|
99
|
+
try:
|
100
|
+
issues = response.json()["data"]["repository"]["pullRequest"]["closingIssuesReferences"]["nodes"]
|
101
|
+
for issue in issues:
|
102
|
+
issue_number = issue["number"]
|
103
|
+
label_url = f"{GITHUB_API_URL}/repos/{GITHUB_REPOSITORY}/issues/{issue_number}/labels"
|
104
|
+
label_response = requests.post(label_url, json={"labels": ["fixed"]}, headers=GITHUB_HEADERS)
|
105
|
+
if label_response.status_code == 200:
|
106
|
+
print(f"Added 'fixed' label to issue #{issue_number}")
|
107
|
+
else:
|
108
|
+
print(f"Failed to add label to issue #{issue_number}. Status: {label_response.status_code}")
|
109
|
+
except KeyError as e:
|
110
|
+
print(f"Error parsing GraphQL response: {e}")
|
111
|
+
return
|
112
|
+
|
113
|
+
|
114
|
+
def remove_todos_on_merge(pr_number):
|
115
|
+
"""Removes specified labels from PR."""
|
116
|
+
for label in ["TODO"]: # Can be extended with more labels in the future
|
117
|
+
requests.delete(
|
118
|
+
f"{GITHUB_API_URL}/repos/{GITHUB_REPOSITORY}/issues/{pr_number}/labels/{label}", headers=GITHUB_HEADERS
|
119
|
+
)
|
120
|
+
|
121
|
+
|
74
122
|
def main():
|
75
123
|
"""Summarize a pull request and update its description with an AI-generated summary."""
|
76
124
|
pr_number = PR["number"]
|
77
125
|
|
78
126
|
print(f"Retrieving diff for PR {pr_number}")
|
79
|
-
diff = get_pr_diff(
|
127
|
+
diff = get_pr_diff(pr_number)
|
80
128
|
|
81
129
|
# Generate PR summary
|
82
130
|
print("Generating PR summary...")
|
@@ -90,6 +138,13 @@ def main():
|
|
90
138
|
else:
|
91
139
|
print(f"Failed to update PR description. Status code: {status_code}")
|
92
140
|
|
141
|
+
# Update linked issues
|
142
|
+
if PR.get("merged"):
|
143
|
+
print("PR is merged, labeling fixed issues...")
|
144
|
+
label_fixed_issues(pr_number)
|
145
|
+
print("Removing TODO label from PR...")
|
146
|
+
remove_todos_on_merge(pr_number)
|
147
|
+
|
93
148
|
|
94
149
|
if __name__ == "__main__":
|
95
150
|
main()
|
@@ -23,8 +23,6 @@ if GITHUB_EVENT_PATH:
|
|
23
23
|
PR = EVENT_DATA.get("pull_request", {})
|
24
24
|
DISCUSSION = EVENT_DATA.get("discussion", {})
|
25
25
|
|
26
|
-
INPUTS = {k[6:].lower(): v for k, v in os.environ.items() if k.startswith("INPUT_")} # actions inputs dictionary
|
27
|
-
|
28
26
|
|
29
27
|
def get_pr_diff(pr_number: int) -> str:
|
30
28
|
"""Retrieves the diff content for a specified pull request in a GitHub repository."""
|
{ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26/ultralytics_actions.egg-info}/PKG-INFO
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ultralytics-actions
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.26
|
4
4
|
Summary: Ultralytics Actions for GitHub automation and PR management.
|
5
5
|
Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>
|
6
6
|
Maintainer-email: Ultralytics <hello@ultralytics.com>
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/actions/update_markdown_code_blocks.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/ultralytics_actions.egg-info/SOURCES.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
{ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/ultralytics_actions.egg-info/requires.txt
RENAMED
File without changes
|
{ultralytics_actions-0.0.24 → ultralytics_actions-0.0.26}/ultralytics_actions.egg-info/top_level.txt
RENAMED
File without changes
|