Skip to content

Commit 1f8882b

Browse files
committed
take version from pika
1 parent 773c289 commit 1f8882b

File tree

2 files changed

+18
-16
lines changed

2 files changed

+18
-16
lines changed

instrumentation/opentelemetry-instrumentation-pika/src/opentelemetry/instrumentation/pika/pika_instrumentor.py

+16-14
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414
from logging import getLogger
1515
from typing import Any, Collection, Dict, Optional
1616

17-
import pkg_resources
1817
import wrapt
1918
from packaging import version
19+
import pika
2020
from pika.adapters import BlockingConnection
2121
from pika.adapters.blocking_connection import BlockingChannel
2222

@@ -34,7 +34,20 @@
3434
_FUNCTIONS_TO_UNINSTRUMENT = ["basic_publish"]
3535

3636

37+
def _consumer_callback_attribute_name() -> str:
38+
pika_version = version.parse(
39+
pika.__version__
40+
)
41+
return (
42+
"on_message_callback"
43+
if pika_version >= version.parse("1.0.0")
44+
else "consumer_cb"
45+
)
46+
47+
3748
class PikaInstrumentor(BaseInstrumentor): # type: ignore
49+
CONSUMER_CALLBACK_ATTR = _consumer_callback_attribute_name()
50+
3851
# pylint: disable=attribute-defined-outside-init
3952
@staticmethod
4053
def _instrument_blocking_channel_consumers(
@@ -44,7 +57,7 @@ def _instrument_blocking_channel_consumers(
4457
) -> Any:
4558
for consumer_tag, consumer_info in channel._consumer_infos.items():
4659
callback_attr = (
47-
PikaInstrumentor._consumer_callback_attribute_name()
60+
PikaInstrumentor.CONSUMER_CALLBACK_ATTR
4861
)
4962
consumer_callback = getattr(consumer_info, callback_attr)
5063
decorated_callback = utils._decorate_callback(
@@ -133,7 +146,7 @@ def uninstrument_channel(channel: BlockingChannel) -> None:
133146

134147
for consumers_tag, client_info in channel._consumer_infos.items():
135148
callback_attr = (
136-
PikaInstrumentor._consumer_callback_attribute_name()
149+
PikaInstrumentor.CONSUMER_CALLBACK_ATTR
137150
)
138151
consumer_callback = getattr(client_info, callback_attr)
139152
if hasattr(consumer_callback, "_original_callback"):
@@ -142,17 +155,6 @@ def uninstrument_channel(channel: BlockingChannel) -> None:
142155
] = consumer_callback._original_callback
143156
PikaInstrumentor._uninstrument_channel_functions(channel)
144157

145-
@staticmethod
146-
def _consumer_callback_attribute_name() -> str:
147-
pika_version = version.parse(
148-
pkg_resources.get_distribution("pika").version
149-
)
150-
return (
151-
"on_message_callback"
152-
if pika_version >= version.parse("1.0.0")
153-
else "consumer_cb"
154-
)
155-
156158
def _decorate_channel_function(
157159
self,
158160
tracer_provider: Optional[TracerProvider],

instrumentation/opentelemetry-instrumentation-pika/tests/test_pika_instrumentation.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class TestPika(TestCase):
2626
def setUp(self) -> None:
2727
self.channel = mock.MagicMock(spec=Channel)
2828
consumer_info = mock.MagicMock()
29-
callback_attr = PikaInstrumentor._consumer_callback_attribute_name()
29+
callback_attr = PikaInstrumentor.CONSUMER_CALLBACK_ATTR
3030
setattr(consumer_info, callback_attr, mock.MagicMock())
3131
self.channel._consumer_infos = {"consumer-tag": consumer_info}
3232
self.mock_callback = mock.MagicMock()
@@ -73,7 +73,7 @@ def test_instrument_consumers(
7373
self, decorate_callback: mock.MagicMock
7474
) -> None:
7575
tracer = mock.MagicMock(spec=Tracer)
76-
callback_attr = PikaInstrumentor._consumer_callback_attribute_name()
76+
callback_attr = PikaInstrumentor.CONSUMER_CALLBACK_ATTR
7777
expected_decoration_calls = [
7878
mock.call(
7979
getattr(value, callback_attr), tracer, key, dummy_callback

0 commit comments

Comments
 (0)