From 48faadb877e5ea06d187c5e7f7e0bad70fc50b47 Mon Sep 17 00:00:00 2001 From: Ted Kern Date: Sat, 16 Oct 2021 01:47:44 -0700 Subject: [PATCH 1/4] ReadableSpan events and links now return a tuple Removed MappingProxy since events and links are not mappings Signed-off-by: Ted Kern --- CHANGELOG.md | 2 ++ .../src/opentelemetry/sdk/trace/__init__.py | 6 ++--- opentelemetry-sdk/tests/trace/test_trace.py | 26 +++++++++++++++++++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c5541542e04..c66542b599c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +- Fix ReadableSpan property types attempting to create a mapping from a list + ([#2215](https://github.com/open-telemetry/opentelemetry-python/pull/2215)) - Upgrade GRPC/protobuf related dependency and regenerate otlp protobufs ([#2201](https://github.com/open-telemetry/opentelemetry-python/pull/2201)) - Propagation: only warn about oversized baggage headers when headers exist diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py index 38ecf1c316c..35fefc3e3f2 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py @@ -350,7 +350,7 @@ def __init__( parent: Optional[trace_api.SpanContext] = None, resource: Resource = Resource.create({}), attributes: types.Attributes = None, - events: Sequence[Event] = None, + events: Sequence[Event] = (), links: Sequence[trace_api.Link] = (), kind: trace_api.SpanKind = trace_api.SpanKind.INTERNAL, instrumentation_info: InstrumentationInfo = None, @@ -426,11 +426,11 @@ def attributes(self) -> types.Attributes: @property def events(self) -> Sequence[Event]: - return MappingProxyType(self._events) + return tuple(event for event in self._events) @property def links(self) -> Sequence[trace_api.Link]: - return MappingProxyType(self._links) + return tuple(link for link in self._links) @property def resource(self) -> Resource: diff --git a/opentelemetry-sdk/tests/trace/test_trace.py b/opentelemetry-sdk/tests/trace/test_trace.py index 0a5c2d349ca..6b9d68e42ba 100644 --- a/opentelemetry-sdk/tests/trace/test_trace.py +++ b/opentelemetry-sdk/tests/trace/test_trace.py @@ -569,6 +569,32 @@ def test_surplus_span_attributes(self): self.assertEqual(len(root.attributes), max_attrs) +class TestReadableSpan(unittest.TestCase): + def test_links(self): + span = trace.ReadableSpan() + self.assertEqual(span.links, ()) + + span = trace.ReadableSpan( + links=[trace_api.Link(context=trace_api.INVALID_SPAN_CONTEXT)] * 2, + ) + self.assertEqual(len(span.links), 2) + for link in span.links: + self.assertFalse(link.context.is_valid) + + def test_events(self): + span = trace.ReadableSpan() + self.assertEqual(span.events, ()) + + events = [ + trace.Event('foo1', {'bar1': 'baz1'}), + trace.Event('foo2', {'bar2': 'baz2'}), + ] + span = trace.ReadableSpan( + events=events + ) + self.assertEqual(span.events, tuple(events)) + + class TestSpan(unittest.TestCase): # pylint: disable=too-many-public-methods From bd4fdfd3aa34883fa953dac8ae14ecc6a7e62897 Mon Sep 17 00:00:00 2001 From: Ted Kern Date: Tue, 19 Oct 2021 17:21:22 -0700 Subject: [PATCH 2/4] fix lint Signed-off-by: Ted Kern --- opentelemetry-sdk/tests/trace/test_trace.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/opentelemetry-sdk/tests/trace/test_trace.py b/opentelemetry-sdk/tests/trace/test_trace.py index 6b9d68e42ba..8d77be5738b 100644 --- a/opentelemetry-sdk/tests/trace/test_trace.py +++ b/opentelemetry-sdk/tests/trace/test_trace.py @@ -583,8 +583,7 @@ def test_links(self): def test_events(self): span = trace.ReadableSpan() - self.assertEqual(span.events, ()) - + self.assertEqual(span.events, ()) events = [ trace.Event('foo1', {'bar1': 'baz1'}), trace.Event('foo2', {'bar2': 'baz2'}), From 54b22f9f7437ea860b8d72147d6beec5a2d97a91 Mon Sep 17 00:00:00 2001 From: Ted Kern Date: Wed, 20 Oct 2021 15:23:32 -0700 Subject: [PATCH 3/4] fix lint --- opentelemetry-sdk/tests/trace/test_trace.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opentelemetry-sdk/tests/trace/test_trace.py b/opentelemetry-sdk/tests/trace/test_trace.py index 8d77be5738b..9400cbd4d53 100644 --- a/opentelemetry-sdk/tests/trace/test_trace.py +++ b/opentelemetry-sdk/tests/trace/test_trace.py @@ -583,7 +583,7 @@ def test_links(self): def test_events(self): span = trace.ReadableSpan() - self.assertEqual(span.events, ()) + self.assertEqual(span.events, ()) events = [ trace.Event('foo1', {'bar1': 'baz1'}), trace.Event('foo2', {'bar2': 'baz2'}), From b5fa95cc23d369675febb2656bb7ede6d42b9c0c Mon Sep 17 00:00:00 2001 From: Ted Kern Date: Thu, 21 Oct 2021 20:41:33 -0700 Subject: [PATCH 4/4] fix lint --- opentelemetry-sdk/tests/trace/test_trace.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/opentelemetry-sdk/tests/trace/test_trace.py b/opentelemetry-sdk/tests/trace/test_trace.py index 9400cbd4d53..487c537c184 100644 --- a/opentelemetry-sdk/tests/trace/test_trace.py +++ b/opentelemetry-sdk/tests/trace/test_trace.py @@ -585,12 +585,10 @@ def test_events(self): span = trace.ReadableSpan() self.assertEqual(span.events, ()) events = [ - trace.Event('foo1', {'bar1': 'baz1'}), - trace.Event('foo2', {'bar2': 'baz2'}), + trace.Event("foo1", {"bar1": "baz1"}), + trace.Event("foo2", {"bar2": "baz2"}), ] - span = trace.ReadableSpan( - events=events - ) + span = trace.ReadableSpan(events=events) self.assertEqual(span.events, tuple(events))