Skip to content

Commit fdba606

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

File tree

2 files changed

+16
-20
lines changed

2 files changed

+16
-20
lines changed

Diff for: instrumentation/opentelemetry-instrumentation-pika/src/opentelemetry/instrumentation/pika/pika_instrumentor.py

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

17-
import pkg_resources
17+
import pika
1818
import wrapt
1919
from packaging import version
2020
from pika.adapters import BlockingConnection
@@ -34,7 +34,18 @@
3434
_FUNCTIONS_TO_UNINSTRUMENT = ["basic_publish"]
3535

3636

37+
def _consumer_callback_attribute_name() -> str:
38+
pika_version = version.parse(pika.__version__)
39+
return (
40+
"on_message_callback"
41+
if pika_version >= version.parse("1.0.0")
42+
else "consumer_cb"
43+
)
44+
45+
3746
class PikaInstrumentor(BaseInstrumentor): # type: ignore
47+
CONSUMER_CALLBACK_ATTR = _consumer_callback_attribute_name()
48+
3849
# pylint: disable=attribute-defined-outside-init
3950
@staticmethod
4051
def _instrument_blocking_channel_consumers(
@@ -43,9 +54,7 @@ def _instrument_blocking_channel_consumers(
4354
consume_hook: utils.HookT = utils.dummy_callback,
4455
) -> Any:
4556
for consumer_tag, consumer_info in channel._consumer_infos.items():
46-
callback_attr = (
47-
PikaInstrumentor._consumer_callback_attribute_name()
48-
)
57+
callback_attr = PikaInstrumentor.CONSUMER_CALLBACK_ATTR
4958
consumer_callback = getattr(consumer_info, callback_attr)
5059
decorated_callback = utils._decorate_callback(
5160
consumer_callback,
@@ -132,27 +141,14 @@ def uninstrument_channel(channel: BlockingChannel) -> None:
132141
return
133142

134143
for consumers_tag, client_info in channel._consumer_infos.items():
135-
callback_attr = (
136-
PikaInstrumentor._consumer_callback_attribute_name()
137-
)
144+
callback_attr = PikaInstrumentor.CONSUMER_CALLBACK_ATTR
138145
consumer_callback = getattr(client_info, callback_attr)
139146
if hasattr(consumer_callback, "_original_callback"):
140147
channel._consumer_infos[
141148
consumers_tag
142149
] = consumer_callback._original_callback
143150
PikaInstrumentor._uninstrument_channel_functions(channel)
144151

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-
156152
def _decorate_channel_function(
157153
self,
158154
tracer_provider: Optional[TracerProvider],

Diff for: 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)