Skip to content

Commit 48faadb

Browse files
committed
ReadableSpan events and links now return a tuple
Removed MappingProxy since events and links are not mappings Signed-off-by: Ted Kern <[email protected]>
1 parent ea00608 commit 48faadb

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1010

1111

1212

13+
- Fix ReadableSpan property types attempting to create a mapping from a list
14+
([#2215](https://github.com/open-telemetry/opentelemetry-python/pull/2215))
1315
- Upgrade GRPC/protobuf related dependency and regenerate otlp protobufs
1416
([#2201](https://github.com/open-telemetry/opentelemetry-python/pull/2201))
1517
- Propagation: only warn about oversized baggage headers when headers exist

opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ def __init__(
350350
parent: Optional[trace_api.SpanContext] = None,
351351
resource: Resource = Resource.create({}),
352352
attributes: types.Attributes = None,
353-
events: Sequence[Event] = None,
353+
events: Sequence[Event] = (),
354354
links: Sequence[trace_api.Link] = (),
355355
kind: trace_api.SpanKind = trace_api.SpanKind.INTERNAL,
356356
instrumentation_info: InstrumentationInfo = None,
@@ -426,11 +426,11 @@ def attributes(self) -> types.Attributes:
426426

427427
@property
428428
def events(self) -> Sequence[Event]:
429-
return MappingProxyType(self._events)
429+
return tuple(event for event in self._events)
430430

431431
@property
432432
def links(self) -> Sequence[trace_api.Link]:
433-
return MappingProxyType(self._links)
433+
return tuple(link for link in self._links)
434434

435435
@property
436436
def resource(self) -> Resource:

opentelemetry-sdk/tests/trace/test_trace.py

+26
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,32 @@ def test_surplus_span_attributes(self):
569569
self.assertEqual(len(root.attributes), max_attrs)
570570

571571

572+
class TestReadableSpan(unittest.TestCase):
573+
def test_links(self):
574+
span = trace.ReadableSpan()
575+
self.assertEqual(span.links, ())
576+
577+
span = trace.ReadableSpan(
578+
links=[trace_api.Link(context=trace_api.INVALID_SPAN_CONTEXT)] * 2,
579+
)
580+
self.assertEqual(len(span.links), 2)
581+
for link in span.links:
582+
self.assertFalse(link.context.is_valid)
583+
584+
def test_events(self):
585+
span = trace.ReadableSpan()
586+
self.assertEqual(span.events, ())
587+
588+
events = [
589+
trace.Event('foo1', {'bar1': 'baz1'}),
590+
trace.Event('foo2', {'bar2': 'baz2'}),
591+
]
592+
span = trace.ReadableSpan(
593+
events=events
594+
)
595+
self.assertEqual(span.events, tuple(events))
596+
597+
572598
class TestSpan(unittest.TestCase):
573599
# pylint: disable=too-many-public-methods
574600

0 commit comments

Comments
 (0)