11#!/usr/bin/env python3
22
3- import sys
43import os
54import re
5+ import sys
6+
67import requests
78
89# Dependencies that use the first version number (opentelemetry-python)
910PYTHON_CORE_DEPS = [
10- ' opentelemetry-api' ,
11- ' opentelemetry-sdk' ,
12- ' opentelemetry-exporter-otlp' ,
13- ' opentelemetry-exporter-otlp-proto-grpc' ,
14- ' opentelemetry-exporter-otlp-proto-http' ,
15- ' opentelemetry-propagator-b3' ,
16- ' opentelemetry-propagator-jaeger' ,
17- ' opentelemetry-exporter-otlp-proto-common' ,
11+ " opentelemetry-api" ,
12+ " opentelemetry-sdk" ,
13+ " opentelemetry-exporter-otlp" ,
14+ " opentelemetry-exporter-otlp-proto-grpc" ,
15+ " opentelemetry-exporter-otlp-proto-http" ,
16+ " opentelemetry-propagator-b3" ,
17+ " opentelemetry-propagator-jaeger" ,
18+ " opentelemetry-exporter-otlp-proto-common" ,
1819]
1920
2021# Dependencies that use the second version number (opentelemetry-python-contrib)
2122CONTRIB_DEPS = [
22- ' opentelemetry-distro' ,
23- ' opentelemetry-processor-baggage' ,
24- ' opentelemetry-propagator-ot-trace' ,
25- ' opentelemetry-instrumentation' ,
26- ' opentelemetry-instrumentation-aws-lambda' ,
27- ' opentelemetry-instrumentation-aio-pika' ,
28- ' opentelemetry-instrumentation-aiohttp-client' ,
29- ' opentelemetry-instrumentation-aiopg' ,
30- ' opentelemetry-instrumentation-asgi' ,
31- ' opentelemetry-instrumentation-asyncpg' ,
32- ' opentelemetry-instrumentation-boto' ,
33- ' opentelemetry-instrumentation-boto3sqs' ,
34- ' opentelemetry-instrumentation-botocore' ,
35- ' opentelemetry-instrumentation-celery' ,
36- ' opentelemetry-instrumentation-confluent-kafka' ,
37- ' opentelemetry-instrumentation-dbapi' ,
38- ' opentelemetry-instrumentation-django' ,
39- ' opentelemetry-instrumentation-elasticsearch' ,
40- ' opentelemetry-instrumentation-falcon' ,
41- ' opentelemetry-instrumentation-fastapi' ,
42- ' opentelemetry-instrumentation-flask' ,
43- ' opentelemetry-instrumentation-grpc' ,
44- ' opentelemetry-instrumentation-httpx' ,
45- ' opentelemetry-instrumentation-jinja2' ,
46- ' opentelemetry-instrumentation-kafka-python' ,
47- ' opentelemetry-instrumentation-logging' ,
48- ' opentelemetry-instrumentation-mysql' ,
49- ' opentelemetry-instrumentation-mysqlclient' ,
50- ' opentelemetry-instrumentation-pika' ,
51- ' opentelemetry-instrumentation-psycopg2' ,
52- ' opentelemetry-instrumentation-pymemcache' ,
53- ' opentelemetry-instrumentation-pymongo' ,
54- ' opentelemetry-instrumentation-pymysql' ,
55- ' opentelemetry-instrumentation-pyramid' ,
56- ' opentelemetry-instrumentation-redis' ,
57- ' opentelemetry-instrumentation-remoulade' ,
58- ' opentelemetry-instrumentation-requests' ,
59- ' opentelemetry-instrumentation-sqlalchemy' ,
60- ' opentelemetry-instrumentation-sqlite3' ,
61- ' opentelemetry-instrumentation-starlette' ,
62- ' opentelemetry-instrumentation-system-metrics' ,
63- ' opentelemetry-instrumentation-tornado' ,
64- ' opentelemetry-instrumentation-tortoiseorm' ,
65- ' opentelemetry-instrumentation-urllib' ,
66- ' opentelemetry-instrumentation-urllib3' ,
67- ' opentelemetry-instrumentation-wsgi' ,
68- ' opentelemetry-instrumentation-cassandra' ,
23+ " opentelemetry-distro" ,
24+ " opentelemetry-processor-baggage" ,
25+ " opentelemetry-propagator-ot-trace" ,
26+ " opentelemetry-instrumentation" ,
27+ " opentelemetry-instrumentation-aws-lambda" ,
28+ " opentelemetry-instrumentation-aio-pika" ,
29+ " opentelemetry-instrumentation-aiohttp-client" ,
30+ " opentelemetry-instrumentation-aiopg" ,
31+ " opentelemetry-instrumentation-asgi" ,
32+ " opentelemetry-instrumentation-asyncpg" ,
33+ " opentelemetry-instrumentation-boto" ,
34+ " opentelemetry-instrumentation-boto3sqs" ,
35+ " opentelemetry-instrumentation-botocore" ,
36+ " opentelemetry-instrumentation-celery" ,
37+ " opentelemetry-instrumentation-confluent-kafka" ,
38+ " opentelemetry-instrumentation-dbapi" ,
39+ " opentelemetry-instrumentation-django" ,
40+ " opentelemetry-instrumentation-elasticsearch" ,
41+ " opentelemetry-instrumentation-falcon" ,
42+ " opentelemetry-instrumentation-fastapi" ,
43+ " opentelemetry-instrumentation-flask" ,
44+ " opentelemetry-instrumentation-grpc" ,
45+ " opentelemetry-instrumentation-httpx" ,
46+ " opentelemetry-instrumentation-jinja2" ,
47+ " opentelemetry-instrumentation-kafka-python" ,
48+ " opentelemetry-instrumentation-logging" ,
49+ " opentelemetry-instrumentation-mysql" ,
50+ " opentelemetry-instrumentation-mysqlclient" ,
51+ " opentelemetry-instrumentation-pika" ,
52+ " opentelemetry-instrumentation-psycopg2" ,
53+ " opentelemetry-instrumentation-pymemcache" ,
54+ " opentelemetry-instrumentation-pymongo" ,
55+ " opentelemetry-instrumentation-pymysql" ,
56+ " opentelemetry-instrumentation-pyramid" ,
57+ " opentelemetry-instrumentation-redis" ,
58+ " opentelemetry-instrumentation-remoulade" ,
59+ " opentelemetry-instrumentation-requests" ,
60+ " opentelemetry-instrumentation-sqlalchemy" ,
61+ " opentelemetry-instrumentation-sqlite3" ,
62+ " opentelemetry-instrumentation-starlette" ,
63+ " opentelemetry-instrumentation-system-metrics" ,
64+ " opentelemetry-instrumentation-tornado" ,
65+ " opentelemetry-instrumentation-tortoiseorm" ,
66+ " opentelemetry-instrumentation-urllib" ,
67+ " opentelemetry-instrumentation-urllib3" ,
68+ " opentelemetry-instrumentation-wsgi" ,
69+ " opentelemetry-instrumentation-cassandra" ,
6970]
7071
7172# AWS-specific packages with independent versioning
7273AWS_DEPS = [
73- ' opentelemetry-sdk-extension-aws' ,
74- ' opentelemetry-propagator-aws-xray' ,
74+ " opentelemetry-sdk-extension-aws" ,
75+ " opentelemetry-propagator-aws-xray" ,
7576]
7677
78+
7779def get_latest_version (package_name ):
7880 """Get the latest version of a package from PyPI."""
7981 try :
80- response = requests .get (f' https://pypi.org/pypi/{ package_name } /json' , timeout = 30 )
82+ response = requests .get (f" https://pypi.org/pypi/{ package_name } /json" , timeout = 30 )
8183 response .raise_for_status ()
8284 data = response .json ()
83- return data [' info' ][ ' version' ]
85+ return data [" info" ][ " version" ]
8486 except requests .RequestException as request_error :
8587 print (f"Warning: Could not get latest version for { package_name } : { request_error } " )
8688 return None
8789
90+
8891def main ():
89- otel_python_version = os .environ .get (' OTEL_PYTHON_VERSION' )
90- otel_contrib_version = os .environ .get (' OTEL_CONTRIB_VERSION' )
91-
92+ otel_python_version = os .environ .get (" OTEL_PYTHON_VERSION" )
93+ otel_contrib_version = os .environ .get (" OTEL_CONTRIB_VERSION" )
94+
9295 if not otel_python_version or not otel_contrib_version :
9396 print ("Error: OTEL_PYTHON_VERSION and OTEL_CONTRIB_VERSION environment variables required" )
9497 sys .exit (1 )
95-
96- pyproject_path = ' aws-opentelemetry-distro/pyproject.toml'
97-
98+
99+ pyproject_path = " aws-opentelemetry-distro/pyproject.toml"
100+
98101 try :
99- with open (pyproject_path , 'r' , encoding = ' utf-8' ) as input_file :
102+ with open (pyproject_path , "r" , encoding = " utf-8" ) as input_file :
100103 content = input_file .read ()
101-
104+
102105 updated = False
103-
106+
104107 # Update opentelemetry-python dependencies
105108 for dep in PYTHON_CORE_DEPS :
106109 pattern = rf'"{ re .escape (dep )} == [^"]*"'
107110 replacement = f'"{ dep } == { otel_python_version } "'
108111 if re .search (pattern , content ):
109112 content = re .sub (pattern , replacement , content )
110113 updated = True
111-
112- # Update opentelemetry-python-contrib dependencies
114+
115+ # Update opentelemetry-python-contrib dependencies
113116 for dep in CONTRIB_DEPS :
114117 pattern = rf'"{ re .escape (dep )} == [^"]*"'
115118 replacement = f'"{ dep } == { otel_contrib_version } "'
116119 if re .search (pattern , content ):
117120 content = re .sub (pattern , replacement , content )
118121 updated = True
119-
122+
120123 # Update dependencies with independent versioning
121124 for dep in AWS_DEPS :
122125 latest_version = get_latest_version (dep )
@@ -127,17 +130,18 @@ def main():
127130 content = re .sub (pattern , replacement , content )
128131 updated = True
129132 print (f"Updated { dep } to { latest_version } " )
130-
133+
131134 if updated :
132- with open (pyproject_path , 'w' , encoding = ' utf-8' ) as output_file :
135+ with open (pyproject_path , "w" , encoding = " utf-8" ) as output_file :
133136 output_file .write (content )
134- print (f' Dependencies updated to Python { otel_python_version } / Contrib { otel_contrib_version } ' )
137+ print (f" Dependencies updated to Python { otel_python_version } / Contrib { otel_contrib_version } " )
135138 else :
136- print (' No OpenTelemetry dependencies found to update' )
137-
139+ print (" No OpenTelemetry dependencies found to update" )
140+
138141 except (OSError , IOError ) as file_error :
139142 print (f"Error updating dependencies: { file_error } " )
140143 sys .exit (1 )
141144
142- if __name__ == '__main__' :
145+
146+ if __name__ == "__main__" :
143147 main ()
0 commit comments