Skip to content

Commit 3eac621

Browse files
authored
Merge branch 'master' into ivana/make-logs-and-metrics-go-via-scope
2 parents 0b25f46 + 4cb73e9 commit 3eac621

File tree

6 files changed

+78
-58
lines changed

6 files changed

+78
-58
lines changed

sentry_sdk/integrations/grpc/__init__.py

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,30 @@
11
from functools import wraps
22

3-
import grpc
4-
from grpc import Channel, Server, intercept_channel
5-
from grpc.aio import Channel as AsyncChannel
6-
from grpc.aio import Server as AsyncServer
7-
83
from sentry_sdk.integrations import Integration
94
from sentry_sdk.utils import parse_version
5+
from sentry_sdk.integrations import DidNotEnable
106

117
from .client import ClientInterceptor
128
from .server import ServerInterceptor
13-
from .aio.server import ServerInterceptor as AsyncServerInterceptor
14-
from .aio.client import (
15-
SentryUnaryUnaryClientInterceptor as AsyncUnaryUnaryClientInterceptor,
16-
)
17-
from .aio.client import (
18-
SentryUnaryStreamClientInterceptor as AsyncUnaryStreamClientIntercetor,
19-
)
209

2110
from typing import TYPE_CHECKING, Any, Optional, Sequence
2211

12+
try:
13+
import grpc
14+
from grpc import Channel, Server, intercept_channel
15+
from grpc.aio import Channel as AsyncChannel
16+
from grpc.aio import Server as AsyncServer
17+
18+
from .aio.server import ServerInterceptor as AsyncServerInterceptor
19+
from .aio.client import (
20+
SentryUnaryUnaryClientInterceptor as AsyncUnaryUnaryClientInterceptor,
21+
)
22+
from .aio.client import (
23+
SentryUnaryStreamClientInterceptor as AsyncUnaryStreamClientIntercetor,
24+
)
25+
except ImportError:
26+
raise DidNotEnable("grpcio is not installed.")
27+
2328
# Hack to get new Python features working in older versions
2429
# without introducing a hard dependency on `typing_extensions`
2530
# from: https://stackoverflow.com/a/71944042/300572

sentry_sdk/integrations/grpc/aio/client.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
11
from typing import Callable, Union, AsyncIterable, Any
22

3-
from grpc.aio import (
4-
UnaryUnaryClientInterceptor,
5-
UnaryStreamClientInterceptor,
6-
ClientCallDetails,
7-
UnaryUnaryCall,
8-
UnaryStreamCall,
9-
Metadata,
10-
)
11-
from google.protobuf.message import Message
12-
133
import sentry_sdk
144
from sentry_sdk.consts import OP
5+
from sentry_sdk.integrations import DidNotEnable
156
from sentry_sdk.integrations.grpc.consts import SPAN_ORIGIN
167

8+
try:
9+
from grpc.aio import (
10+
UnaryUnaryClientInterceptor,
11+
UnaryStreamClientInterceptor,
12+
ClientCallDetails,
13+
UnaryUnaryCall,
14+
UnaryStreamCall,
15+
Metadata,
16+
)
17+
from google.protobuf.message import Message
18+
except ImportError:
19+
raise DidNotEnable("grpcio is not installed")
20+
1721

1822
class ClientInterceptor:
1923
@staticmethod
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1-
from opentelemetry.context import create_key
1+
from sentry_sdk.integrations import DidNotEnable
22

3+
try:
4+
from opentelemetry.context import create_key
5+
except ImportError:
6+
raise DidNotEnable("opentelemetry not installed")
37

48
SENTRY_TRACE_KEY = create_key("sentry-trace")
59
SENTRY_BAGGAGE_KEY = create_key("sentry-baggage")

sentry_sdk/integrations/opentelemetry/propagator.py

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,4 @@
1-
from opentelemetry import trace
2-
from opentelemetry.context import (
3-
Context,
4-
get_current,
5-
set_value,
6-
)
7-
from opentelemetry.propagators.textmap import (
8-
CarrierT,
9-
Getter,
10-
Setter,
11-
TextMapPropagator,
12-
default_getter,
13-
default_setter,
14-
)
15-
from opentelemetry.trace import (
16-
NonRecordingSpan,
17-
SpanContext,
18-
TraceFlags,
19-
)
20-
1+
from sentry_sdk.integrations import DidNotEnable
212
from sentry_sdk.integrations.opentelemetry.consts import (
223
SENTRY_BAGGAGE_KEY,
234
SENTRY_TRACE_KEY,
@@ -31,6 +12,29 @@
3112
)
3213
from sentry_sdk.tracing_utils import Baggage, extract_sentrytrace_data
3314

15+
try:
16+
from opentelemetry import trace
17+
from opentelemetry.context import (
18+
Context,
19+
get_current,
20+
set_value,
21+
)
22+
from opentelemetry.propagators.textmap import (
23+
CarrierT,
24+
Getter,
25+
Setter,
26+
TextMapPropagator,
27+
default_getter,
28+
default_setter,
29+
)
30+
from opentelemetry.trace import (
31+
NonRecordingSpan,
32+
SpanContext,
33+
TraceFlags,
34+
)
35+
except ImportError:
36+
raise DidNotEnable("opentelemetry not installed")
37+
3438
from typing import TYPE_CHECKING
3539

3640
if TYPE_CHECKING:

sentry_sdk/integrations/opentelemetry/span_processor.py

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,9 @@
22
from time import time
33
from typing import TYPE_CHECKING, cast
44

5-
from opentelemetry.context import get_value
6-
from opentelemetry.sdk.trace import SpanProcessor, ReadableSpan as OTelSpan
7-
from opentelemetry.semconv.trace import SpanAttributes
8-
from opentelemetry.trace import (
9-
format_span_id,
10-
format_trace_id,
11-
get_current_span,
12-
SpanKind,
13-
)
14-
from opentelemetry.trace.span import (
15-
INVALID_SPAN_ID,
16-
INVALID_TRACE_ID,
17-
)
185
from sentry_sdk import get_client, start_transaction
196
from sentry_sdk.consts import INSTRUMENTER, SPANSTATUS
7+
from sentry_sdk.integrations import DidNotEnable
208
from sentry_sdk.integrations.opentelemetry.consts import (
219
SENTRY_BAGGAGE_KEY,
2210
SENTRY_TRACE_KEY,
@@ -26,6 +14,23 @@
2614

2715
from urllib3.util import parse_url as urlparse
2816

17+
try:
18+
from opentelemetry.context import get_value
19+
from opentelemetry.sdk.trace import SpanProcessor, ReadableSpan as OTelSpan
20+
from opentelemetry.semconv.trace import SpanAttributes
21+
from opentelemetry.trace import (
22+
format_span_id,
23+
format_trace_id,
24+
get_current_span,
25+
SpanKind,
26+
)
27+
from opentelemetry.trace.span import (
28+
INVALID_SPAN_ID,
29+
INVALID_TRACE_ID,
30+
)
31+
except ImportError:
32+
raise DidNotEnable("opentelemetry not installed")
33+
2934
if TYPE_CHECKING:
3035
from typing import Any, Optional, Union
3136
from opentelemetry import context as context_api

tests/test_shadowed_module.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,7 @@ def pytest_generate_tests(metafunc):
3030
submodule_names
3131
- {
3232
"clickhouse_driver",
33-
"grpc",
3433
"litellm",
35-
"opentelemetry",
3634
"pure_eval",
3735
"ray",
3836
"typer",

0 commit comments

Comments
 (0)