From 070d5669d72c1a122d9b24b77bc719c4bd892c25 Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Wed, 14 Feb 2024 16:31:44 -0300 Subject: [PATCH 01/18] feat: replace pkg_resource for importlib --- .../instrumentation/dependencies.py | 21 +++---------------- .../tests/test_dependencies.py | 8 +++---- .../tests/test_distro.py | 2 +- 3 files changed, 7 insertions(+), 24 deletions(-) diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py index 2da0a3d18b..9792c5a106 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py @@ -1,13 +1,7 @@ from logging import getLogger from typing import Collection, Optional -from pkg_resources import ( - Distribution, - DistributionNotFound, - RequirementParseError, - VersionConflict, - get_distribution, -) +from importlib.metadata import distribution, PackageNotFoundError, Distribution logger = getLogger(__name__) @@ -47,16 +41,7 @@ def get_dependency_conflicts( ) -> Optional[DependencyConflict]: for dep in deps: try: - get_distribution(dep) - except VersionConflict as exc: - return DependencyConflict(dep, exc.dist) - except DistributionNotFound: - return DependencyConflict(dep) - except RequirementParseError as exc: - logger.warning( - 'error parsing dependency, reporting as a conflict: "%s" - %s', - dep, - exc, - ) + distribution(dep) + except PackageNotFoundError: return DependencyConflict(dep) return None diff --git a/opentelemetry-instrumentation/tests/test_dependencies.py b/opentelemetry-instrumentation/tests/test_dependencies.py index 04bcf476ea..7f10d29a32 100644 --- a/opentelemetry-instrumentation/tests/test_dependencies.py +++ b/opentelemetry-instrumentation/tests/test_dependencies.py @@ -14,7 +14,7 @@ # pylint: disable=protected-access -import pkg_resources +from importlib.metadata import Distribution, requires import pytest from opentelemetry.instrumentation.dependencies import ( @@ -53,14 +53,12 @@ def test_get_dependency_conflicts_mismatched_version(self): def test_get_dist_dependency_conflicts(self): def mock_requires(extras=()): if "instruments" in extras: - return [ - pkg_resources.Requirement( + return requires( 'test-pkg ~= 1.0; extra == "instruments"' ) - ] return [] - dist = pkg_resources.Distribution( + dist = Distribution( project_name="test-instrumentation", version="1.0" ) dist.requires = mock_requires diff --git a/opentelemetry-instrumentation/tests/test_distro.py b/opentelemetry-instrumentation/tests/test_distro.py index 399b3f8a65..611b30048b 100644 --- a/opentelemetry-instrumentation/tests/test_distro.py +++ b/opentelemetry-instrumentation/tests/test_distro.py @@ -15,7 +15,7 @@ from unittest import TestCase -from pkg_resources import EntryPoint +from importlib.metadata import EntryPoint from opentelemetry.instrumentation.distro import BaseDistro from opentelemetry.instrumentation.instrumentor import BaseInstrumentor From 9cae8054e85c9d31565c5347c101d51c1362e1bd Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Wed, 14 Feb 2024 17:42:10 -0300 Subject: [PATCH 02/18] chore: add entry on changelog --- CHANGELOG.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 003f8054f6..2aa5867dc4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,8 +11,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- `opentelemetry-instrumentation-kafka-python` Instrument temporary fork, kafka-python-ng - inside kafka-python's instrumentation +- Deprecation of pkg_resource in favor of importlib.metadata + ([#2180](https://github.com/open-telemetry/opentelemetry-python-contrib/issues/2180)) +- `opentelemetry-instrumentation-kafka-python` Instrument temporary fork, kafka-python-ng inside kafka-python's instrumentation ([#2537](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2537)) ### Breaking changes From bf10494c688eb6dae1d3e2b6d381fb6e87f0df12 Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Wed, 14 Feb 2024 18:35:27 -0300 Subject: [PATCH 03/18] feat: update to 132 --- .../auto_instrumentation/__init__.py | 6 +++--- .../instrumentation/auto_instrumentation/_load.py | 12 ++++++------ .../opentelemetry/instrumentation/bootstrap.py | 15 ++++----------- .../src/opentelemetry/instrumentation/distro.py | 2 +- 4 files changed, 14 insertions(+), 21 deletions(-) diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/__init__.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/__init__.py index a09334432d..24c3b19ef1 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/__init__.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/__init__.py @@ -19,7 +19,7 @@ from re import sub from shutil import which -from pkg_resources import iter_entry_points +from importlib.metadata import entry_points from opentelemetry.instrumentation.version import __version__ @@ -48,8 +48,8 @@ def run() -> None: argument_otel_environment_variable = {} - for entry_point in iter_entry_points( - "opentelemetry_environment_variables" + for entry_point in entry_points().get( + "opentelemetry_environment_variables", [] ): environment_variable_module = entry_point.load() diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py index 27b57da3ef..25ddbfd4a8 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py @@ -15,7 +15,7 @@ from logging import getLogger from os import environ -from pkg_resources import iter_entry_points +from importlib.metadata import entry_points from opentelemetry.instrumentation.dependencies import ( get_dist_dependency_conflicts, @@ -33,7 +33,7 @@ def _load_distro() -> BaseDistro: distro_name = environ.get(OTEL_PYTHON_DISTRO, None) - for entry_point in iter_entry_points("opentelemetry_distro"): + for entry_point in entry_points().get("opentelemetry_distro", []): try: # If no distro is specified, use first to come up. if distro_name is None or distro_name == entry_point.name: @@ -63,10 +63,10 @@ def _load_instrumentors(distro): # to handle users entering "requests , flask" or "requests, flask" with spaces package_to_exclude = [x.strip() for x in package_to_exclude] - for entry_point in iter_entry_points("opentelemetry_pre_instrument"): + for entry_point in entry_points().get("opentelemetry_pre_instrument", []): entry_point.load()() - for entry_point in iter_entry_points("opentelemetry_instrumentor"): + for entry_point in entry_points().get("opentelemetry_instrumentor", []): if entry_point.name in package_to_exclude: _logger.debug( "Instrumentation skipped for library %s", entry_point.name @@ -90,14 +90,14 @@ def _load_instrumentors(distro): _logger.exception("Instrumenting of %s failed", entry_point.name) raise exc - for entry_point in iter_entry_points("opentelemetry_post_instrument"): + for entry_point in entry_points().get("opentelemetry_post_instrument", []): entry_point.load()() def _load_configurators(): configurator_name = environ.get(OTEL_PYTHON_CONFIGURATOR, None) configured = None - for entry_point in iter_entry_points("opentelemetry_configurator"): + for entry_point in entry_points().get("opentelemetry_configurator", []): if configured is not None: _logger.warning( "Configuration of %s not loaded, %s already loaded", diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py index 1cc28abca4..22d93b0419 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py @@ -23,7 +23,7 @@ check_call, ) -import pkg_resources +from importlib.metadata import distribution, PackageNotFoundError from opentelemetry.instrumentation.bootstrap_gen import ( default_instrumentations, @@ -93,17 +93,10 @@ def _pip_check(): def _is_installed(req): if req in sys.modules: return True - + try: - pkg_resources.get_distribution(req) - except pkg_resources.DistributionNotFound: - return False - except pkg_resources.VersionConflict as exc: - logger.warning( - "instrumentation for package %s is available but version %s is installed. Skipping.", - exc.req, - exc.dist.as_requirement(), # pylint: disable=no-member - ) + distribution(req) + except PackageNotFoundError: return False return True diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/distro.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/distro.py index 93646bbb2f..274886f42f 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/distro.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/distro.py @@ -20,7 +20,7 @@ from abc import ABC, abstractmethod from logging import getLogger -from pkg_resources import EntryPoint +from importlib.metadata import EntryPoint from opentelemetry.instrumentation.instrumentor import BaseInstrumentor From 99502c9c27c54baa2d60051283737c5b1618d6c2 Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Thu, 15 Feb 2024 21:06:55 -0300 Subject: [PATCH 04/18] feat: add dist logic and version conflict --- opentelemetry-instrumentation/pyproject.toml | 1 - .../auto_instrumentation/_load.py | 29 +++++++- .../instrumentation/bootstrap.py | 17 +++-- .../instrumentation/dependencies.py | 14 ++-- .../tests/auto_instrumentation/test_load.py | 72 ++++++++++++++++--- 5 files changed, 112 insertions(+), 21 deletions(-) diff --git a/opentelemetry-instrumentation/pyproject.toml b/opentelemetry-instrumentation/pyproject.toml index edaf400419..86039dc3ec 100644 --- a/opentelemetry-instrumentation/pyproject.toml +++ b/opentelemetry-instrumentation/pyproject.toml @@ -26,7 +26,6 @@ classifiers = [ ] dependencies = [ "opentelemetry-api ~= 1.4", - "setuptools >= 16.0", "wrapt >= 1.0.0, < 2.0.0", ] diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py index 25ddbfd4a8..d5ab20faf7 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py @@ -15,7 +15,7 @@ from logging import getLogger from os import environ -from importlib.metadata import entry_points +from importlib.metadata import entry_points, EntryPoint, distributions from opentelemetry.instrumentation.dependencies import ( get_dist_dependency_conflicts, @@ -31,6 +31,29 @@ _logger = getLogger(__name__) +class _EntryPointDistFinder: + def __int__(self): + self._mapping = None + + def dist_for(self, entry_point: EntryPoint): + dist = getattr(entry_point, "dist", None) + if dist: + return dist + + if self._mapping is None: + self._mapping = { + self._key_for(ep): dist + for ep in dist.entry_points + for dist in distributions() + } + + return self._mapping.get(self._key_for(entry_point)) + + @staticmethod + def _key_for(entry_point: EntryPoint): + return f"{entry_point.group}:{entry_point.name}:{entry_point.value}" + + def _load_distro() -> BaseDistro: distro_name = environ.get(OTEL_PYTHON_DISTRO, None) for entry_point in entry_points().get("opentelemetry_distro", []): @@ -58,6 +81,7 @@ def _load_distro() -> BaseDistro: def _load_instrumentors(distro): package_to_exclude = environ.get(OTEL_PYTHON_DISABLED_INSTRUMENTATIONS, []) + entry_point_finder = _EntryPointDistFinder() if isinstance(package_to_exclude, str): package_to_exclude = package_to_exclude.split(",") # to handle users entering "requests , flask" or "requests, flask" with spaces @@ -74,7 +98,8 @@ def _load_instrumentors(distro): continue try: - conflict = get_dist_dependency_conflicts(entry_point.dist) + entry_point_dist = entry_point_finder.dist_for(entry_point) + conflict = get_dist_dependency_conflicts(entry_point_dist) if conflict: _logger.debug( "Skipping instrumentation %s: %s", diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py index 22d93b0419..81316f9ecb 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py @@ -23,7 +23,8 @@ check_call, ) -from importlib.metadata import distribution, PackageNotFoundError +from packaging.requirements import Requirement +from importlib.metadata import PackageNotFoundError, version from opentelemetry.instrumentation.bootstrap_gen import ( default_instrumentations, @@ -91,13 +92,21 @@ def _pip_check(): def _is_installed(req): - if req in sys.modules: - return True + req = Requirement(req) try: - distribution(req) + dist_version = version(req.name) except PackageNotFoundError: return False + + if not req.specifier.filter(dist_version): + logger.warning( + "instrumentation for package %s is available" + " but version %s is installed. Skipping.", + req, + dist_version + ) + return False return True diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py index 9792c5a106..1ea4e9a3a4 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py @@ -1,7 +1,8 @@ from logging import getLogger from typing import Collection, Optional -from importlib.metadata import distribution, PackageNotFoundError, Distribution +from packaging.requirements import Requirement +from importlib.metadata import PackageNotFoundError, Distribution, requires, version logger = getLogger(__name__) @@ -21,9 +22,9 @@ def __str__(self): def get_dist_dependency_conflicts( dist: Distribution, ) -> Optional[DependencyConflict]: - main_deps = dist.requires() + main_deps = dist.requires instrumentation_deps = [] - for dep in dist.requires(("instruments",)): + for dep in requires(("instruments",)): if dep not in main_deps: # we set marker to none so string representation of the dependency looks like # requests ~= 1.0 @@ -40,8 +41,11 @@ def get_dependency_conflicts( deps: Collection[str], ) -> Optional[DependencyConflict]: for dep in deps: + req = Requirement(dep) try: - distribution(dep) + dist_version = version(req.name) except PackageNotFoundError: - return DependencyConflict(dep) + return DependencyConflict(req.name) + if not req.specifier.filter(dist_version): + return DependencyConflict(req.name) return None diff --git a/opentelemetry-instrumentation/tests/auto_instrumentation/test_load.py b/opentelemetry-instrumentation/tests/auto_instrumentation/test_load.py index 5fc59b542d..9b0941bafa 100644 --- a/opentelemetry-instrumentation/tests/auto_instrumentation/test_load.py +++ b/opentelemetry-instrumentation/tests/auto_instrumentation/test_load.py @@ -30,7 +30,13 @@ class TestLoad(TestCase): "os.environ", {OTEL_PYTHON_CONFIGURATOR: "custom_configurator2"} ) @patch( - "opentelemetry.instrumentation.auto_instrumentation._load.iter_entry_points" + "opentelemetry.instrumentation.auto_instrumentation._load.entry_points" + ) + @patch( + "opentelemetry.instrumentation.auto_instrumentation._load.distributions" + ) + @patch( + "opentelemetry.instrumentation.auto_instrumentation._load.EntryPoint" ) def test_load_configurators( self, iter_mock @@ -61,7 +67,13 @@ def test_load_configurators( "os.environ", {OTEL_PYTHON_CONFIGURATOR: "custom_configurator2"} ) @patch( - "opentelemetry.instrumentation.auto_instrumentation._load.iter_entry_points" + "opentelemetry.instrumentation.auto_instrumentation._load.entry_points" + ) + @patch( + "opentelemetry.instrumentation.auto_instrumentation._load.distributions" + ) + @patch( + "opentelemetry.instrumentation.auto_instrumentation._load.EntryPoint" ) def test_load_configurators_no_ep( self, iter_mock @@ -74,7 +86,13 @@ def test_load_configurators_no_ep( "os.environ", {OTEL_PYTHON_CONFIGURATOR: "custom_configurator2"} ) @patch( - "opentelemetry.instrumentation.auto_instrumentation._load.iter_entry_points" + "opentelemetry.instrumentation.auto_instrumentation._load.entry_points" + ) + @patch( + "opentelemetry.instrumentation.auto_instrumentation._load.distributions" + ) + @patch( + "opentelemetry.instrumentation.auto_instrumentation._load.EntryPoint" ) def test_load_configurators_error(self, iter_mock): # Add multiple entry points but only specify the 2nd in the environment variable. @@ -101,7 +119,13 @@ def test_load_configurators_error(self, iter_mock): "opentelemetry.instrumentation.auto_instrumentation._load.isinstance" ) @patch( - "opentelemetry.instrumentation.auto_instrumentation._load.iter_entry_points" + "opentelemetry.instrumentation.auto_instrumentation._load.entry_points" + ) + @patch( + "opentelemetry.instrumentation.auto_instrumentation._load.distributions" + ) + @patch( + "opentelemetry.instrumentation.auto_instrumentation._load.EntryPoint" ) def test_load_distro(self, iter_mock, isinstance_mock): # Add multiple entry points but only specify the 2nd in the environment variable. @@ -134,7 +158,13 @@ def test_load_distro(self, iter_mock, isinstance_mock): "opentelemetry.instrumentation.auto_instrumentation._load.DefaultDistro" ) @patch( - "opentelemetry.instrumentation.auto_instrumentation._load.iter_entry_points" + "opentelemetry.instrumentation.auto_instrumentation._load.entry_points" + ) + @patch( + "opentelemetry.instrumentation.auto_instrumentation._load.distributions" + ) + @patch( + "opentelemetry.instrumentation.auto_instrumentation._load.EntryPoint" ) def test_load_distro_not_distro( self, iter_mock, default_distro_mock, isinstance_mock @@ -166,7 +196,13 @@ def test_load_distro_not_distro( "opentelemetry.instrumentation.auto_instrumentation._load.DefaultDistro" ) @patch( - "opentelemetry.instrumentation.auto_instrumentation._load.iter_entry_points" + "opentelemetry.instrumentation.auto_instrumentation._load.entry_points" + ) + @patch( + "opentelemetry.instrumentation.auto_instrumentation._load.distributions" + ) + @patch( + "opentelemetry.instrumentation.auto_instrumentation._load.EntryPoint" ) def test_load_distro_no_ep(self, iter_mock, default_distro_mock): iter_mock.return_value = () @@ -181,7 +217,13 @@ def test_load_distro_no_ep(self, iter_mock, default_distro_mock): "opentelemetry.instrumentation.auto_instrumentation._load.isinstance" ) @patch( - "opentelemetry.instrumentation.auto_instrumentation._load.iter_entry_points" + "opentelemetry.instrumentation.auto_instrumentation._load.entry_points" + ) + @patch( + "opentelemetry.instrumentation.auto_instrumentation._load.distributions" + ) + @patch( + "opentelemetry.instrumentation.auto_instrumentation._load.EntryPoint" ) def test_load_distro_error(self, iter_mock, isinstance_mock): ep_mock1 = Mock() @@ -211,7 +253,13 @@ def test_load_distro_error(self, iter_mock, isinstance_mock): "opentelemetry.instrumentation.auto_instrumentation._load.get_dist_dependency_conflicts" ) @patch( - "opentelemetry.instrumentation.auto_instrumentation._load.iter_entry_points" + "opentelemetry.instrumentation.auto_instrumentation._load.entry_points" + ) + @patch( + "opentelemetry.instrumentation.auto_instrumentation._load.distributions" + ) + @patch( + "opentelemetry.instrumentation.auto_instrumentation._load.EntryPoint" ) def test_load_instrumentors(self, iter_mock, dep_mock): # Mock opentelemetry_pre_instrument entry points @@ -285,7 +333,13 @@ def test_load_instrumentors(self, iter_mock, dep_mock): "opentelemetry.instrumentation.auto_instrumentation._load.get_dist_dependency_conflicts" ) @patch( - "opentelemetry.instrumentation.auto_instrumentation._load.iter_entry_points" + "opentelemetry.instrumentation.auto_instrumentation._load.entry_points" + ) + @patch( + "opentelemetry.instrumentation.auto_instrumentation._load.distributions" + ) + @patch( + "opentelemetry.instrumentation.auto_instrumentation._load.EntryPoint" ) def test_load_instrumentors_dep_conflict( self, iter_mock, dep_mock From 1358c12722d43d77df611c679ed0839a5880341c Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Tue, 20 Feb 2024 19:30:47 -0300 Subject: [PATCH 05/18] feat: add requirements solution --- opentelemetry-instrumentation/pyproject.toml | 2 + .../auto_instrumentation/__init__.py | 4 +- .../auto_instrumentation/_load.py | 10 ++-- .../instrumentation/dependencies.py | 47 ++++++++++++------- .../tests/test_dependencies.py | 19 ++++++-- 5 files changed, 54 insertions(+), 28 deletions(-) diff --git a/opentelemetry-instrumentation/pyproject.toml b/opentelemetry-instrumentation/pyproject.toml index 86039dc3ec..8df585ebb4 100644 --- a/opentelemetry-instrumentation/pyproject.toml +++ b/opentelemetry-instrumentation/pyproject.toml @@ -27,6 +27,8 @@ classifiers = [ dependencies = [ "opentelemetry-api ~= 1.4", "wrapt >= 1.0.0, < 2.0.0", + "importlib-metadata >= 6.0, < 7.0", + "packaging >= 18.0", ] [project.scripts] diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/__init__.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/__init__.py index 24c3b19ef1..adea9e1f0c 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/__init__.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/__init__.py @@ -48,9 +48,7 @@ def run() -> None: argument_otel_environment_variable = {} - for entry_point in entry_points().get( - "opentelemetry_environment_variables", [] - ): + for entry_point in entry_points(group="opentelemetry_environment_variables"): environment_variable_module = entry_point.load() for attribute in dir(environment_variable_module): diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py index d5ab20faf7..0f00fbbcb2 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py @@ -56,7 +56,7 @@ def _key_for(entry_point: EntryPoint): def _load_distro() -> BaseDistro: distro_name = environ.get(OTEL_PYTHON_DISTRO, None) - for entry_point in entry_points().get("opentelemetry_distro", []): + for entry_point in entry_points(group="opentelemetry_distro"): try: # If no distro is specified, use first to come up. if distro_name is None or distro_name == entry_point.name: @@ -87,10 +87,10 @@ def _load_instrumentors(distro): # to handle users entering "requests , flask" or "requests, flask" with spaces package_to_exclude = [x.strip() for x in package_to_exclude] - for entry_point in entry_points().get("opentelemetry_pre_instrument", []): + for entry_point in entry_points(group="opentelemetry_pre_instrument"): entry_point.load()() - for entry_point in entry_points().get("opentelemetry_instrumentor", []): + for entry_point in entry_points(group="opentelemetry_instrumentor"): if entry_point.name in package_to_exclude: _logger.debug( "Instrumentation skipped for library %s", entry_point.name @@ -115,14 +115,14 @@ def _load_instrumentors(distro): _logger.exception("Instrumenting of %s failed", entry_point.name) raise exc - for entry_point in entry_points().get("opentelemetry_post_instrument", []): + for entry_point in entry_points(group="opentelemetry_post_instrument"): entry_point.load()() def _load_configurators(): configurator_name = environ.get(OTEL_PYTHON_CONFIGURATOR, None) configured = None - for entry_point in entry_points().get("opentelemetry_configurator", []): + for entry_point in entry_points(group="opentelemetry_configurator"): if configured is not None: _logger.warning( "Configuration of %s not loaded, %s already loaded", diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py index 1ea4e9a3a4..13f15de336 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py @@ -1,8 +1,8 @@ from logging import getLogger from typing import Collection, Optional -from packaging.requirements import Requirement -from importlib.metadata import PackageNotFoundError, Distribution, requires, version +from packaging.requirements import Requirement, InvalidRequirement +from importlib.metadata import PackageNotFoundError, Distribution, version logger = getLogger(__name__) @@ -22,30 +22,43 @@ def __str__(self): def get_dist_dependency_conflicts( dist: Distribution, ) -> Optional[DependencyConflict]: - main_deps = dist.requires instrumentation_deps = [] - for dep in requires(("instruments",)): - if dep not in main_deps: - # we set marker to none so string representation of the dependency looks like - # requests ~= 1.0 - # instead of - # requests ~= 1.0; extra = "instruments" - # which does not work with `get_distribution()` - dep.marker = None - instrumentation_deps.append(str(dep)) + extra = "extra" + instruments = "instruments" + instruments_marker = {extra: instruments} + for dep in dist.requires: + if extra not in dep or instruments not in dep: + continue + + req = Requirement(dep) + if req.marker.evaluate(instruments_marker): + instrumentation_deps.append(req) return get_dependency_conflicts(instrumentation_deps) def get_dependency_conflicts( - deps: Collection[str], + deps: Collection[str, Requirement], ) -> Optional[DependencyConflict]: for dep in deps: - req = Requirement(dep) + if isinstance(dep, Requirement): + req = dep + else: + try: + req = Requirement(dep) + except InvalidRequirement as exc: + logger.warning( + 'error parsing dependency, reporting as a conflict: "%s" - %s', + dep, + exc, + ) + return DependencyConflict(dep) + try: dist_version = version(req.name) except PackageNotFoundError: - return DependencyConflict(req.name) - if not req.specifier.filter(dist_version): - return DependencyConflict(req.name) + return DependencyConflict(dep) + + if not req.specifier.contains(dist_version): + return DependencyConflict(dep, f"{req.name} {dist_version}") return None diff --git a/opentelemetry-instrumentation/tests/test_dependencies.py b/opentelemetry-instrumentation/tests/test_dependencies.py index 7f10d29a32..6b0caea548 100644 --- a/opentelemetry-instrumentation/tests/test_dependencies.py +++ b/opentelemetry-instrumentation/tests/test_dependencies.py @@ -15,6 +15,7 @@ # pylint: disable=protected-access from importlib.metadata import Distribution, requires +from packaging.requirements import Requirement, InvalidRequirement import pytest from opentelemetry.instrumentation.dependencies import ( @@ -29,9 +30,23 @@ class TestDependencyConflicts(TestBase): def test_get_dependency_conflicts_empty(self): self.assertIsNone(get_dependency_conflicts([])) + def test_get_dependency_conflicts_no_conflict_requirement(self): + req = Requirement("pytest") + self.assertIsNone(get_dependency_conflicts([req])) + def test_get_dependency_conflicts_no_conflict(self): self.assertIsNone(get_dependency_conflicts(["pytest"])) + def test_get_dependency_conflicts_not_installed_requirement(self): + req = Requirement("this-package-does-not-exist") + conflict = get_dependency_conflicts([req]) + self.assertTrue(conflict is not None) + self.assertTrue(isinstance(conflict, DependencyConflict)) + self.assertEqual( + str(conflict), + 'DependencyConflict: requested: "this-package-does-not-exist" but found: "None"', + ) + def test_get_dependency_conflicts_not_installed(self): conflict = get_dependency_conflicts(["this-package-does-not-exist"]) self.assertTrue(conflict is not None) @@ -58,9 +73,7 @@ def mock_requires(extras=()): ) return [] - dist = Distribution( - project_name="test-instrumentation", version="1.0" - ) + dist = Distribution() dist.requires = mock_requires conflict = get_dist_dependency_conflicts(dist) From 780bcd5298721c9e8e9f612dd35a87ba05007e3c Mon Sep 17 00:00:00 2001 From: Rodrigo Date: Mon, 26 Feb 2024 19:35:50 -0300 Subject: [PATCH 06/18] feat: update version importlib --- opentelemetry-instrumentation/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opentelemetry-instrumentation/pyproject.toml b/opentelemetry-instrumentation/pyproject.toml index 8df585ebb4..a5e89bca17 100644 --- a/opentelemetry-instrumentation/pyproject.toml +++ b/opentelemetry-instrumentation/pyproject.toml @@ -27,7 +27,7 @@ classifiers = [ dependencies = [ "opentelemetry-api ~= 1.4", "wrapt >= 1.0.0, < 2.0.0", - "importlib-metadata >= 6.0, < 7.0", + "importlib-metadata >= 6.0, < 8.0", "packaging >= 18.0", ] From 86f56efc15e14a422373408400f191d5c07c4e98 Mon Sep 17 00:00:00 2001 From: Rodrigo-Novas Date: Tue, 27 Aug 2024 12:24:22 -0300 Subject: [PATCH 07/18] refactor: add Union to collection type --- .../src/opentelemetry/instrumentation/dependencies.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py index 13f15de336..42f40caaeb 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py @@ -1,8 +1,8 @@ +from importlib.metadata import Distribution, PackageNotFoundError, version from logging import getLogger -from typing import Collection, Optional +from typing import Collection, Optional, Union -from packaging.requirements import Requirement, InvalidRequirement -from importlib.metadata import PackageNotFoundError, Distribution, version +from packaging.requirements import InvalidRequirement, Requirement logger = getLogger(__name__) @@ -38,7 +38,7 @@ def get_dist_dependency_conflicts( def get_dependency_conflicts( - deps: Collection[str, Requirement], + deps: Collection[Union[str, Requirement]], ) -> Optional[DependencyConflict]: for dep in deps: if isinstance(dep, Requirement): From 2364780d5343b418bb1bc59c71b9260384f4d747 Mon Sep 17 00:00:00 2001 From: Rodrigo-Novas Date: Tue, 27 Aug 2024 14:38:27 -0300 Subject: [PATCH 08/18] refactor: add value and group on tests --- opentelemetry-instrumentation/tests/test_distro.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opentelemetry-instrumentation/tests/test_distro.py b/opentelemetry-instrumentation/tests/test_distro.py index 611b30048b..add23a3f39 100644 --- a/opentelemetry-instrumentation/tests/test_distro.py +++ b/opentelemetry-instrumentation/tests/test_distro.py @@ -51,7 +51,7 @@ def test_load_instrumentor(self): distro = MockDistro() instrumentor = MockInstrumetor() - entry_point = MockEntryPoint(MockInstrumetor) + entry_point = MockEntryPoint(MockInstrumetor, value="opentelemetry", group="opentelemetry_distro") self.assertFalse(instrumentor._is_instrumented_by_opentelemetry) distro.load_instrumentor(entry_point) From 9750c8ba06d945fcf9b9cb7297b9c57e0e14fd82 Mon Sep 17 00:00:00 2001 From: Rodrigo-Novas Date: Tue, 27 Aug 2024 18:20:55 -0300 Subject: [PATCH 09/18] feat: execute tox --- .../instrumentation/auto_instrumentation/__init__.py | 7 ++++--- .../instrumentation/auto_instrumentation/_load.py | 3 +-- .../src/opentelemetry/instrumentation/bootstrap.py | 8 ++++---- .../src/opentelemetry/instrumentation/dependencies.py | 2 +- .../src/opentelemetry/instrumentation/distro.py | 3 +-- 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/__init__.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/__init__.py index adea9e1f0c..8b7070b195 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/__init__.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/__init__.py @@ -13,14 +13,13 @@ # limitations under the License. from argparse import REMAINDER, ArgumentParser +from importlib.metadata import entry_points from logging import getLogger from os import environ, execl, getcwd from os.path import abspath, dirname, pathsep from re import sub from shutil import which -from importlib.metadata import entry_points - from opentelemetry.instrumentation.version import __version__ _logger = getLogger(__name__) @@ -48,7 +47,9 @@ def run() -> None: argument_otel_environment_variable = {} - for entry_point in entry_points(group="opentelemetry_environment_variables"): + for entry_point in entry_points( + group="opentelemetry_environment_variables" + ): environment_variable_module = entry_point.load() for attribute in dir(environment_variable_module): diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py index 0f00fbbcb2..5186ff7835 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py @@ -12,11 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. +from importlib.metadata import EntryPoint, distributions, entry_points from logging import getLogger from os import environ -from importlib.metadata import entry_points, EntryPoint, distributions - from opentelemetry.instrumentation.dependencies import ( get_dist_dependency_conflicts, ) diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py index 81316f9ecb..7ef3a4e778 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py @@ -15,6 +15,7 @@ import argparse import logging import sys +from importlib.metadata import PackageNotFoundError, version from subprocess import ( PIPE, CalledProcessError, @@ -24,7 +25,6 @@ ) from packaging.requirements import Requirement -from importlib.metadata import PackageNotFoundError, version from opentelemetry.instrumentation.bootstrap_gen import ( default_instrumentations, @@ -93,18 +93,18 @@ def _pip_check(): def _is_installed(req): req = Requirement(req) - + try: dist_version = version(req.name) except PackageNotFoundError: return False - + if not req.specifier.filter(dist_version): logger.warning( "instrumentation for package %s is available" " but version %s is installed. Skipping.", req, - dist_version + dist_version, ) return False return True diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py index 42f40caaeb..24fe669215 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py @@ -52,7 +52,7 @@ def get_dependency_conflicts( dep, exc, ) - return DependencyConflict(dep) + return DependencyConflict(dep) try: dist_version = version(req.name) diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/distro.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/distro.py index 274886f42f..297e21657f 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/distro.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/distro.py @@ -18,9 +18,8 @@ """ from abc import ABC, abstractmethod -from logging import getLogger - from importlib.metadata import EntryPoint +from logging import getLogger from opentelemetry.instrumentation.instrumentor import BaseInstrumentor From 11926dfcaab8ab63f3d619251e7bd07fae12dcb7 Mon Sep 17 00:00:00 2001 From: Rodrigo-Novas Date: Fri, 30 Aug 2024 15:18:35 -0300 Subject: [PATCH 10/18] chore: change to unreleased side --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2aa5867dc4..7927cda803 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Breaking changes + +- Deprecation of pkg_resource in favor of importlib.metadata + ([#2180](https://github.com/open-telemetry/opentelemetry-python-contrib/issues/2180)) + ## Version 1.27.0/0.48b0 () ### Added From bf4491573e20b06814e1a11feeae2d524c7717e3 Mon Sep 17 00:00:00 2001 From: Rodrigo-Novas Date: Fri, 30 Aug 2024 16:08:30 -0300 Subject: [PATCH 11/18] chore: change issue number --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7927cda803..780e9e2140 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Breaking changes - Deprecation of pkg_resource in favor of importlib.metadata - ([#2180](https://github.com/open-telemetry/opentelemetry-python-contrib/issues/2180)) + ([#2181](https://github.com/open-telemetry/opentelemetry-python-contrib/issues/2181)) ## Version 1.27.0/0.48b0 () From 8dc274fc876ca7146af8423c3d6044af03559385 Mon Sep 17 00:00:00 2001 From: Diego Hurtado Date: Tue, 3 Sep 2024 15:44:41 -0600 Subject: [PATCH 12/18] Fix changelog --- CHANGELOG.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 780e9e2140..5197e7ecea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,8 +16,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Deprecation of pkg_resource in favor of importlib.metadata - ([#2180](https://github.com/open-telemetry/opentelemetry-python-contrib/issues/2180)) - `opentelemetry-instrumentation-kafka-python` Instrument temporary fork, kafka-python-ng inside kafka-python's instrumentation ([#2537](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2537)) From e459ac8a7f3ef68c04ff0aaa4f91fceca1a9fb28 Mon Sep 17 00:00:00 2001 From: Diego Hurtado Date: Wed, 4 Sep 2024 15:06:56 -0600 Subject: [PATCH 13/18] Update core SHA in tox.ini --- tox.ini | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index 600929a6ec..7c8daa4fe5 100644 --- a/tox.ini +++ b/tox.ini @@ -389,7 +389,8 @@ allowlist_externals = setenv = ; override CORE_REPO_SHA via env variable when testing other branches/commits than main ; i.e: CORE_REPO_SHA=dde62cebffe519c35875af6d06fae053b3be65ec tox -e - CORE_REPO_SHA={env:CORE_REPO_SHA:main} + ; CORE_REPO_SHA={env:CORE_REPO_SHA:main} + CORE_REPO_SHA=71dc0d2a33c7656e53e5cac0ebf1af95f3b5b9f9 CORE_REPO=git+https://github.com/open-telemetry/opentelemetry-python.git@{env:CORE_REPO_SHA} commands_pre = From 1928519d4a37024e4de3801ac58538344110b946 Mon Sep 17 00:00:00 2001 From: Diego Hurtado Date: Wed, 4 Sep 2024 15:31:03 -0600 Subject: [PATCH 14/18] wop --- .github/workflows/lint_0.yml | 2 +- .github/workflows/misc_0.yml | 2 +- .github/workflows/test_0.yml | 2 +- .github/workflows/test_1.yml | 2 +- tox.ini | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/lint_0.yml b/.github/workflows/lint_0.yml index b5d20541e5..4a433136bb 100644 --- a/.github/workflows/lint_0.yml +++ b/.github/workflows/lint_0.yml @@ -10,7 +10,7 @@ on: pull_request: env: - CORE_REPO_SHA: main + CORE_REPO_SHA: 67b33673458459ec8edc07d1054db3395afbfaff CONTRIB_REPO_SHA: main PIP_EXISTS_ACTION: w diff --git a/.github/workflows/misc_0.yml b/.github/workflows/misc_0.yml index 3c3f7bfacf..652b46b848 100644 --- a/.github/workflows/misc_0.yml +++ b/.github/workflows/misc_0.yml @@ -10,7 +10,7 @@ on: pull_request: env: - CORE_REPO_SHA: main + CORE_REPO_SHA: 67b33673458459ec8edc07d1054db3395afbfaff CONTRIB_REPO_SHA: main PIP_EXISTS_ACTION: w diff --git a/.github/workflows/test_0.yml b/.github/workflows/test_0.yml index d251737227..b769f590a1 100644 --- a/.github/workflows/test_0.yml +++ b/.github/workflows/test_0.yml @@ -10,7 +10,7 @@ on: pull_request: env: - CORE_REPO_SHA: main + CORE_REPO_SHA: 67b33673458459ec8edc07d1054db3395afbfaff CONTRIB_REPO_SHA: main PIP_EXISTS_ACTION: w diff --git a/.github/workflows/test_1.yml b/.github/workflows/test_1.yml index f7e71dd6b6..36f7d08946 100644 --- a/.github/workflows/test_1.yml +++ b/.github/workflows/test_1.yml @@ -10,7 +10,7 @@ on: pull_request: env: - CORE_REPO_SHA: main + CORE_REPO_SHA: 67b33673458459ec8edc07d1054db3395afbfaff CONTRIB_REPO_SHA: main PIP_EXISTS_ACTION: w diff --git a/tox.ini b/tox.ini index 7c8daa4fe5..3a2b8a4c04 100644 --- a/tox.ini +++ b/tox.ini @@ -390,7 +390,7 @@ setenv = ; override CORE_REPO_SHA via env variable when testing other branches/commits than main ; i.e: CORE_REPO_SHA=dde62cebffe519c35875af6d06fae053b3be65ec tox -e ; CORE_REPO_SHA={env:CORE_REPO_SHA:main} - CORE_REPO_SHA=71dc0d2a33c7656e53e5cac0ebf1af95f3b5b9f9 + CORE_REPO_SHA=67b33673458459ec8edc07d1054db3395afbfaff CORE_REPO=git+https://github.com/open-telemetry/opentelemetry-python.git@{env:CORE_REPO_SHA} commands_pre = From 1f3ff04c6410cdb236d9fdcd3b8671e15ce67ff1 Mon Sep 17 00:00:00 2001 From: Diego Hurtado Date: Wed, 4 Sep 2024 18:23:13 -0600 Subject: [PATCH 15/18] Update core repo sha again --- .github/workflows/lint_0.yml | 2 +- .github/workflows/misc_0.yml | 2 +- .github/workflows/test_0.yml | 2 +- .github/workflows/test_1.yml | 2 +- opentelemetry-instrumentation/pyproject.toml | 1 - .../instrumentation/auto_instrumentation/__init__.py | 2 +- .../instrumentation/auto_instrumentation/_load.py | 4 +++- tox.ini | 2 +- 8 files changed, 9 insertions(+), 8 deletions(-) diff --git a/.github/workflows/lint_0.yml b/.github/workflows/lint_0.yml index 4a433136bb..4cb7deb425 100644 --- a/.github/workflows/lint_0.yml +++ b/.github/workflows/lint_0.yml @@ -10,7 +10,7 @@ on: pull_request: env: - CORE_REPO_SHA: 67b33673458459ec8edc07d1054db3395afbfaff + CORE_REPO_SHA: 04e2d7a14dec5822ba78754b2ee2542797f8fe01 CONTRIB_REPO_SHA: main PIP_EXISTS_ACTION: w diff --git a/.github/workflows/misc_0.yml b/.github/workflows/misc_0.yml index 652b46b848..c768448d76 100644 --- a/.github/workflows/misc_0.yml +++ b/.github/workflows/misc_0.yml @@ -10,7 +10,7 @@ on: pull_request: env: - CORE_REPO_SHA: 67b33673458459ec8edc07d1054db3395afbfaff + CORE_REPO_SHA: 04e2d7a14dec5822ba78754b2ee2542797f8fe01 CONTRIB_REPO_SHA: main PIP_EXISTS_ACTION: w diff --git a/.github/workflows/test_0.yml b/.github/workflows/test_0.yml index b769f590a1..cf491bca33 100644 --- a/.github/workflows/test_0.yml +++ b/.github/workflows/test_0.yml @@ -10,7 +10,7 @@ on: pull_request: env: - CORE_REPO_SHA: 67b33673458459ec8edc07d1054db3395afbfaff + CORE_REPO_SHA: 04e2d7a14dec5822ba78754b2ee2542797f8fe01 CONTRIB_REPO_SHA: main PIP_EXISTS_ACTION: w diff --git a/.github/workflows/test_1.yml b/.github/workflows/test_1.yml index 36f7d08946..55af972ecf 100644 --- a/.github/workflows/test_1.yml +++ b/.github/workflows/test_1.yml @@ -10,7 +10,7 @@ on: pull_request: env: - CORE_REPO_SHA: 67b33673458459ec8edc07d1054db3395afbfaff + CORE_REPO_SHA: 04e2d7a14dec5822ba78754b2ee2542797f8fe01 CONTRIB_REPO_SHA: main PIP_EXISTS_ACTION: w diff --git a/opentelemetry-instrumentation/pyproject.toml b/opentelemetry-instrumentation/pyproject.toml index a5e89bca17..9d9dfe91a8 100644 --- a/opentelemetry-instrumentation/pyproject.toml +++ b/opentelemetry-instrumentation/pyproject.toml @@ -27,7 +27,6 @@ classifiers = [ dependencies = [ "opentelemetry-api ~= 1.4", "wrapt >= 1.0.0, < 2.0.0", - "importlib-metadata >= 6.0, < 8.0", "packaging >= 18.0", ] diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/__init__.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/__init__.py index 8b7070b195..22a2e03464 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/__init__.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/__init__.py @@ -13,7 +13,7 @@ # limitations under the License. from argparse import REMAINDER, ArgumentParser -from importlib.metadata import entry_points +from opentelemetry.util._importlib_metadata import entry_points from logging import getLogger from os import environ, execl, getcwd from os.path import abspath, dirname, pathsep diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py index 5186ff7835..ec6244d410 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation/_load.py @@ -12,7 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -from importlib.metadata import EntryPoint, distributions, entry_points +from opentelemetry.util._importlib_metadata import ( + EntryPoint, distributions, entry_points +) from logging import getLogger from os import environ diff --git a/tox.ini b/tox.ini index 3a2b8a4c04..6cbffc1a4d 100644 --- a/tox.ini +++ b/tox.ini @@ -390,7 +390,7 @@ setenv = ; override CORE_REPO_SHA via env variable when testing other branches/commits than main ; i.e: CORE_REPO_SHA=dde62cebffe519c35875af6d06fae053b3be65ec tox -e ; CORE_REPO_SHA={env:CORE_REPO_SHA:main} - CORE_REPO_SHA=67b33673458459ec8edc07d1054db3395afbfaff + CORE_REPO_SHA=04e2d7a14dec5822ba78754b2ee2542797f8fe01 CORE_REPO=git+https://github.com/open-telemetry/opentelemetry-python.git@{env:CORE_REPO_SHA} commands_pre = From 5fe5a2c4a0548ecc2ea3df0a1a34f9ac3e8c96c1 Mon Sep 17 00:00:00 2001 From: Diego Hurtado Date: Wed, 4 Sep 2024 18:30:52 -0600 Subject: [PATCH 16/18] Use opentelemertry importlib metadata --- .../opentelemetry/instrumentation/bootstrap.py | 4 +++- .../instrumentation/dependencies.py | 18 +++++++++++++++++- .../opentelemetry/instrumentation/distro.py | 2 +- .../tests/test_dependencies.py | 8 ++++---- .../tests/test_distro.py | 2 +- 5 files changed, 26 insertions(+), 8 deletions(-) diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py index 7ef3a4e778..aae56648e0 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py @@ -15,7 +15,9 @@ import argparse import logging import sys -from importlib.metadata import PackageNotFoundError, version +from opentelemetry.util._importlib_metadata import ( + PackageNotFoundError, version +) from subprocess import ( PIPE, CalledProcessError, diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py index 24fe669215..6e9379fb8c 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/dependencies.py @@ -1,4 +1,20 @@ -from importlib.metadata import Distribution, PackageNotFoundError, version +# Copyright The OpenTelemetry Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from opentelemetry.util._importlib_metadata import ( + Distribution, PackageNotFoundError, version +) from logging import getLogger from typing import Collection, Optional, Union diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/distro.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/distro.py index 297e21657f..ed7a3bf3d4 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/distro.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/distro.py @@ -18,7 +18,7 @@ """ from abc import ABC, abstractmethod -from importlib.metadata import EntryPoint +from opentelemetry.util._importlib_metadata import EntryPoint from logging import getLogger from opentelemetry.instrumentation.instrumentor import BaseInstrumentor diff --git a/opentelemetry-instrumentation/tests/test_dependencies.py b/opentelemetry-instrumentation/tests/test_dependencies.py index 6b0caea548..7448dec4e0 100644 --- a/opentelemetry-instrumentation/tests/test_dependencies.py +++ b/opentelemetry-instrumentation/tests/test_dependencies.py @@ -14,8 +14,8 @@ # pylint: disable=protected-access -from importlib.metadata import Distribution, requires -from packaging.requirements import Requirement, InvalidRequirement +from opentelemetry.util._importlib_metadata import Distribution, requires +from packaging.requirements import Requirement import pytest from opentelemetry.instrumentation.dependencies import ( @@ -69,8 +69,8 @@ def test_get_dist_dependency_conflicts(self): def mock_requires(extras=()): if "instruments" in extras: return requires( - 'test-pkg ~= 1.0; extra == "instruments"' - ) + 'test-pkg ~= 1.0; extra == "instruments"' + ) return [] dist = Distribution() diff --git a/opentelemetry-instrumentation/tests/test_distro.py b/opentelemetry-instrumentation/tests/test_distro.py index add23a3f39..8f937370a2 100644 --- a/opentelemetry-instrumentation/tests/test_distro.py +++ b/opentelemetry-instrumentation/tests/test_distro.py @@ -15,7 +15,7 @@ from unittest import TestCase -from importlib.metadata import EntryPoint +from opentelemetry.util._importlib_metadata import EntryPoint from opentelemetry.instrumentation.distro import BaseDistro from opentelemetry.instrumentation.instrumentor import BaseInstrumentor From 0f357654ae7e3cb2d1444b66bc4cc265586175b5 Mon Sep 17 00:00:00 2001 From: Diego Hurtado Date: Thu, 5 Sep 2024 15:05:40 -0600 Subject: [PATCH 17/18] Remove importlib-metadata from test requirements --- .../test-requirements.txt | 1 - .../opentelemetry-exporter-richconsole/test-requirements.txt | 1 - .../test-requirements-0.txt | 1 - .../test-requirements-1.txt | 1 - .../test-requirements-2.txt | 1 - .../test-requirements-3.txt | 1 - .../test-requirements.txt | 1 - .../test-requirements.txt | 1 - .../opentelemetry-instrumentation-aiopg/test-requirements.txt | 1 - .../opentelemetry-instrumentation-asgi/test-requirements.txt | 1 - .../opentelemetry-instrumentation-asyncio/test-requirements.txt | 1 - .../opentelemetry-instrumentation-asyncpg/test-requirements.txt | 1 - .../test-requirements.txt | 1 - .../opentelemetry-instrumentation-boto/test-requirements.txt | 1 - .../opentelemetry-instrumentation-boto3sqs/test-requirements.txt | 1 - .../opentelemetry-instrumentation-botocore/test-requirements.txt | 1 - .../test-requirements.txt | 1 - .../opentelemetry-instrumentation-celery/test-requirements-0.txt | 1 - .../opentelemetry-instrumentation-celery/test-requirements-1.txt | 1 - .../test-requirements.txt | 1 - .../opentelemetry-instrumentation-dbapi/test-requirements.txt | 1 - .../opentelemetry-instrumentation-django/test-requirements-0.txt | 1 - .../opentelemetry-instrumentation-django/test-requirements-1.txt | 1 - .../opentelemetry-instrumentation-django/test-requirements-2.txt | 1 - .../opentelemetry-instrumentation-django/test-requirements-3.txt | 1 - .../test-requirements-0.txt | 1 - .../test-requirements-1.txt | 1 - .../test-requirements-2.txt | 1 - .../opentelemetry-instrumentation-falcon/test-requirements-0.txt | 1 - .../opentelemetry-instrumentation-falcon/test-requirements-1.txt | 1 - .../opentelemetry-instrumentation-falcon/test-requirements-2.txt | 1 - .../opentelemetry-instrumentation-fastapi/test-requirements.txt | 1 - .../opentelemetry-instrumentation-flask/test-requirements-0.txt | 1 - .../opentelemetry-instrumentation-flask/test-requirements-1.txt | 1 - .../opentelemetry-instrumentation-flask/test-requirements-2.txt | 1 - .../opentelemetry-instrumentation-grpc/test-requirements-0.txt | 1 - .../opentelemetry-instrumentation-grpc/test-requirements-1.txt | 1 - .../opentelemetry-instrumentation-httpx/test-requirements-0.txt | 1 - .../opentelemetry-instrumentation-httpx/test-requirements-1.txt | 1 - .../opentelemetry-instrumentation-jinja2/test-requirements.txt | 1 - .../test-requirements-ng.txt | 1 - .../test-requirements.txt | 1 - .../opentelemetry-instrumentation-logging/test-requirements.txt | 1 - .../opentelemetry-instrumentation-mysql/test-requirements-0.txt | 1 - .../opentelemetry-instrumentation-mysql/test-requirements-1.txt | 1 - .../test-requirements.txt | 1 - .../opentelemetry-instrumentation-pika/test-requirements-0.txt | 1 - .../opentelemetry-instrumentation-pika/test-requirements-1.txt | 1 - .../test-requirements-0.txt | 1 - .../test-requirements-1.txt | 1 - .../opentelemetry-instrumentation-psycopg2/test-requirements.txt | 1 - .../test-requirements-0.txt | 1 - .../test-requirements-1.txt | 1 - .../test-requirements-2.txt | 1 - .../test-requirements-3.txt | 1 - .../test-requirements-4.txt | 1 - .../opentelemetry-instrumentation-pymongo/test-requirements.txt | 1 - .../opentelemetry-instrumentation-pymysql/test-requirements.txt | 1 - .../opentelemetry-instrumentation-pyramid/test-requirements.txt | 1 - .../opentelemetry-instrumentation-redis/test-requirements.txt | 1 - .../test-requirements.txt | 1 - .../opentelemetry-instrumentation-requests/test-requirements.txt | 1 - .../test-requirements-0.txt | 1 - .../test-requirements-1.txt | 1 - .../opentelemetry-instrumentation-sqlite3/test-requirements.txt | 1 - .../test-requirements.txt | 1 - .../test-requirements.txt | 1 - .../test-requirements.txt | 1 - .../opentelemetry-instrumentation-tornado/test-requirements.txt | 1 - .../test-requirements.txt | 1 - .../opentelemetry-instrumentation-urllib/test-requirements.txt | 1 - .../test-requirements-0.txt | 1 - .../test-requirements-1.txt | 1 - .../opentelemetry-instrumentation-wsgi/test-requirements.txt | 1 - opentelemetry-distro/test-requirements.txt | 1 - opentelemetry-instrumentation/test-requirements.txt | 1 - .../opentelemetry-propagator-aws-xray/test-requirements.txt | 1 - .../opentelemetry-propagator-ot-trace/test-requirements.txt | 1 - .../opentelemetry-resource-detector-azure/test-requirements.txt | 1 - .../test-requirements.txt | 1 - .../opentelemetry-sdk-extension-aws/test-requirements.txt | 1 - util/opentelemetry-util-http/test-requirements.txt | 1 - 82 files changed, 82 deletions(-) diff --git a/exporter/opentelemetry-exporter-prometheus-remote-write/test-requirements.txt b/exporter/opentelemetry-exporter-prometheus-remote-write/test-requirements.txt index 5836dc9764..f6d259c40b 100644 --- a/exporter/opentelemetry-exporter-prometheus-remote-write/test-requirements.txt +++ b/exporter/opentelemetry-exporter-prometheus-remote-write/test-requirements.txt @@ -6,7 +6,6 @@ cramjam==2.1.0; platform_python_implementation == "PyPy" cramjam==2.8.1; platform_python_implementation != "PyPy" Deprecated==1.2.14 idna==3.7 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/exporter/opentelemetry-exporter-richconsole/test-requirements.txt b/exporter/opentelemetry-exporter-richconsole/test-requirements.txt index 0ef562821f..ccd7be9a1e 100644 --- a/exporter/opentelemetry-exporter-richconsole/test-requirements.txt +++ b/exporter/opentelemetry-exporter-richconsole/test-requirements.txt @@ -1,7 +1,6 @@ asgiref==3.8.1 Deprecated==1.2.14 flaky==3.7.0 -importlib-metadata==6.11.0 iniconfig==2.0.0 markdown-it-py==3.0.0 mdurl==0.1.2 diff --git a/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-0.txt b/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-0.txt index de853e16c9..ea86a1bc30 100644 --- a/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-0.txt +++ b/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-0.txt @@ -3,7 +3,6 @@ aiormq==6.2.3 asgiref==3.8.1 Deprecated==1.2.14 idna==3.7 -importlib-metadata==6.11.0 iniconfig==2.0.0 multidict==6.0.5 packaging==24.0 diff --git a/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-1.txt b/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-1.txt index dbfb89fe82..b99878d2c1 100644 --- a/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-1.txt +++ b/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-1.txt @@ -3,7 +3,6 @@ aiormq==6.6.4 asgiref==3.8.1 Deprecated==1.2.14 idna==3.7 -importlib-metadata==6.11.0 iniconfig==2.0.0 multidict==6.0.5 packaging==24.0 diff --git a/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-2.txt b/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-2.txt index 6a95bd69f0..1216b7313f 100644 --- a/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-2.txt +++ b/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-2.txt @@ -3,7 +3,6 @@ aiormq==6.7.1 asgiref==3.8.1 Deprecated==1.2.14 idna==3.7 -importlib-metadata==6.11.0 iniconfig==2.0.0 multidict==6.0.5 packaging==24.0 diff --git a/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-3.txt b/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-3.txt index 82e742a1f4..d16e8f62cb 100644 --- a/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-3.txt +++ b/instrumentation/opentelemetry-instrumentation-aio-pika/test-requirements-3.txt @@ -3,7 +3,6 @@ aiormq==6.8.0 asgiref==3.8.1 Deprecated==1.2.14 idna==3.7 -importlib-metadata==6.11.0 iniconfig==2.0.0 multidict==6.0.5 packaging==24.0 diff --git a/instrumentation/opentelemetry-instrumentation-aiohttp-client/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-aiohttp-client/test-requirements.txt index dee4736133..34a7ca4e92 100644 --- a/instrumentation/opentelemetry-instrumentation-aiohttp-client/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-aiohttp-client/test-requirements.txt @@ -11,7 +11,6 @@ Flask==3.0.2 frozenlist==1.4.1 http_server_mock==1.7 idna==3.7 -importlib-metadata==6.11.0 iniconfig==2.0.0 itsdangerous==2.1.2 Jinja2==3.1.4 diff --git a/instrumentation/opentelemetry-instrumentation-aiohttp-server/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-aiohttp-server/test-requirements.txt index e6dff52db9..594172be6a 100644 --- a/instrumentation/opentelemetry-instrumentation-aiohttp-server/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-aiohttp-server/test-requirements.txt @@ -5,7 +5,6 @@ async-timeout==4.0.3 Deprecated==1.2.14 frozenlist==1.4.1 idna==3.7 -importlib-metadata==6.11.0 iniconfig==2.0.0 multidict==6.0.5 packaging==24.0 diff --git a/instrumentation/opentelemetry-instrumentation-aiopg/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-aiopg/test-requirements.txt index 1443104081..4e9d96ebc1 100644 --- a/instrumentation/opentelemetry-instrumentation-aiopg/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-aiopg/test-requirements.txt @@ -2,7 +2,6 @@ aiopg==1.4.0 asgiref==3.8.1 async-timeout==4.0.3 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-asgi/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-asgi/test-requirements.txt index 18a11500e1..3b1c52d94f 100644 --- a/instrumentation/opentelemetry-instrumentation-asgi/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-asgi/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-asyncio/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-asyncio/test-requirements.txt index 7f20d1497c..427ded20cc 100644 --- a/instrumentation/opentelemetry-instrumentation-asyncio/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-asyncio/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-asyncpg/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-asyncpg/test-requirements.txt index 60cef50a7a..83f5b10c17 100644 --- a/instrumentation/opentelemetry-instrumentation-asyncpg/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-asyncpg/test-requirements.txt @@ -2,7 +2,6 @@ asgiref==3.8.1 async-timeout==4.0.3 asyncpg==0.29.0 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-aws-lambda/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-aws-lambda/test-requirements.txt index 8d9fe19483..bf065b1451 100644 --- a/instrumentation/opentelemetry-instrumentation-aws-lambda/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-aws-lambda/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-boto/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-boto/test-requirements.txt index fe6467d1c4..c00886c599 100644 --- a/instrumentation/opentelemetry-instrumentation-boto/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-boto/test-requirements.txt @@ -9,7 +9,6 @@ cryptography==42.0.5 Deprecated==1.2.14 docker==7.0.0 idna==3.7 -importlib-metadata==6.11.0 iniconfig==2.0.0 Jinja2==3.1.4 jmespath==1.0.1 diff --git a/instrumentation/opentelemetry-instrumentation-boto3sqs/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-boto3sqs/test-requirements.txt index d8a9c38315..c3c6aa5a5b 100644 --- a/instrumentation/opentelemetry-instrumentation-boto3sqs/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-boto3sqs/test-requirements.txt @@ -2,7 +2,6 @@ asgiref==3.8.1 boto3==1.34.44 botocore==1.34.44 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 jmespath==1.0.1 packaging==24.0 diff --git a/instrumentation/opentelemetry-instrumentation-botocore/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-botocore/test-requirements.txt index a89fdf2e30..042fc98187 100644 --- a/instrumentation/opentelemetry-instrumentation-botocore/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-botocore/test-requirements.txt @@ -9,7 +9,6 @@ cryptography==42.0.5 Deprecated==1.2.14 docker==7.0.0 idna==3.7 -importlib-metadata==6.11.0 iniconfig==2.0.0 Jinja2==3.1.4 jmespath==1.0.1 diff --git a/instrumentation/opentelemetry-instrumentation-cassandra/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-cassandra/test-requirements.txt index 189b2f65d0..cac6c911b0 100644 --- a/instrumentation/opentelemetry-instrumentation-cassandra/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-cassandra/test-requirements.txt @@ -3,7 +3,6 @@ cassandra-driver==3.29.0 click==8.1.7 Deprecated==1.2.14 geomet==0.2.1.post1 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-celery/test-requirements-0.txt b/instrumentation/opentelemetry-instrumentation-celery/test-requirements-0.txt index fcf838fc32..9fc159dae9 100644 --- a/instrumentation/opentelemetry-instrumentation-celery/test-requirements-0.txt +++ b/instrumentation/opentelemetry-instrumentation-celery/test-requirements-0.txt @@ -8,7 +8,6 @@ click-didyoumean==0.3.0 click-plugins==1.1.1 click-repl==0.3.0 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 kombu==5.3.5 packaging==24.0 diff --git a/instrumentation/opentelemetry-instrumentation-celery/test-requirements-1.txt b/instrumentation/opentelemetry-instrumentation-celery/test-requirements-1.txt index 76b2f03d12..afa6644218 100644 --- a/instrumentation/opentelemetry-instrumentation-celery/test-requirements-1.txt +++ b/instrumentation/opentelemetry-instrumentation-celery/test-requirements-1.txt @@ -7,7 +7,6 @@ click-didyoumean==0.3.0 click-plugins==1.1.1 click-repl==0.3.0 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 kombu==5.3.5 packaging==24.0 diff --git a/instrumentation/opentelemetry-instrumentation-confluent-kafka/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-confluent-kafka/test-requirements.txt index f78f498620..2ec70ea453 100644 --- a/instrumentation/opentelemetry-instrumentation-confluent-kafka/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-confluent-kafka/test-requirements.txt @@ -1,7 +1,6 @@ asgiref==3.8.1 confluent-kafka==2.4.0 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-dbapi/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-dbapi/test-requirements.txt index f76b488d90..49ee702dcf 100644 --- a/instrumentation/opentelemetry-instrumentation-dbapi/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-dbapi/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-django/test-requirements-0.txt b/instrumentation/opentelemetry-instrumentation-django/test-requirements-0.txt index 9d7ee964fe..c7759b21be 100644 --- a/instrumentation/opentelemetry-instrumentation-django/test-requirements-0.txt +++ b/instrumentation/opentelemetry-instrumentation-django/test-requirements-0.txt @@ -1,7 +1,6 @@ asgiref==3.8.1 Deprecated==1.2.14 Django==2.2.28 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-django/test-requirements-1.txt b/instrumentation/opentelemetry-instrumentation-django/test-requirements-1.txt index 9c21d2dfd4..d2ecb426d3 100644 --- a/instrumentation/opentelemetry-instrumentation-django/test-requirements-1.txt +++ b/instrumentation/opentelemetry-instrumentation-django/test-requirements-1.txt @@ -1,7 +1,6 @@ asgiref==3.8.1 Deprecated==1.2.14 Django==3.2.25 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-django/test-requirements-2.txt b/instrumentation/opentelemetry-instrumentation-django/test-requirements-2.txt index d3a55aae34..fefaa9b7ae 100644 --- a/instrumentation/opentelemetry-instrumentation-django/test-requirements-2.txt +++ b/instrumentation/opentelemetry-instrumentation-django/test-requirements-2.txt @@ -2,7 +2,6 @@ asgiref==3.8.1 backports.zoneinfo==0.2.1 Deprecated==1.2.14 Django==4.2.15 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-django/test-requirements-3.txt b/instrumentation/opentelemetry-instrumentation-django/test-requirements-3.txt index 89923379d3..f859e643fc 100644 --- a/instrumentation/opentelemetry-instrumentation-django/test-requirements-3.txt +++ b/instrumentation/opentelemetry-instrumentation-django/test-requirements-3.txt @@ -1,7 +1,6 @@ asgiref==3.8.1 Deprecated==1.2.14 Django==4.2.15 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-elasticsearch/test-requirements-0.txt b/instrumentation/opentelemetry-instrumentation-elasticsearch/test-requirements-0.txt index 55eabe1ef5..be9acbee2a 100644 --- a/instrumentation/opentelemetry-instrumentation-elasticsearch/test-requirements-0.txt +++ b/instrumentation/opentelemetry-instrumentation-elasticsearch/test-requirements-0.txt @@ -2,7 +2,6 @@ asgiref==3.8.1 Deprecated==1.2.14 elasticsearch==6.8.2 elasticsearch-dsl==6.4.0 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-elasticsearch/test-requirements-1.txt b/instrumentation/opentelemetry-instrumentation-elasticsearch/test-requirements-1.txt index 2fab7287ad..1569483d69 100644 --- a/instrumentation/opentelemetry-instrumentation-elasticsearch/test-requirements-1.txt +++ b/instrumentation/opentelemetry-instrumentation-elasticsearch/test-requirements-1.txt @@ -2,7 +2,6 @@ asgiref==3.8.1 Deprecated==1.2.14 elasticsearch==7.17.9 elasticsearch-dsl==7.4.1 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-elasticsearch/test-requirements-2.txt b/instrumentation/opentelemetry-instrumentation-elasticsearch/test-requirements-2.txt index 5f2ccd41ac..bec43c9d6c 100644 --- a/instrumentation/opentelemetry-instrumentation-elasticsearch/test-requirements-2.txt +++ b/instrumentation/opentelemetry-instrumentation-elasticsearch/test-requirements-2.txt @@ -3,7 +3,6 @@ Deprecated==1.2.14 elasticsearch==8.13.1 elasticsearch-dsl==8.13.1 elastic-transport==8.13.0 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-falcon/test-requirements-0.txt b/instrumentation/opentelemetry-instrumentation-falcon/test-requirements-0.txt index 6967c57b6d..6a8d7e1c01 100644 --- a/instrumentation/opentelemetry-instrumentation-falcon/test-requirements-0.txt +++ b/instrumentation/opentelemetry-instrumentation-falcon/test-requirements-0.txt @@ -1,7 +1,6 @@ asgiref==3.8.1 Deprecated==1.2.14 falcon==1.4.1 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-falcon/test-requirements-1.txt b/instrumentation/opentelemetry-instrumentation-falcon/test-requirements-1.txt index e535925b14..0a63d9015c 100644 --- a/instrumentation/opentelemetry-instrumentation-falcon/test-requirements-1.txt +++ b/instrumentation/opentelemetry-instrumentation-falcon/test-requirements-1.txt @@ -1,7 +1,6 @@ asgiref==3.8.1 Deprecated==1.2.14 falcon==2.0.0 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-falcon/test-requirements-2.txt b/instrumentation/opentelemetry-instrumentation-falcon/test-requirements-2.txt index 30d21e2773..afd3e5c4f0 100644 --- a/instrumentation/opentelemetry-instrumentation-falcon/test-requirements-2.txt +++ b/instrumentation/opentelemetry-instrumentation-falcon/test-requirements-2.txt @@ -1,7 +1,6 @@ asgiref==3.8.1 Deprecated==1.2.14 falcon==3.1.1 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-fastapi/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-fastapi/test-requirements.txt index 927e68f94e..51879c8177 100644 --- a/instrumentation/opentelemetry-instrumentation-fastapi/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-fastapi/test-requirements.txt @@ -10,7 +10,6 @@ h11==0.14.0 httpcore==1.0.4 httpx==0.27.0 idna==3.7 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-flask/test-requirements-0.txt b/instrumentation/opentelemetry-instrumentation-flask/test-requirements-0.txt index 0bd176848d..96549a0c09 100644 --- a/instrumentation/opentelemetry-instrumentation-flask/test-requirements-0.txt +++ b/instrumentation/opentelemetry-instrumentation-flask/test-requirements-0.txt @@ -2,7 +2,6 @@ asgiref==3.8.1 click==8.1.7 Deprecated==1.2.14 Flask==2.1.3 -importlib-metadata==6.11.0 iniconfig==2.0.0 itsdangerous==2.1.2 Jinja2==3.1.4 diff --git a/instrumentation/opentelemetry-instrumentation-flask/test-requirements-1.txt b/instrumentation/opentelemetry-instrumentation-flask/test-requirements-1.txt index d73ab497b5..9cdfbc502f 100644 --- a/instrumentation/opentelemetry-instrumentation-flask/test-requirements-1.txt +++ b/instrumentation/opentelemetry-instrumentation-flask/test-requirements-1.txt @@ -2,7 +2,6 @@ asgiref==3.8.1 click==8.1.7 Deprecated==1.2.14 Flask==2.2.0 -importlib-metadata==6.11.0 iniconfig==2.0.0 itsdangerous==2.1.2 Jinja2==3.1.4 diff --git a/instrumentation/opentelemetry-instrumentation-flask/test-requirements-2.txt b/instrumentation/opentelemetry-instrumentation-flask/test-requirements-2.txt index 299a347d66..3599dcf933 100644 --- a/instrumentation/opentelemetry-instrumentation-flask/test-requirements-2.txt +++ b/instrumentation/opentelemetry-instrumentation-flask/test-requirements-2.txt @@ -3,7 +3,6 @@ blinker==1.7.0 click==8.1.7 Deprecated==1.2.14 Flask==3.0.2 -importlib-metadata==6.11.0 iniconfig==2.0.0 itsdangerous==2.1.2 Jinja2==3.1.4 diff --git a/instrumentation/opentelemetry-instrumentation-grpc/test-requirements-0.txt b/instrumentation/opentelemetry-instrumentation-grpc/test-requirements-0.txt index 83ec6e8e70..f93fe1b766 100644 --- a/instrumentation/opentelemetry-instrumentation-grpc/test-requirements-0.txt +++ b/instrumentation/opentelemetry-instrumentation-grpc/test-requirements-0.txt @@ -1,7 +1,6 @@ asgiref==3.8.1 Deprecated==1.2.14 grpcio==1.62.0 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-grpc/test-requirements-1.txt b/instrumentation/opentelemetry-instrumentation-grpc/test-requirements-1.txt index d77d67148a..0f2bfa3ec9 100644 --- a/instrumentation/opentelemetry-instrumentation-grpc/test-requirements-1.txt +++ b/instrumentation/opentelemetry-instrumentation-grpc/test-requirements-1.txt @@ -1,7 +1,6 @@ asgiref==3.8.1 Deprecated==1.2.14 grpcio==1.63.0 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-httpx/test-requirements-0.txt b/instrumentation/opentelemetry-instrumentation-httpx/test-requirements-0.txt index 28b475a3a4..eae40429be 100644 --- a/instrumentation/opentelemetry-instrumentation-httpx/test-requirements-0.txt +++ b/instrumentation/opentelemetry-instrumentation-httpx/test-requirements-0.txt @@ -7,7 +7,6 @@ h11==0.12.0 httpcore==0.13.7 httpx==0.18.2 idna==3.7 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-httpx/test-requirements-1.txt b/instrumentation/opentelemetry-instrumentation-httpx/test-requirements-1.txt index 42c032a546..0f6d136354 100644 --- a/instrumentation/opentelemetry-instrumentation-httpx/test-requirements-1.txt +++ b/instrumentation/opentelemetry-instrumentation-httpx/test-requirements-1.txt @@ -7,7 +7,6 @@ h11==0.14.0 httpcore==1.0.4 httpx==0.27.0 idna==3.7 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-jinja2/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-jinja2/test-requirements.txt index 59eabe6997..b4b4d71c02 100644 --- a/instrumentation/opentelemetry-instrumentation-jinja2/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-jinja2/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 Jinja2==3.1.4 MarkupSafe==2.0.1 diff --git a/instrumentation/opentelemetry-instrumentation-kafka-python/test-requirements-ng.txt b/instrumentation/opentelemetry-instrumentation-kafka-python/test-requirements-ng.txt index 05e169a7e3..83cef19c4f 100644 --- a/instrumentation/opentelemetry-instrumentation-kafka-python/test-requirements-ng.txt +++ b/instrumentation/opentelemetry-instrumentation-kafka-python/test-requirements-ng.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 kafka-python-ng==2.2.2 packaging==24.0 diff --git a/instrumentation/opentelemetry-instrumentation-kafka-python/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-kafka-python/test-requirements.txt index 6582cf875b..4ed0e3df67 100644 --- a/instrumentation/opentelemetry-instrumentation-kafka-python/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-kafka-python/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 kafka-python==2.0.2 packaging==24.0 diff --git a/instrumentation/opentelemetry-instrumentation-logging/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-logging/test-requirements.txt index c0d2f044c8..13f9a9c403 100644 --- a/instrumentation/opentelemetry-instrumentation-logging/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-logging/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-mysql/test-requirements-0.txt b/instrumentation/opentelemetry-instrumentation-mysql/test-requirements-0.txt index bf93434850..04eea4f3c6 100644 --- a/instrumentation/opentelemetry-instrumentation-mysql/test-requirements-0.txt +++ b/instrumentation/opentelemetry-instrumentation-mysql/test-requirements-0.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 mysql-connector-python==8.3.0 packaging==24.0 diff --git a/instrumentation/opentelemetry-instrumentation-mysql/test-requirements-1.txt b/instrumentation/opentelemetry-instrumentation-mysql/test-requirements-1.txt index 1a58c16a05..0ca8efb64c 100644 --- a/instrumentation/opentelemetry-instrumentation-mysql/test-requirements-1.txt +++ b/instrumentation/opentelemetry-instrumentation-mysql/test-requirements-1.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 mysql-connector-python==9.0.0 packaging==24.0 diff --git a/instrumentation/opentelemetry-instrumentation-mysqlclient/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-mysqlclient/test-requirements.txt index 8c3ed72f35..41c6ae91a4 100644 --- a/instrumentation/opentelemetry-instrumentation-mysqlclient/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-mysqlclient/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 mysqlclient==2.2.4 packaging==24.0 diff --git a/instrumentation/opentelemetry-instrumentation-pika/test-requirements-0.txt b/instrumentation/opentelemetry-instrumentation-pika/test-requirements-0.txt index e06bc0b395..f23aa4ed80 100644 --- a/instrumentation/opentelemetry-instrumentation-pika/test-requirements-0.txt +++ b/instrumentation/opentelemetry-instrumentation-pika/test-requirements-0.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pika==0.13.1 diff --git a/instrumentation/opentelemetry-instrumentation-pika/test-requirements-1.txt b/instrumentation/opentelemetry-instrumentation-pika/test-requirements-1.txt index 8928f655c8..433d9ede22 100644 --- a/instrumentation/opentelemetry-instrumentation-pika/test-requirements-1.txt +++ b/instrumentation/opentelemetry-instrumentation-pika/test-requirements-1.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pika==1.3.2 diff --git a/instrumentation/opentelemetry-instrumentation-psycopg/test-requirements-0.txt b/instrumentation/opentelemetry-instrumentation-psycopg/test-requirements-0.txt index 42bbac77d9..6ad7e1a1a8 100644 --- a/instrumentation/opentelemetry-instrumentation-psycopg/test-requirements-0.txt +++ b/instrumentation/opentelemetry-instrumentation-psycopg/test-requirements-0.txt @@ -1,7 +1,6 @@ asgiref==3.8.1 backports.zoneinfo==0.2.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-psycopg/test-requirements-1.txt b/instrumentation/opentelemetry-instrumentation-psycopg/test-requirements-1.txt index 1f7fb59f2d..d00955e8fa 100644 --- a/instrumentation/opentelemetry-instrumentation-psycopg/test-requirements-1.txt +++ b/instrumentation/opentelemetry-instrumentation-psycopg/test-requirements-1.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-psycopg2/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-psycopg2/test-requirements.txt index aa98fa93d0..f759a60462 100644 --- a/instrumentation/opentelemetry-instrumentation-psycopg2/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-psycopg2/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-0.txt b/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-0.txt index 2c6e0e2749..9454be134a 100644 --- a/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-0.txt +++ b/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-0.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-1.txt b/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-1.txt index 36db8d4416..4ae3f6b579 100644 --- a/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-1.txt +++ b/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-1.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-2.txt b/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-2.txt index 3e0359f731..e3c04ff25e 100644 --- a/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-2.txt +++ b/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-2.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-3.txt b/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-3.txt index 916c9c9c3a..46139219c9 100644 --- a/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-3.txt +++ b/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-3.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-4.txt b/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-4.txt index e90a138ff8..22fc8bfdba 100644 --- a/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-4.txt +++ b/instrumentation/opentelemetry-instrumentation-pymemcache/test-requirements-4.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-pymongo/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-pymongo/test-requirements.txt index 6c8de553b6..d0adc0e1fb 100644 --- a/instrumentation/opentelemetry-instrumentation-pymongo/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-pymongo/test-requirements.txt @@ -1,7 +1,6 @@ asgiref==3.8.1 Deprecated==1.2.14 dnspython==2.6.1 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-pymysql/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-pymysql/test-requirements.txt index 7ad69f2b81..e7ce34d6a7 100644 --- a/instrumentation/opentelemetry-instrumentation-pymysql/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-pymysql/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-pyramid/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-pyramid/test-requirements.txt index 6f33f33449..6b9ac40ed2 100644 --- a/instrumentation/opentelemetry-instrumentation-pyramid/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-pyramid/test-requirements.txt @@ -1,7 +1,6 @@ asgiref==3.8.1 Deprecated==1.2.14 hupper==1.12.1 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 PasteDeploy==3.1.0 diff --git a/instrumentation/opentelemetry-instrumentation-redis/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-redis/test-requirements.txt index 7b8d8459b7..d84a7fe146 100644 --- a/instrumentation/opentelemetry-instrumentation-redis/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-redis/test-requirements.txt @@ -2,7 +2,6 @@ asgiref==3.8.1 async-timeout==4.0.3 Deprecated==1.2.14 fakeredis==2.23.3 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-remoulade/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-remoulade/test-requirements.txt index b850e46f9f..bf1e781366 100644 --- a/instrumentation/opentelemetry-instrumentation-remoulade/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-remoulade/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-requests/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-requests/test-requirements.txt index 9f40c6d5b2..1c5ac00479 100644 --- a/instrumentation/opentelemetry-instrumentation-requests/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-requests/test-requirements.txt @@ -4,7 +4,6 @@ charset-normalizer==3.3.2 Deprecated==1.2.14 httpretty==1.1.4 idna==3.7 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-sqlalchemy/test-requirements-0.txt b/instrumentation/opentelemetry-instrumentation-sqlalchemy/test-requirements-0.txt index 45992bc2e1..df091600dc 100644 --- a/instrumentation/opentelemetry-instrumentation-sqlalchemy/test-requirements-0.txt +++ b/instrumentation/opentelemetry-instrumentation-sqlalchemy/test-requirements-0.txt @@ -1,7 +1,6 @@ asgiref==3.8.1 cffi==1.15.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-sqlalchemy/test-requirements-1.txt b/instrumentation/opentelemetry-instrumentation-sqlalchemy/test-requirements-1.txt index eb1ee371b7..ca24cf0eef 100644 --- a/instrumentation/opentelemetry-instrumentation-sqlalchemy/test-requirements-1.txt +++ b/instrumentation/opentelemetry-instrumentation-sqlalchemy/test-requirements-1.txt @@ -2,7 +2,6 @@ aiosqlite==0.20.0 asgiref==3.8.1 Deprecated==1.2.14 greenlet==3.0.3 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-sqlite3/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-sqlite3/test-requirements.txt index e260861814..8ff4a4130d 100644 --- a/instrumentation/opentelemetry-instrumentation-sqlite3/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-sqlite3/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-starlette/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-starlette/test-requirements.txt index d81a15a40c..d565d2e0cc 100644 --- a/instrumentation/opentelemetry-instrumentation-starlette/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-starlette/test-requirements.txt @@ -8,7 +8,6 @@ h11==0.14.0 httpcore==1.0.4 httpx==0.27.0 idna==3.7 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-system-metrics/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-system-metrics/test-requirements.txt index 76f2f2a4e7..da067b793d 100644 --- a/instrumentation/opentelemetry-instrumentation-system-metrics/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-system-metrics/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-threading/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-threading/test-requirements.txt index 2d13857e9e..f65e0e1b58 100644 --- a/instrumentation/opentelemetry-instrumentation-threading/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-threading/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-tornado/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-tornado/test-requirements.txt index 236c45f87b..b6bd4f93fa 100644 --- a/instrumentation/opentelemetry-instrumentation-tornado/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-tornado/test-requirements.txt @@ -7,7 +7,6 @@ Deprecated==1.2.14 Flask==3.0.2 http_server_mock==1.7 idna==3.7 -importlib-metadata==6.11.0 iniconfig==2.0.0 itsdangerous==2.1.2 Jinja2==3.1.4 diff --git a/instrumentation/opentelemetry-instrumentation-tortoiseorm/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-tortoiseorm/test-requirements.txt index 31b044a2f3..ec54c45665 100644 --- a/instrumentation/opentelemetry-instrumentation-tortoiseorm/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-tortoiseorm/test-requirements.txt @@ -2,7 +2,6 @@ aiosqlite==0.17.0 annotated-types==0.6.0 asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 iso8601==1.1.0 packaging==24.0 diff --git a/instrumentation/opentelemetry-instrumentation-urllib/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-urllib/test-requirements.txt index 06bc8322dc..fd112c99af 100644 --- a/instrumentation/opentelemetry-instrumentation-urllib/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-urllib/test-requirements.txt @@ -1,7 +1,6 @@ asgiref==3.8.1 Deprecated==1.2.14 httpretty==1.1.4 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-urllib3/test-requirements-0.txt b/instrumentation/opentelemetry-instrumentation-urllib3/test-requirements-0.txt index e7392b0c31..594b9a023f 100644 --- a/instrumentation/opentelemetry-instrumentation-urllib3/test-requirements-0.txt +++ b/instrumentation/opentelemetry-instrumentation-urllib3/test-requirements-0.txt @@ -1,7 +1,6 @@ asgiref==3.8.1 Deprecated==1.2.14 httpretty==1.1.4 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-urllib3/test-requirements-1.txt b/instrumentation/opentelemetry-instrumentation-urllib3/test-requirements-1.txt index 21cb3acbe6..da90160ab9 100644 --- a/instrumentation/opentelemetry-instrumentation-urllib3/test-requirements-1.txt +++ b/instrumentation/opentelemetry-instrumentation-urllib3/test-requirements-1.txt @@ -1,7 +1,6 @@ asgiref==3.8.1 Deprecated==1.2.14 httpretty==1.1.4 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/instrumentation/opentelemetry-instrumentation-wsgi/test-requirements.txt b/instrumentation/opentelemetry-instrumentation-wsgi/test-requirements.txt index d63bd5a637..49d1204bc2 100644 --- a/instrumentation/opentelemetry-instrumentation-wsgi/test-requirements.txt +++ b/instrumentation/opentelemetry-instrumentation-wsgi/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/opentelemetry-distro/test-requirements.txt b/opentelemetry-distro/test-requirements.txt index 050054c39b..d66fdcf0a4 100644 --- a/opentelemetry-distro/test-requirements.txt +++ b/opentelemetry-distro/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/opentelemetry-instrumentation/test-requirements.txt b/opentelemetry-instrumentation/test-requirements.txt index 31f1ef76ab..f5ad4c861b 100644 --- a/opentelemetry-instrumentation/test-requirements.txt +++ b/opentelemetry-instrumentation/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/propagator/opentelemetry-propagator-aws-xray/test-requirements.txt b/propagator/opentelemetry-propagator-aws-xray/test-requirements.txt index 4587d87629..4694c327d8 100644 --- a/propagator/opentelemetry-propagator-aws-xray/test-requirements.txt +++ b/propagator/opentelemetry-propagator-aws-xray/test-requirements.txt @@ -3,7 +3,6 @@ certifi==2024.7.4 charset-normalizer==3.3.2 Deprecated==1.2.14 idna==3.7 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/propagator/opentelemetry-propagator-ot-trace/test-requirements.txt b/propagator/opentelemetry-propagator-ot-trace/test-requirements.txt index b556c4f0cc..f53a5f4acb 100644 --- a/propagator/opentelemetry-propagator-ot-trace/test-requirements.txt +++ b/propagator/opentelemetry-propagator-ot-trace/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/resource/opentelemetry-resource-detector-azure/test-requirements.txt b/resource/opentelemetry-resource-detector-azure/test-requirements.txt index 2b29359fbb..6170ab27fc 100644 --- a/resource/opentelemetry-resource-detector-azure/test-requirements.txt +++ b/resource/opentelemetry-resource-detector-azure/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/resource/opentelemetry-resource-detector-container/test-requirements.txt b/resource/opentelemetry-resource-detector-container/test-requirements.txt index f7b5b71fcf..1cce681413 100644 --- a/resource/opentelemetry-resource-detector-container/test-requirements.txt +++ b/resource/opentelemetry-resource-detector-container/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/sdk-extension/opentelemetry-sdk-extension-aws/test-requirements.txt b/sdk-extension/opentelemetry-sdk-extension-aws/test-requirements.txt index 1fa968a8b3..2103b20ce9 100644 --- a/sdk-extension/opentelemetry-sdk-extension-aws/test-requirements.txt +++ b/sdk-extension/opentelemetry-sdk-extension-aws/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 diff --git a/util/opentelemetry-util-http/test-requirements.txt b/util/opentelemetry-util-http/test-requirements.txt index 1769daa094..ef05dc3a71 100644 --- a/util/opentelemetry-util-http/test-requirements.txt +++ b/util/opentelemetry-util-http/test-requirements.txt @@ -1,6 +1,5 @@ asgiref==3.8.1 Deprecated==1.2.14 -importlib-metadata==6.11.0 iniconfig==2.0.0 packaging==24.0 pluggy==1.5.0 From f4e17d13209d02890e6aafc1164cef5ff3d63b8e Mon Sep 17 00:00:00 2001 From: Diego Hurtado Date: Thu, 5 Sep 2024 15:08:00 -0600 Subject: [PATCH 18/18] Remove importlib-metadata dependency --- .../opentelemetry-instrumentation-flask/pyproject.toml | 1 - .../src/opentelemetry/instrumentation/flask/__init__.py | 4 ++-- tox.ini | 1 - 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/instrumentation/opentelemetry-instrumentation-flask/pyproject.toml b/instrumentation/opentelemetry-instrumentation-flask/pyproject.toml index 0e74ca331f..8d02775824 100644 --- a/instrumentation/opentelemetry-instrumentation-flask/pyproject.toml +++ b/instrumentation/opentelemetry-instrumentation-flask/pyproject.toml @@ -31,7 +31,6 @@ dependencies = [ "opentelemetry-semantic-conventions == 0.49b0.dev", "opentelemetry-util-http == 0.49b0.dev", "packaging >= 21.0", - "importlib-metadata >= 4.0", ] [project.optional-dependencies] diff --git a/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py b/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py index 192e044655..317624de7b 100644 --- a/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py @@ -245,7 +245,7 @@ def response_hook(span: Span, status: str, response_headers: List): from typing import Collection import flask -import importlib_metadata as metadata +from opentelemetry._util.importlib_metadata import version from packaging import version as package_version import opentelemetry.instrumentation.wsgi as otel_wsgi @@ -288,7 +288,7 @@ def response_hook(span: Span, status: str, response_headers: List): _excluded_urls_from_env = get_excluded_urls("FLASK") -flask_version = metadata.version("flask") +flask_version = version("flask") if package_version.parse(flask_version) >= package_version.parse("2.2.0"): diff --git a/tox.ini b/tox.ini index 6cbffc1a4d..fdc52137e7 100644 --- a/tox.ini +++ b/tox.ini @@ -1218,7 +1218,6 @@ deps = greenlet==3.0.3 grpcio==1.62.1 idna==2.10 - importlib-metadata==6.11.0 iniconfig==2.0.0 jsonschema==3.2.0 kombu==5.3.5