Skip to content

Commit 68d0342

Browse files
NiteshDhanpalclaude
andcommitted
fix(tracing): satisfy pyright in obs-correlation test mocks
Annotate fake ModuleType stubs as Any (pyright rejects attribute assignment on ModuleType), widen the mock 'record' dicts to dict[str, Any], assert the Optional resolver returns before unpacking, and narrow span.data with isinstance before subscripting. Clears the pyright errors failing the lint job. No behavior change. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 780a7de commit 68d0342

2 files changed

Lines changed: 21 additions & 13 deletions

File tree

tests/lib/core/tracing/test_obs_ids.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import sys
44
import types
5+
from typing import Any
56

67
import pytest
78

@@ -87,13 +88,15 @@ class TestIdFormatting:
8788
def test_ddtrace_ids_formats_w3c_hex(self, monkeypatch):
8889
ctx = types.SimpleNamespace(trace_id=0xABC, span_id=0xFF)
8990
tracer = types.SimpleNamespace(current_trace_context=lambda: ctx)
90-
fake_ddtrace = types.ModuleType("ddtrace")
91-
fake_trace = types.ModuleType("ddtrace.trace")
91+
fake_ddtrace: Any = types.ModuleType("ddtrace")
92+
fake_trace: Any = types.ModuleType("ddtrace.trace")
9293
fake_trace.tracer = tracer
9394
monkeypatch.setitem(sys.modules, "ddtrace", fake_ddtrace)
9495
monkeypatch.setitem(sys.modules, "ddtrace.trace", fake_trace)
9596

96-
trace_id, span_id = obs_ids._ddtrace_ids()
97+
result = obs_ids._ddtrace_ids()
98+
assert result is not None
99+
trace_id, span_id = result
97100
assert trace_id == "00000000000000000000000000000abc"
98101
assert span_id == "000000000000000000ff"[-16:] # 16-hex
99102
assert len(trace_id) == 32 and len(span_id) == 16
@@ -102,18 +105,20 @@ def test_lgtm_ids_formats_w3c_hex(self, monkeypatch):
102105
span_ctx = types.SimpleNamespace(trace_id=0xABC, span_id=0xFF, is_valid=True)
103106
current_span = types.SimpleNamespace(get_span_context=lambda: span_ctx)
104107
fake_trace_mod = types.SimpleNamespace(get_current_span=lambda: current_span)
105-
fake_otel = types.ModuleType("opentelemetry")
108+
fake_otel: Any = types.ModuleType("opentelemetry")
106109
fake_otel.trace = fake_trace_mod
107110
monkeypatch.setitem(sys.modules, "opentelemetry", fake_otel)
108111

109-
trace_id, span_id = obs_ids._lgtm_ids()
112+
result = obs_ids._lgtm_ids()
113+
assert result is not None
114+
trace_id, span_id = result
110115
assert trace_id == "00000000000000000000000000000abc"
111116
assert len(trace_id) == 32 and len(span_id) == 16
112117

113118
def test_ddtrace_ids_none_when_no_context(self, monkeypatch):
114119
tracer = types.SimpleNamespace(current_trace_context=lambda: None)
115-
fake_ddtrace = types.ModuleType("ddtrace")
116-
fake_trace = types.ModuleType("ddtrace.trace")
120+
fake_ddtrace: Any = types.ModuleType("ddtrace")
121+
fake_trace: Any = types.ModuleType("ddtrace.trace")
117122
fake_trace.tracer = tracer
118123
monkeypatch.setitem(sys.modules, "ddtrace", fake_ddtrace)
119124
monkeypatch.setitem(sys.modules, "ddtrace.trace", fake_trace)

tests/lib/core/tracing/test_obs_span.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import sys
44
import types
5+
from typing import Any
56
from unittest.mock import MagicMock
67

78
import pytest
@@ -62,7 +63,7 @@ def end(self):
6263

6364

6465
def _install_fake_otel(monkeypatch, *, trace_id=0xABC, span_id=0xFF):
65-
record: dict = {"span": None, "attached": [], "detached": []}
66+
record: dict[str, Any] = {"span": None, "attached": [], "detached": []}
6667

6768
def start_span(name):
6869
span = _FakeOtelSpan(name, trace_id, span_id)
@@ -80,7 +81,7 @@ def start_span(name):
8081
attach=lambda ctx: record["attached"].append(ctx) or object(),
8182
detach=lambda token: record["detached"].append(token),
8283
)
83-
fake_otel = types.ModuleType("opentelemetry")
84+
fake_otel: Any = types.ModuleType("opentelemetry")
8485
fake_otel.trace = fake_trace
8586
fake_otel.context = fake_context
8687
monkeypatch.setitem(sys.modules, "opentelemetry", fake_otel)
@@ -104,7 +105,7 @@ def finish(self):
104105

105106

106107
def _install_fake_ddtrace(monkeypatch, *, active=True, trace_id=0xABC, span_id=0xFF):
107-
record: dict = {"span": None, "started": []}
108+
record: dict[str, Any] = {"span": None, "started": []}
108109
ctx_obj = object() if active else None
109110
record["ctx"] = ctx_obj
110111

@@ -118,8 +119,8 @@ def start_span(name, child_of=None, activate=False):
118119
current_trace_context=lambda: ctx_obj,
119120
start_span=start_span,
120121
)
121-
fake_ddtrace = types.ModuleType("ddtrace")
122-
fake_trace = types.ModuleType("ddtrace.trace")
122+
fake_ddtrace: Any = types.ModuleType("ddtrace")
123+
fake_trace: Any = types.ModuleType("ddtrace.trace")
123124
fake_trace.tracer = tracer
124125
monkeypatch.setitem(sys.modules, "ddtrace", fake_ddtrace)
125126
monkeypatch.setitem(sys.modules, "ddtrace.trace", fake_trace)
@@ -262,6 +263,7 @@ def test_lgtm_business_span_tagged_with_wrapper_ids(self, monkeypatch):
262263
span = trace.start_span(name="chat_completion")
263264

264265
assert record["span"].name == "chat_completion" # dedicated named span
266+
assert isinstance(span.data, dict)
265267
assert span.data["obs_trace_id"] == "00000000000000000000000000000111"
266268
assert span.data["obs_span_id"] == "0000000000000222"
267269
assert span.trace_id == "task-run-1" # business id unchanged
@@ -309,6 +311,7 @@ def test_dd_only_business_span_tagged_via_ddtrace(self, monkeypatch):
309311
span = trace.start_span(name="get_state")
310312

311313
assert record["span"].name == "get_state"
314+
assert isinstance(span.data, dict)
312315
assert span.data["obs_trace_id"] == "00000000000000000000000000000111"
313316
assert span.data["obs_span_id"] == "0000000000000222"
314317
assert record["span"].tags == {
@@ -444,7 +447,7 @@ def start_span(name):
444447
attach=lambda ctx: object(),
445448
detach=lambda token: None,
446449
)
447-
fake_otel = types.ModuleType("opentelemetry")
450+
fake_otel: Any = types.ModuleType("opentelemetry")
448451
fake_otel.trace = fake_trace
449452
fake_otel.context = fake_context
450453
monkeypatch.setitem(sys.modules, "opentelemetry", fake_otel)

0 commit comments

Comments
 (0)