diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py index a1c0576520e..d0f228e76d6 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py @@ -112,6 +112,7 @@ def on_start( span: The :class:`opentelemetry.trace.Span` that just started. parent_context: The parent context of the span that just started. """ + ... def on_end(self, span: "ReadableSpan") -> None: """Called when a :class:`opentelemetry.trace.Span` is ended. @@ -122,9 +123,11 @@ def on_end(self, span: "ReadableSpan") -> None: Args: span: The :class:`opentelemetry.trace.Span` that just ended. """ + ... def shutdown(self) -> None: """Called when a :class:`opentelemetry.sdk.trace.TracerProvider` is shutdown.""" + ... def force_flush(self, timeout_millis: int = 30000) -> bool: """Export all ended spans to the configured Exporter that have not yet @@ -137,6 +140,7 @@ def force_flush(self, timeout_millis: int = 30000) -> bool: Returns: False if the timeout is exceeded, True otherwise. """ + ... # Temporary fix until https://github.com/PyCQA/pylint/issues/4098 is resolved @@ -273,7 +277,7 @@ def force_flush(self, timeout_millis: int = 30000) -> bool: timeout, False otherwise. """ futures = [] - for sp in self._span_processors: # type: SpanProcessor + for sp in self._span_processors: future = self._executor.submit(sp.force_flush, timeout_millis) futures.append(future) diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py index 9e7557b05af..887f391b61e 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py @@ -72,18 +72,21 @@ def export( Returns: The result of the export """ + ... def shutdown(self) -> None: """Shuts down the exporter. Called when the SDK is shut down. """ + ... def force_flush(self, timeout_millis: int = 30000) -> bool: """Hint to ensure that the export of any spans the exporter has received prior to the call to ForceFlush SHOULD be completed as soon as possible, preferably before returning from this method. """ + ... class SimpleSpanProcessor(SpanProcessor): @@ -102,7 +105,7 @@ def on_start( pass def on_end(self, span: ReadableSpan) -> None: - if not span.context.trace_flags.sampled: + if span.context and not span.context.trace_flags.sampled: return token = attach(set_value(_SUPPRESS_INSTRUMENTATION_KEY, True)) try: @@ -188,7 +191,7 @@ def on_start( pass def on_end(self, span: ReadableSpan) -> None: - if not span.context.trace_flags.sampled: + if span.context and not span.context.trace_flags.sampled: return self._batch_processor.emit(span) diff --git a/pyproject.toml b/pyproject.toml index b62b0cdeba6..4ec4b706df9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -111,11 +111,8 @@ exclude = [ "opentelemetry-sdk/tests", "opentelemetry-sdk/src/opentelemetry/sdk/_events", "opentelemetry-sdk/src/opentelemetry/sdk/_logs", - "opentelemetry-sdk/src/opentelemetry/sdk/error_handler", "opentelemetry-sdk/src/opentelemetry/sdk/metrics", - "opentelemetry-sdk/src/opentelemetry/sdk/trace/export", "opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py", - "opentelemetry-sdk/src/opentelemetry/sdk/util", "opentelemetry-sdk/benchmarks", ]