ultralytics-actions 0.0.8__py3-none-any.whl → 0.0.9__py3-none-any.whl

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.
actions/__init__.py CHANGED
@@ -22,4 +22,4 @@
22
22
  # ├── test_summarize_pr.py
23
23
  # └── ...
24
24
 
25
- __version__ = "0.0.8"
25
+ __version__ = "0.0.9"
@@ -1,17 +1,16 @@
1
1
  # Ultralytics Actions 🚀, AGPL-3.0 license https://ultralytics.com/license
2
2
 
3
- import json
4
3
  import os
5
4
  from typing import Dict, List, Tuple
6
5
 
7
6
  import requests
8
7
 
9
8
  from .utils import (
9
+ EVENT_DATA,
10
10
  GITHUB_API_URL,
11
11
  GITHUB_EVENT_NAME,
12
- GITHUB_EVENT_PATH,
13
12
  GITHUB_HEADERS,
14
- REPO_NAME,
13
+ GITHUB_REPOSITORY,
15
14
  get_completion,
16
15
  get_github_data,
17
16
  get_pr_diff,
@@ -25,18 +24,16 @@ BLOCK_USER = os.getenv("BLOCK_USER", "false").lower() == "true"
25
24
 
26
25
  def get_event_content() -> Tuple[int, str, str, str, str, str, str]:
27
26
  """Extracts key information from GitHub event data for issues, pull requests, or discussions."""
28
- with open(GITHUB_EVENT_PATH) as f:
29
- data = json.load(f)
30
- action = data["action"] # 'opened', 'closed', 'created' (discussion), etc.
27
+ action = EVENT_DATA["action"] # 'opened', 'closed', 'created' (discussion), etc.
31
28
  if GITHUB_EVENT_NAME == "issues":
32
- item = data["issue"]
29
+ item = EVENT_DATA["issue"]
33
30
  issue_type = "issue"
34
31
  elif GITHUB_EVENT_NAME in ["pull_request", "pull_request_target"]:
35
- pr_number = data["pull_request"]["number"]
32
+ pr_number = EVENT_DATA["pull_request"]["number"]
36
33
  item = get_github_data(f"pulls/{pr_number}")
37
34
  issue_type = "pull request"
38
35
  elif GITHUB_EVENT_NAME == "discussion":
39
- item = data["discussion"]
36
+ item = EVENT_DATA["discussion"]
40
37
  issue_type = "discussion"
41
38
  else:
42
39
  raise ValueError(f"Unsupported event type: {GITHUB_EVENT_NAME}")
@@ -73,7 +70,7 @@ mutation($discussionId: ID!, $title: String!, $body: String!) {
73
70
  """
74
71
  graphql_request(mutation, variables={"discussionId": node_id, "title": new_title, "body": new_body})
75
72
  else:
76
- url = f"{GITHUB_API_URL}/repos/{REPO_NAME}/issues/{number}"
73
+ url = f"{GITHUB_API_URL}/repos/{GITHUB_REPOSITORY}/issues/{number}"
77
74
  r = requests.patch(url, json={"title": new_title, "body": new_body}, headers=GITHUB_HEADERS)
78
75
  print(f"{'Successful' if r.status_code == 200 else 'Fail'} issue/PR #{number} update: {r.status_code}")
79
76
 
@@ -92,7 +89,7 @@ mutation($discussionId: ID!) {
92
89
  """
93
90
  graphql_request(mutation, variables={"discussionId": node_id})
94
91
  else:
95
- url = f"{GITHUB_API_URL}/repos/{REPO_NAME}/issues/{number}"
92
+ url = f"{GITHUB_API_URL}/repos/{GITHUB_REPOSITORY}/issues/{number}"
96
93
  r = requests.patch(url, json={"state": "closed"}, headers=GITHUB_HEADERS)
97
94
  print(f"{'Successful' if r.status_code == 200 else 'Fail'} issue/PR #{number} close: {r.status_code}")
98
95
 
@@ -113,14 +110,14 @@ mutation($lockableId: ID!, $lockReason: LockReason) {
113
110
  """
114
111
  graphql_request(mutation, variables={"lockableId": node_id, "lockReason": "OFF_TOPIC"})
115
112
  else:
116
- url = f"{GITHUB_API_URL}/repos/{REPO_NAME}/issues/{number}/lock"
113
+ url = f"{GITHUB_API_URL}/repos/{GITHUB_REPOSITORY}/issues/{number}/lock"
117
114
  r = requests.put(url, json={"lock_reason": "off-topic"}, headers=GITHUB_HEADERS)
118
115
  print(f"{'Successful' if r.status_code in {200, 204} else 'Fail'} issue/PR #{number} lock: {r.status_code}")
119
116
 
120
117
 
121
118
  def block_user(username: str):
122
119
  """Blocks a user from the organization using the GitHub API."""
123
- url = f"{GITHUB_API_URL}/orgs/{REPO_NAME.split('/')[0]}/blocks/{username}"
120
+ url = f"{GITHUB_API_URL}/orgs/{GITHUB_REPOSITORY.split('/')[0]}/blocks/{username}"
124
121
  r = requests.put(url, headers=GITHUB_HEADERS)
125
122
  print(f"{'Successful' if r.status_code == 204 else 'Fail'} user block for {username}: {r.status_code}")
126
123
 
@@ -200,7 +197,7 @@ query($owner: String!, $name: String!) {
200
197
  }
201
198
  }
202
199
  """
203
- owner, repo = REPO_NAME.split("/")
200
+ owner, repo = GITHUB_REPOSITORY.split("/")
204
201
  result = graphql_request(query, variables={"owner": owner, "name": repo})
205
202
  if "data" in result and "repository" in result["data"]:
206
203
  all_labels = result["data"]["repository"]["labels"]["nodes"]
@@ -237,7 +234,7 @@ mutation($labelableId: ID!, $labelIds: [ID!]!) {
237
234
  graphql_request(mutation, {"labelableId": node_id, "labelIds": label_ids})
238
235
  print(f"Successfully applied labels: {', '.join(labels)}")
239
236
  else:
240
- url = f"{GITHUB_API_URL}/repos/{REPO_NAME}/issues/{number}/labels"
237
+ url = f"{GITHUB_API_URL}/repos/{GITHUB_REPOSITORY}/issues/{number}/labels"
241
238
  r = requests.post(url, json={"labels": labels}, headers=GITHUB_HEADERS)
242
239
  print(f"{'Successful' if r.status_code == 200 else 'Fail'} apply labels {', '.join(labels)}: {r.status_code}")
243
240
 
@@ -245,12 +242,12 @@ mutation($labelableId: ID!, $labelIds: [ID!]!) {
245
242
  def create_alert_label():
246
243
  """Creates the 'Alert' label in the repository if it doesn't exist, with a red color and description."""
247
244
  alert_label = {"name": "Alert", "color": "FF0000", "description": "Potential spam, abuse, or off-topic."}
248
- requests.post(f"{GITHUB_API_URL}/repos/{REPO_NAME}/labels", json=alert_label, headers=GITHUB_HEADERS)
245
+ requests.post(f"{GITHUB_API_URL}/repos/{GITHUB_REPOSITORY}/labels", json=alert_label, headers=GITHUB_HEADERS)
249
246
 
250
247
 
251
248
  def is_org_member(username: str) -> bool:
252
249
  """Checks if a user is a member of the organization using the GitHub API."""
253
- org_name = REPO_NAME.split("/")[0]
250
+ org_name = GITHUB_REPOSITORY.split("/")[0]
254
251
  url = f"{GITHUB_API_URL}/orgs/{org_name}/members/{username}"
255
252
  r = requests.get(url, headers=GITHUB_HEADERS)
256
253
  return r.status_code == 204 # 204 means the user is a member
@@ -270,7 +267,7 @@ mutation($discussionId: ID!, $body: String!) {
270
267
  """
271
268
  graphql_request(mutation, variables={"discussionId": node_id, "body": comment})
272
269
  else:
273
- url = f"{GITHUB_API_URL}/repos/{REPO_NAME}/issues/{number}/comments"
270
+ url = f"{GITHUB_API_URL}/repos/{GITHUB_REPOSITORY}/issues/{number}/comments"
274
271
  r = requests.post(url, json={"body": comment}, headers=GITHUB_HEADERS)
275
272
  print(f"{'Successful' if r.status_code in {200, 201} else 'Fail'} issue/PR #{number} comment: {r.status_code}")
276
273
 
@@ -278,7 +275,7 @@ mutation($discussionId: ID!, $body: String!) {
278
275
  def get_first_interaction_response(issue_type: str, title: str, body: str, username: str, number: int) -> str:
279
276
  """Generates a custom LLM response for GitHub issues, PRs, or discussions based on content."""
280
277
  issue_discussion_response = f"""
281
- 👋 Hello @{username}, thank you for submitting a `{REPO_NAME}` 🚀 {issue_type.capitalize()}. To help us address your concern efficiently, please ensure you've provided the following information:
278
+ 👋 Hello @{username}, thank you for submitting a `{GITHUB_REPOSITORY}` 🚀 {issue_type.capitalize()}. To help us address your concern efficiently, please ensure you've provided the following information:
282
279
 
283
280
  1. For bug reports:
284
281
  - A clear and concise description of the bug
@@ -303,10 +300,10 @@ Thank you for your contribution to improving our project!
303
300
  """
304
301
 
305
302
  pr_response = f"""
306
- 👋 Hello @{username}, thank you for submitting an `{REPO_NAME}` 🚀 PR! To ensure a seamless integration of your work, please review the following checklist:
303
+ 👋 Hello @{username}, thank you for submitting an `{GITHUB_REPOSITORY}` 🚀 PR! To ensure a seamless integration of your work, please review the following checklist:
307
304
 
308
- - ✅ **Define a Purpose**: Clearly explain the purpose of your fix or feature in your PR description, and link to any [relevant issues](https://github.com/{REPO_NAME}/issues). Ensure your commit messages are clear, concise, and adhere to the project's conventions.
309
- - ✅ **Synchronize with Source**: Confirm your PR is synchronized with the `{REPO_NAME}` `main` branch. If it's behind, update it by clicking the 'Update branch' button or by running `git pull` and `git merge main` locally.
305
+ - ✅ **Define a Purpose**: Clearly explain the purpose of your fix or feature in your PR description, and link to any [relevant issues](https://github.com/{GITHUB_REPOSITORY}/issues). Ensure your commit messages are clear, concise, and adhere to the project's conventions.
306
+ - ✅ **Synchronize with Source**: Confirm your PR is synchronized with the `{GITHUB_REPOSITORY}` `main` branch. If it's behind, update it by clicking the 'Update branch' button or by running `git pull` and `git merge main` locally.
310
307
  - ✅ **Ensure CI Checks Pass**: Verify all Ultralytics [Continuous Integration (CI)](https://docs.ultralytics.com/help/CI/) checks are passing. If any checks fail, please address the issues.
311
308
  - ✅ **Update Documentation**: Update the relevant [documentation](https://docs.ultralytics.com) for any new or modified features.
312
309
  - ✅ **Add Tests**: If applicable, include or update tests to cover your changes, and confirm that all tests are passing.
@@ -321,8 +318,8 @@ For more guidance, please refer to our [Contributing Guide](https://docs.ultraly
321
318
  else:
322
319
  example = os.getenv("FIRST_ISSUE_RESPONSE") or issue_discussion_response
323
320
 
324
- org_name, repo_name = REPO_NAME.split("/")
325
- repo_url = f"https://github.com/{REPO_NAME}"
321
+ org_name, repo_name = GITHUB_REPOSITORY.split("/")
322
+ repo_url = f"https://github.com/{GITHUB_REPOSITORY}"
326
323
  diff = get_pr_diff(number)[:32000] if issue_type == "pull request" else ""
327
324
 
328
325
  prompt = f"""Generate a customized response to the new GitHub {issue_type} below:
actions/summarize_pr.py CHANGED
@@ -5,8 +5,8 @@ import requests
5
5
  from .utils import (
6
6
  GITHUB_API_URL,
7
7
  GITHUB_HEADERS,
8
- PR_NUMBER,
9
- REPO_NAME,
8
+ GITHUB_REPOSITORY,
9
+ PR,
10
10
  get_completion,
11
11
  get_pr_diff,
12
12
  )
@@ -65,13 +65,18 @@ def update_pr_description(repo_name, pr_number, new_summary):
65
65
 
66
66
  def main():
67
67
  """Summarize a pull request and update its description with an AI-generated summary."""
68
- diff = get_pr_diff(PR_NUMBER)
68
+ pr_number = PR["number"]
69
+
70
+ print(f"Retrieving diff for PR {pr_number}")
71
+ diff = get_pr_diff(PR["number"])
69
72
 
70
73
  # Generate PR summary
71
- summary = generate_pr_summary(REPO_NAME, diff)
74
+ print("Generating PR summary...")
75
+ summary = generate_pr_summary(GITHUB_REPOSITORY, diff)
72
76
 
73
77
  # Update PR description
74
- status_code = update_pr_description(REPO_NAME, PR_NUMBER, summary)
78
+ print("Updating PR description...")
79
+ status_code = update_pr_description(GITHUB_REPOSITORY, pr_number, summary)
75
80
  if status_code == 200:
76
81
  print("PR description updated successfully.")
77
82
  else:
@@ -12,8 +12,8 @@ from .utils import (
12
12
  GITHUB_API_URL,
13
13
  GITHUB_HEADERS,
14
14
  GITHUB_HEADERS_DIFF,
15
+ GITHUB_REPOSITORY,
15
16
  GITHUB_TOKEN,
16
- REPO_NAME,
17
17
  get_completion,
18
18
  remove_html_comments,
19
19
  )
@@ -164,14 +164,14 @@ def main():
164
164
  previous_tag = PREVIOUS_TAG or get_previous_tag()
165
165
 
166
166
  # Get the diff between the tags
167
- diff = get_release_diff(REPO_NAME, previous_tag, CURRENT_TAG)
167
+ diff = get_release_diff(GITHUB_REPOSITORY, previous_tag, CURRENT_TAG)
168
168
 
169
169
  # Get PRs merged between the tags
170
- prs = get_prs_between_tags(REPO_NAME, previous_tag, CURRENT_TAG)
170
+ prs = get_prs_between_tags(GITHUB_REPOSITORY, previous_tag, CURRENT_TAG)
171
171
 
172
172
  # Generate release summary
173
173
  try:
174
- summary = generate_release_summary(diff, prs, CURRENT_TAG, previous_tag, REPO_NAME)
174
+ summary = generate_release_summary(diff, prs, CURRENT_TAG, previous_tag, GITHUB_REPOSITORY)
175
175
  except Exception as e:
176
176
  print(f"Failed to generate summary: {str(e)}")
177
177
  summary = "Failed to generate summary."
@@ -181,7 +181,7 @@ def main():
181
181
  commit_message = subprocess.run(cmd, check=True, text=True, capture_output=True).stdout.split("\n")[0].strip()
182
182
 
183
183
  # Create the release on GitHub
184
- status_code = create_github_release(REPO_NAME, CURRENT_TAG, f"{CURRENT_TAG} - {commit_message}", summary)
184
+ status_code = create_github_release(GITHUB_REPOSITORY, CURRENT_TAG, f"{CURRENT_TAG} - {commit_message}", summary)
185
185
  if status_code == 201:
186
186
  print(f"Successfully created release {CURRENT_TAG}")
187
187
  else:
actions/utils/__init__.py CHANGED
@@ -2,14 +2,16 @@
2
2
 
3
3
  from .common_utils import remove_html_comments
4
4
  from .github_utils import (
5
+ DISCUSSION,
6
+ EVENT_DATA,
5
7
  GITHUB_API_URL,
6
8
  GITHUB_EVENT_NAME,
7
9
  GITHUB_EVENT_PATH,
8
10
  GITHUB_HEADERS,
9
11
  GITHUB_HEADERS_DIFF,
12
+ GITHUB_REPOSITORY,
10
13
  GITHUB_TOKEN,
11
- PR_NUMBER,
12
- REPO_NAME,
14
+ PR,
13
15
  check_pypi_version,
14
16
  get_github_data,
15
17
  get_pr_diff,
@@ -20,12 +22,14 @@ from .openai_utils import OPENAI_API_KEY, OPENAI_MODEL, get_completion
20
22
 
21
23
  __all__ = (
22
24
  "remove_html_comments",
25
+ "EVENT_DATA",
23
26
  "GITHUB_API_URL",
24
27
  "GITHUB_HEADERS",
25
28
  "GITHUB_HEADERS_DIFF",
26
29
  "GITHUB_TOKEN",
27
- "REPO_NAME",
28
- "PR_NUMBER",
30
+ "GITHUB_REPOSITORY",
31
+ "PR",
32
+ "DISCUSSION",
29
33
  "GITHUB_EVENT_NAME",
30
34
  "GITHUB_EVENT_PATH",
31
35
  "get_github_data",
@@ -6,26 +6,34 @@ from pathlib import Path
6
6
  import requests
7
7
 
8
8
  GITHUB_TOKEN = os.getenv("GITHUB_TOKEN")
9
+ GITHUB_REPOSITORY = os.getenv("GITHUB_REPOSITORY")
10
+ GITHUB_EVENT_NAME = os.getenv("GITHUB_EVENT_NAME")
11
+ GITHUB_EVENT_PATH = os.getenv("GITHUB_EVENT_PATH")
9
12
  GITHUB_API_URL = "https://api.github.com"
10
13
  GITHUB_HEADERS = {"Authorization": f"token {GITHUB_TOKEN}", "Accept": "application/vnd.github.v3+json"}
11
14
  GITHUB_HEADERS_DIFF = {"Authorization": f"token {GITHUB_TOKEN}", "Accept": "application/vnd.github.v3.diff"}
12
15
 
13
- PR_NUMBER = os.getenv("PR_NUMBER")
14
- REPO_NAME = os.getenv("GITHUB_REPOSITORY")
15
- GITHUB_EVENT_NAME = os.getenv("GITHUB_EVENT_NAME")
16
- GITHUB_EVENT_PATH = os.getenv("GITHUB_EVENT_PATH")
16
+ EVENT_DATA = {}
17
+ if GITHUB_EVENT_PATH:
18
+ event_path = Path(GITHUB_EVENT_PATH)
19
+ if event_path.exists():
20
+ EVENT_DATA = json.loads(event_path.read_text())
21
+ PR = EVENT_DATA.get("pull_request", {})
22
+ DISCUSSION = EVENT_DATA.get("discussion", {})
23
+
24
+ INPUTS = {k[6:].lower(): v for k, v in os.environ.items() if k.startswith("INPUT_")} # actions inputs dictionary
17
25
 
18
26
 
19
27
  def get_pr_diff(pr_number: int) -> str:
20
28
  """Retrieves the diff content for a specified pull request in a GitHub repository."""
21
- url = f"{GITHUB_API_URL}/repos/{REPO_NAME}/pulls/{pr_number}"
29
+ url = f"{GITHUB_API_URL}/repos/{GITHUB_REPOSITORY}/pulls/{pr_number}"
22
30
  r = requests.get(url, headers=GITHUB_HEADERS_DIFF)
23
31
  return r.text if r.status_code == 200 else ""
24
32
 
25
33
 
26
34
  def get_github_data(endpoint: str) -> dict:
27
35
  """Fetches GitHub repository data from a specified endpoint using the GitHub API."""
28
- r = requests.get(f"{GITHUB_API_URL}/repos/{REPO_NAME}/{endpoint}", headers=GITHUB_HEADERS)
36
+ r = requests.get(f"{GITHUB_API_URL}/repos/{GITHUB_REPOSITORY}/{endpoint}", headers=GITHUB_HEADERS)
29
37
  r.raise_for_status()
30
38
  return r.json()
31
39
 
@@ -90,34 +98,24 @@ def check_pypi_version(pyproject_toml="pyproject.toml"):
90
98
 
91
99
  def ultralytics_actions_info():
92
100
  """Print Ultralytics Actions information."""
93
- event_data = {}
94
- if GITHUB_EVENT_PATH:
95
- event_path = Path(GITHUB_EVENT_PATH)
96
- if event_path.exists():
97
- event_data = json.loads(event_path.read_text())
98
-
99
- pr = event_data.get("pull_request", {})
100
- pr_head_ref = pr.get("head", {}).get("ref")
101
-
102
101
  info = {
103
102
  "github.event_name": GITHUB_EVENT_NAME,
104
- "github.event.action": event_data.get("action"),
105
- "github.repository": REPO_NAME,
106
- "github.event.pull_request.number": pr.get("number"),
107
- "github.event.pull_request.head.repo.full_name": pr.get("head", {}).get("repo", {}).get("full_name"),
103
+ "github.event.action": EVENT_DATA.get("action"),
104
+ "github.repository": GITHUB_REPOSITORY,
105
+ "github.event.pull_request.number": PR.get("number"),
106
+ "github.event.pull_request.head.repo.full_name": PR.get("head", {}).get("repo", {}).get("full_name"),
108
107
  "github.actor": os.environ.get("GITHUB_ACTOR"),
109
- "github.event.pull_request.head.ref": pr_head_ref,
108
+ "github.event.pull_request.head.ref": PR.get("head", {}).get("ref"),
110
109
  "github.ref": os.environ.get("GITHUB_REF"),
111
110
  "github.head_ref": os.environ.get("GITHUB_HEAD_REF"),
112
111
  "github.base_ref": os.environ.get("GITHUB_BASE_REF"),
113
112
  }
114
113
 
115
114
  if GITHUB_EVENT_NAME == "discussion":
116
- discussion = event_data.get("discussion", {})
117
115
  info.update(
118
116
  {
119
- "github.event.discussion.node_id": discussion.get("node_id"),
120
- "github.event.discussion.number": discussion.get("number"),
117
+ "github.event.discussion.node_id": DISCUSSION.get("node_id"),
118
+ "github.event.discussion.number": DISCUSSION.get("number"),
121
119
  }
122
120
  )
123
121
 
@@ -8,8 +8,8 @@ import requests
8
8
 
9
9
  from actions.utils.common_utils import check_links_in_string
10
10
 
11
- OPENAI_MODEL = os.getenv("OPENAI_MODEL", "gpt-4o")
12
11
  OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
12
+ OPENAI_MODEL = os.getenv("OPENAI_MODEL", "gpt-4o")
13
13
 
14
14
 
15
15
  def get_completion(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ultralytics-actions
3
- Version: 0.0.8
3
+ Version: 0.0.9
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>
@@ -0,0 +1,15 @@
1
+ actions/__init__.py,sha256=Xz-XMoqqSp7DP4_ndbqEL9t1jS3-xA581UsZdtDS8Zs,748
2
+ actions/first_interaction.py,sha256=cLXo5hmhOgTfk7F9LbGJeRdg6vvrKUe-0taCa_TkpAg,17683
3
+ actions/summarize_pr.py,sha256=ysbGgomPXMXBZQQROWTv06syA59gJmGMvpWxDO66cLQ,3779
4
+ actions/summarize_release.py,sha256=l8NBdTAXLysfNKl1Kf_1tyuBRmeEBLyzTDXS6s5_eQg,8350
5
+ actions/update_markdown_code_blocks.py,sha256=WBNcMD_KKsZS-qSPBn6O1G0ggQ_VrT-jTQffbg7xH_M,6369
6
+ actions/utils/__init__.py,sha256=0vRjFc7i2WOlphuxdUxQo5BuNipgwGw2Bs-fdUBDeUw,973
7
+ actions/utils/common_utils.py,sha256=zuGKef8po6hW7cQMPlrxhN9uTzoXbEb8feFO0q_mr70,3116
8
+ actions/utils/github_utils.py,sha256=2H4pRum8tLSbLKGoO85Ea4E8psxZICyvFO_1hwQPuoU,5431
9
+ actions/utils/openai_utils.py,sha256=SQWOjU3hdfI_0LKb3uqM5pNsoMyE7W0hGxXy7ISk97M,1823
10
+ ultralytics_actions-0.0.9.dist-info/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
11
+ ultralytics_actions-0.0.9.dist-info/METADATA,sha256=juEqEPXciCgYKWTBWKs-NVB9gwPYvK92mVZpJeNRBWM,10534
12
+ ultralytics_actions-0.0.9.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
13
+ ultralytics_actions-0.0.9.dist-info/entry_points.txt,sha256=GowvOFplj0C7JmsjbKcbpgLpdf2r921pcaOQkAHWZRA,378
14
+ ultralytics_actions-0.0.9.dist-info/top_level.txt,sha256=5apM5x80QlJcGbACn1v3fkmIuL1-XQCKcItJre7w7Tw,8
15
+ ultralytics_actions-0.0.9.dist-info/RECORD,,
@@ -1,15 +0,0 @@
1
- actions/__init__.py,sha256=A_LmSMIFmzL2RxtVcz2ujcLzkH_yn98jqi1OU65iALg,748
2
- actions/first_interaction.py,sha256=3xGCYjYM0Z8OYfvvHCMTVBevCb8gZV2DtuLaGIQtgIE,17617
3
- actions/summarize_pr.py,sha256=5ya-rLD5va-1-AO146ZrgvSIpREZZTCsPY6eMArs8A0,3602
4
- actions/summarize_release.py,sha256=Hv8GyIrfUxpia95QRYbYoNBfJ316l9IJdTPQZDIed-k,8310
5
- actions/update_markdown_code_blocks.py,sha256=WBNcMD_KKsZS-qSPBn6O1G0ggQ_VrT-jTQffbg7xH_M,6369
6
- actions/utils/__init__.py,sha256=KbtIL87s0j6Ad7RDRpRTIyxhxTQ1KL1yPjz5TkeUBYU,903
7
- actions/utils/common_utils.py,sha256=zuGKef8po6hW7cQMPlrxhN9uTzoXbEb8feFO0q_mr70,3116
8
- actions/utils/github_utils.py,sha256=uh9RGaDz6Mid0Pkt48ZGjeHpyaZNv8Wa2fPYQlledpA,5383
9
- actions/utils/openai_utils.py,sha256=P_xyUX9x5rhNUj9kngrCCFrJgloPHe4a1LhRCobB-ig,1823
10
- ultralytics_actions-0.0.8.dist-info/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
11
- ultralytics_actions-0.0.8.dist-info/METADATA,sha256=1Et4l1Ry8546Fzb3axMpEvhdNUgLGYL0xUP04TWC0ew,10534
12
- ultralytics_actions-0.0.8.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
13
- ultralytics_actions-0.0.8.dist-info/entry_points.txt,sha256=GowvOFplj0C7JmsjbKcbpgLpdf2r921pcaOQkAHWZRA,378
14
- ultralytics_actions-0.0.8.dist-info/top_level.txt,sha256=5apM5x80QlJcGbACn1v3fkmIuL1-XQCKcItJre7w7Tw,8
15
- ultralytics_actions-0.0.8.dist-info/RECORD,,