|
3 | 3 | import sys |
4 | 4 | import os |
5 | 5 | import re |
| 6 | +import requests |
6 | 7 |
|
7 | 8 | # Dependencies that use the first version number (opentelemetry-python) |
8 | 9 | PYTHON_CORE_DEPS = [ |
|
67 | 68 | 'opentelemetry-instrumentation-cassandra', |
68 | 69 | ] |
69 | 70 |
|
| 71 | +# AWS-specific packages with independent versioning |
| 72 | +AWS_DEPS = [ |
| 73 | + 'opentelemetry-sdk-extension-aws', |
| 74 | + 'opentelemetry-propagator-aws-xray', |
| 75 | +] |
| 76 | + |
| 77 | +def get_latest_version(package_name): |
| 78 | + """Get the latest version of a package from PyPI.""" |
| 79 | + try: |
| 80 | + response = requests.get(f'https://pypi.org/pypi/{package_name}/json') |
| 81 | + response.raise_for_status() |
| 82 | + data = response.json() |
| 83 | + return data['info']['version'] |
| 84 | + except Exception as e: |
| 85 | + print(f"Warning: Could not get latest version for {package_name}: {e}") |
| 86 | + return None |
| 87 | + |
70 | 88 | def main(): |
71 | 89 | otel_python_version = os.environ.get('OTEL_PYTHON_VERSION') |
72 | 90 | otel_contrib_version = os.environ.get('OTEL_CONTRIB_VERSION') |
@@ -99,6 +117,17 @@ def main(): |
99 | 117 | content = re.sub(pattern, replacement, content) |
100 | 118 | updated = True |
101 | 119 |
|
| 120 | + # Update AWS dependencies with their latest versions |
| 121 | + for dep in AWS_DEPS: |
| 122 | + latest_version = get_latest_version(dep) |
| 123 | + if latest_version: |
| 124 | + pattern = rf'"{re.escape(dep)} == [^"]*"' |
| 125 | + replacement = f'"{dep} == {latest_version}"' |
| 126 | + if re.search(pattern, content): |
| 127 | + content = re.sub(pattern, replacement, content) |
| 128 | + updated = True |
| 129 | + print(f"Updated {dep} to {latest_version}") |
| 130 | + |
102 | 131 | if updated: |
103 | 132 | with open(pyproject_path, 'w') as f: |
104 | 133 | f.write(content) |
|
0 commit comments