From 0c7a02d25c5883ceb32e147ae78474e27194d539 Mon Sep 17 00:00:00 2001 From: Miro <200482516+Mirochill@users.noreply.github.com> Date: Wed, 20 May 2026 13:06:19 +0200 Subject: [PATCH 1/2] opentelemetry-api: avoid SelectableGroups dict API Assisted-by: OpenAI Codex --- .../src/opentelemetry/util/_importlib_metadata.py | 2 ++ .../tests/util/test__importlib_metadata.py | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/opentelemetry-api/src/opentelemetry/util/_importlib_metadata.py b/opentelemetry-api/src/opentelemetry/util/_importlib_metadata.py index be779f1137..0ae002d11f 100644 --- a/opentelemetry-api/src/opentelemetry/util/_importlib_metadata.py +++ b/opentelemetry-api/src/opentelemetry/util/_importlib_metadata.py @@ -28,6 +28,8 @@ def _as_entry_points(eps: Any) -> EntryPoints: if isinstance(eps, EntryPoints): return eps + if hasattr(eps, "select"): + return eps.select() # Handle Python 3.10 SelectableGroups (dict-like) return EntryPoints(ep for group_eps in eps.values() for ep in group_eps) diff --git a/opentelemetry-api/tests/util/test__importlib_metadata.py b/opentelemetry-api/tests/util/test__importlib_metadata.py index f7e5152467..d1b356a4ea 100644 --- a/opentelemetry-api/tests/util/test__importlib_metadata.py +++ b/opentelemetry-api/tests/util/test__importlib_metadata.py @@ -117,3 +117,18 @@ def test_as_entry_points_selectable_groups_compat(self): self.assertIsInstance(normalized, EntryPoints) self.assertEqual(len(normalized), 2) self.assertEqual(list(normalized), [ep1, ep2]) + + def test_as_entry_points_uses_selectable_groups_select(self): + """Test that SelectableGroups are normalized without the deprecated dict API.""" + entry_point = EntryPoint(name="foo", value="bar:baz", group="gp") + + class SelectableGroups: + def select(self): + return EntryPoints([entry_point]) + + def values(self): + raise AssertionError("deprecated dict interface used") + + normalized = _as_entry_points(SelectableGroups()) + self.assertIsInstance(normalized, EntryPoints) + self.assertEqual(list(normalized), [entry_point]) From 9a5c340a871e8a9d0e2cd337414e83d339cd2379 Mon Sep 17 00:00:00 2001 From: Miro <200482516+Mirochill@users.noreply.github.com> Date: Wed, 20 May 2026 13:07:03 +0200 Subject: [PATCH 2/2] opentelemetry-api: add changelog fragment Assisted-by: OpenAI Codex --- .changelog/5234.fixed | 1 + 1 file changed, 1 insertion(+) create mode 100644 .changelog/5234.fixed diff --git a/.changelog/5234.fixed b/.changelog/5234.fixed new file mode 100644 index 0000000000..4334bb3885 --- /dev/null +++ b/.changelog/5234.fixed @@ -0,0 +1 @@ +`opentelemetry-api`: avoid deprecated `SelectableGroups` dict access.