diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py index 6fa36f0463..afd5a045d9 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py @@ -77,7 +77,7 @@ def _pip_check(): ) as check_pipe: pip_check = check_pipe.communicate()[0].decode() pip_check_lower = pip_check.lower() - for package_tup in libraries.values(): + for package_tup in libraries: for package in package_tup: if package.lower() in pip_check_lower: raise RuntimeError(f"Dependency conflict found: {pip_check}") @@ -102,15 +102,12 @@ def _is_installed(req): def _find_installed_libraries(): - libs = default_instrumentations[:] - libs.extend( - [ - v["instrumentation"] - for _, v in libraries.items() - if _is_installed(v["library"]) - ] - ) - return libs + for lib in default_instrumentations: + yield lib + + for lib in libraries: + if _is_installed(lib["library"]): + yield lib["instrumentation"] def _run_requirements(): diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py index 6e193539a8..dc386cf9cc 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py @@ -15,176 +15,176 @@ # DO NOT EDIT. THIS FILE WAS AUTOGENERATED FROM INSTRUMENTATION PACKAGES. # RUN `python scripts/generate_instrumentation_bootstrap.py` TO REGENERATE. -libraries = { - "aio_pika": { +libraries = [ + { "library": "aio_pika >= 7.2.0, < 10.0.0", "instrumentation": "opentelemetry-instrumentation-aio-pika==0.43b0.dev", }, - "aiohttp": { + { "library": "aiohttp ~= 3.0", "instrumentation": "opentelemetry-instrumentation-aiohttp-client==0.43b0.dev", }, - "aiohttp": { + { "library": "aiohttp ~= 3.0", "instrumentation": "opentelemetry-instrumentation-aiohttp-server==0.43b0.dev", }, - "aiopg": { + { "library": "aiopg >= 0.13.0, < 2.0.0", "instrumentation": "opentelemetry-instrumentation-aiopg==0.43b0.dev", }, - "asgiref": { + { "library": "asgiref ~= 3.0", "instrumentation": "opentelemetry-instrumentation-asgi==0.43b0.dev", }, - "asyncpg": { + { "library": "asyncpg >= 0.12.0", "instrumentation": "opentelemetry-instrumentation-asyncpg==0.43b0.dev", }, - "boto": { + { "library": "boto~=2.0", "instrumentation": "opentelemetry-instrumentation-boto==0.43b0.dev", }, - "boto3": { + { "library": "boto3 ~= 1.0", "instrumentation": "opentelemetry-instrumentation-boto3sqs==0.43b0.dev", }, - "botocore": { + { "library": "botocore ~= 1.0", "instrumentation": "opentelemetry-instrumentation-botocore==0.43b0.dev", }, - "cassandra-driver": { + { "library": "cassandra-driver ~= 3.25", "instrumentation": "opentelemetry-instrumentation-cassandra==0.43b0.dev", }, - "scylla-driver": { + { "library": "scylla-driver ~= 3.25", "instrumentation": "opentelemetry-instrumentation-cassandra==0.43b0.dev", }, - "celery": { + { "library": "celery >= 4.0, < 6.0", "instrumentation": "opentelemetry-instrumentation-celery==0.43b0.dev", }, - "confluent-kafka": { + { "library": "confluent-kafka >= 1.8.2, <= 2.2.0", "instrumentation": "opentelemetry-instrumentation-confluent-kafka==0.43b0.dev", }, - "django": { + { "library": "django >= 1.10", "instrumentation": "opentelemetry-instrumentation-django==0.43b0.dev", }, - "elasticsearch": { + { "library": "elasticsearch >= 2.0", "instrumentation": "opentelemetry-instrumentation-elasticsearch==0.43b0.dev", }, - "falcon": { + { "library": "falcon >= 1.4.1, < 4.0.0", "instrumentation": "opentelemetry-instrumentation-falcon==0.43b0.dev", }, - "fastapi": { + { "library": "fastapi ~= 0.58", "instrumentation": "opentelemetry-instrumentation-fastapi==0.43b0.dev", }, - "flask": { + { "library": "flask >= 1.0, < 3.0", "instrumentation": "opentelemetry-instrumentation-flask==0.43b0.dev", }, - "werkzeug": { + { "library": "werkzeug < 3.0.0", "instrumentation": "opentelemetry-instrumentation-flask==0.43b0.dev", }, - "grpcio": { + { "library": "grpcio ~= 1.27", "instrumentation": "opentelemetry-instrumentation-grpc==0.43b0.dev", }, - "httpx": { + { "library": "httpx >= 0.18.0", "instrumentation": "opentelemetry-instrumentation-httpx==0.43b0.dev", }, - "jinja2": { + { "library": "jinja2 >= 2.7, < 4.0", "instrumentation": "opentelemetry-instrumentation-jinja2==0.43b0.dev", }, - "kafka-python": { + { "library": "kafka-python >= 2.0", "instrumentation": "opentelemetry-instrumentation-kafka-python==0.43b0.dev", }, - "mysql-connector-python": { + { "library": "mysql-connector-python ~= 8.0", "instrumentation": "opentelemetry-instrumentation-mysql==0.43b0.dev", }, - "mysqlclient": { + { "library": "mysqlclient < 3", "instrumentation": "opentelemetry-instrumentation-mysqlclient==0.43b0.dev", }, - "pika": { + { "library": "pika >= 0.12.0", "instrumentation": "opentelemetry-instrumentation-pika==0.43b0.dev", }, - "psycopg2": { + { "library": "psycopg2 >= 2.7.3.1", "instrumentation": "opentelemetry-instrumentation-psycopg2==0.43b0.dev", }, - "pymemcache": { + { "library": "pymemcache >= 1.3.5, < 5", "instrumentation": "opentelemetry-instrumentation-pymemcache==0.43b0.dev", }, - "pymongo": { + { "library": "pymongo >= 3.1, < 5.0", "instrumentation": "opentelemetry-instrumentation-pymongo==0.43b0.dev", }, - "PyMySQL": { + { "library": "PyMySQL < 2", "instrumentation": "opentelemetry-instrumentation-pymysql==0.43b0.dev", }, - "pyramid": { + { "library": "pyramid >= 1.7", "instrumentation": "opentelemetry-instrumentation-pyramid==0.43b0.dev", }, - "redis": { + { "library": "redis >= 2.6", "instrumentation": "opentelemetry-instrumentation-redis==0.43b0.dev", }, - "remoulade": { + { "library": "remoulade >= 0.50", "instrumentation": "opentelemetry-instrumentation-remoulade==0.43b0.dev", }, - "requests": { + { "library": "requests ~= 2.0", "instrumentation": "opentelemetry-instrumentation-requests==0.43b0.dev", }, - "scikit-learn": { + { "library": "scikit-learn ~= 0.24.0", "instrumentation": "opentelemetry-instrumentation-sklearn==0.43b0.dev", }, - "sqlalchemy": { + { "library": "sqlalchemy", "instrumentation": "opentelemetry-instrumentation-sqlalchemy==0.43b0.dev", }, - "starlette": { + { "library": "starlette ~= 0.13.0", "instrumentation": "opentelemetry-instrumentation-starlette==0.43b0.dev", }, - "psutil": { + { "library": "psutil >= 5", "instrumentation": "opentelemetry-instrumentation-system-metrics==0.43b0.dev", }, - "tornado": { + { "library": "tornado >= 5.1.1", "instrumentation": "opentelemetry-instrumentation-tornado==0.43b0.dev", }, - "tortoise-orm": { + { "library": "tortoise-orm >= 0.17.0", "instrumentation": "opentelemetry-instrumentation-tortoiseorm==0.43b0.dev", }, - "pydantic": { + { "library": "pydantic >= 1.10.2", "instrumentation": "opentelemetry-instrumentation-tortoiseorm==0.43b0.dev", }, - "urllib3": { + { "library": "urllib3 >= 1.0.0, < 3.0.0", "instrumentation": "opentelemetry-instrumentation-urllib3==0.43b0.dev", }, -} +] default_instrumentations = [ "opentelemetry-instrumentation-aws-lambda==0.43b0.dev", "opentelemetry-instrumentation-dbapi==0.43b0.dev", diff --git a/scripts/generate_instrumentation_bootstrap.py b/scripts/generate_instrumentation_bootstrap.py index 23841309ff..40827c2064 100755 --- a/scripts/generate_instrumentation_bootstrap.py +++ b/scripts/generate_instrumentation_bootstrap.py @@ -58,14 +58,12 @@ def main(): # pylint: disable=no-member default_instrumentations = ast.List(elts=[]) - libraries = ast.Dict(keys=[], values=[]) + libraries = ast.List(elts=[]) for pkg in get_instrumentation_packages(): if not pkg["instruments"]: default_instrumentations.elts.append(ast.Str(pkg["requirement"])) for target_pkg in pkg["instruments"]: - parsed = pkg_resources.Requirement.parse(target_pkg) - libraries.keys.append(ast.Str(parsed.name)) - libraries.values.append( + libraries.elts.append( ast.Dict( keys=[ast.Str("library"), ast.Str("instrumentation")], values=[ast.Str(target_pkg), ast.Str(pkg["requirement"])],