Skip to content

Commit 63b72f3

Browse files
committed
lint fixes for breaking changes script
1 parent dda3ac0 commit 63b72f3

File tree

1 file changed

+57
-46
lines changed

1 file changed

+57
-46
lines changed

scripts/find_breaking_changes.py

Lines changed: 57 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,109 +1,120 @@
11
#!/usr/bin/env python3
2+
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
# SPDX-License-Identifier: Apache-2.0
24

3-
import requests
4-
import sys
55
import os
66
import re
7+
import sys
8+
9+
import requests
710
from packaging import version
811

12+
913
def get_current_version_from_pyproject():
1014
"""Extract current OpenTelemetry versions from pyproject.toml."""
1115
try:
12-
with open('aws-opentelemetry-distro/pyproject.toml', 'r', encoding='utf-8') as file:
16+
with open("aws-opentelemetry-distro/pyproject.toml", "r", encoding="utf-8") as file:
1317
content = file.read()
14-
18+
1519
# Find first opentelemetry-api version (core version)
1620
api_match = re.search(r'"opentelemetry-api == ([^"]*)"', content)
1721
current_core_version = api_match.group(1) if api_match else None
18-
19-
# Find first opentelemetry-distro version (contrib version)
22+
23+
# Find first opentelemetry-distro version (contrib version)
2024
distro_match = re.search(r'"opentelemetry-distro == ([^"]*)"', content)
2125
current_contrib_version = distro_match.group(1) if distro_match else None
22-
26+
2327
return current_core_version, current_contrib_version
24-
28+
2529
except Exception as error:
2630
print(f"Error reading current versions: {error}")
2731
return None, None
2832

33+
2934
def get_releases_with_breaking_changes(repo, current_version, new_version):
3035
"""Get releases between current and new version that mention breaking changes."""
3136
try:
32-
response = requests.get(
33-
f'https://api.github.com/repos/open-telemetry/{repo}/releases',
34-
timeout=30
35-
)
37+
response = requests.get(f"https://api.github.com/repos/open-telemetry/{repo}/releases", timeout=30)
3638
response.raise_for_status()
37-
39+
3840
releases = response.json()
3941
breaking_releases = []
40-
42+
4143
for release in releases:
42-
release_version = release['tag_name'].lstrip('v')
43-
44+
release_version = release["tag_name"].lstrip("v")
45+
4446
# Check if this release is between current and new version
4547
try:
46-
if (version.parse(release_version) > version.parse(current_version) and
47-
version.parse(release_version) <= version.parse(new_version)):
48-
48+
if version.parse(release_version) > version.parse(current_version) and version.parse(
49+
release_version
50+
) <= version.parse(new_version):
51+
4952
# Check if release notes mention breaking changes
50-
body = release.get('body', '').lower()
51-
if any(keyword in body for keyword in ['breaking change', 'breaking changes', 'breaking:', 'breaking']):
52-
breaking_releases.append({
53-
'version': release_version,
54-
'name': release['name'],
55-
'url': release['html_url'],
56-
'body': release.get('body', '')
57-
})
53+
body = release.get("body", "").lower()
54+
if any(
55+
keyword in body for keyword in ["breaking change", "breaking changes", "breaking:", "breaking"]
56+
):
57+
breaking_releases.append(
58+
{
59+
"version": release_version,
60+
"name": release["name"],
61+
"url": release["html_url"],
62+
"body": release.get("body", ""),
63+
}
64+
)
5865
except Exception:
5966
# Skip releases with invalid version formats
6067
continue
61-
68+
6269
return breaking_releases
63-
70+
6471
except requests.RequestException as request_error:
6572
print(f"Warning: Could not get releases for {repo}: {request_error}")
6673
return []
6774

75+
6876
def main():
69-
new_core_version = os.environ.get('OTEL_PYTHON_VERSION')
70-
new_contrib_version = os.environ.get('OTEL_CONTRIB_VERSION')
71-
77+
new_core_version = os.environ.get("OTEL_PYTHON_VERSION")
78+
new_contrib_version = os.environ.get("OTEL_CONTRIB_VERSION")
79+
7280
if not new_core_version or not new_contrib_version:
7381
print("Error: OTEL_PYTHON_VERSION and OTEL_CONTRIB_VERSION environment variables required")
7482
sys.exit(1)
75-
83+
7684
current_core_version, current_contrib_version = get_current_version_from_pyproject()
77-
85+
7886
if not current_core_version or not current_contrib_version:
7987
print("Could not determine current versions")
8088
sys.exit(1)
81-
89+
8290
print(f"Checking for breaking changes:")
8391
print(f"Core: {current_core_version}{new_core_version}")
8492
print(f"Contrib: {current_contrib_version}{new_contrib_version}")
85-
93+
8694
# Check both repos for breaking changes
87-
core_breaking = get_releases_with_breaking_changes('opentelemetry-python', current_core_version, new_core_version)
88-
contrib_breaking = get_releases_with_breaking_changes('opentelemetry-python-contrib', current_contrib_version, new_contrib_version)
89-
95+
core_breaking = get_releases_with_breaking_changes("opentelemetry-python", current_core_version, new_core_version)
96+
contrib_breaking = get_releases_with_breaking_changes(
97+
"opentelemetry-python-contrib", current_contrib_version, new_contrib_version
98+
)
99+
90100
# Output for GitHub Actions
91101
breaking_info = ""
92-
102+
93103
if core_breaking:
94104
breaking_info += "**opentelemetry-python:**\n"
95105
for release in core_breaking:
96106
breaking_info += f"- [{release['name']}]({release['url']})\n"
97-
107+
98108
if contrib_breaking:
99109
breaking_info += "\n**opentelemetry-python-contrib:**\n"
100110
for release in contrib_breaking:
101111
breaking_info += f"- [{release['name']}]({release['url']})\n"
102-
112+
103113
# Set GitHub output
104-
if os.environ.get('GITHUB_OUTPUT'):
105-
with open(os.environ['GITHUB_OUTPUT'], 'a', encoding='utf-8') as output_file:
106-
output_file.write(f'breaking_changes_info<<EOF\n{breaking_info}EOF\n')
114+
if os.environ.get("GITHUB_OUTPUT"):
115+
with open(os.environ["GITHUB_OUTPUT"], "a", encoding="utf-8") as output_file:
116+
output_file.write(f"breaking_changes_info<<EOF\n{breaking_info}EOF\n")
117+
107118

108-
if __name__ == '__main__':
119+
if __name__ == "__main__":
109120
main()

0 commit comments

Comments
 (0)