Skip to content

Commit 5a4fb73

Browse files
committed
Resolve some Pyright type errors in Span/ReadableSpan and utility stubs
Signed-off-by: emdneto <9735060+emdneto@users.noreply.github.com>
1 parent 0f47f66 commit 5a4fb73

File tree

4 files changed

+20
-11
lines changed

4 files changed

+20
-11
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2222
([#4935](https://github.com/open-telemetry/opentelemetry-python/pull/4935))
2323
- `opentelemetry-sdk`: upgrade vendored OTel configuration schema from v1.0.0-rc.3 to v1.0.0
2424
([#4965](https://github.com/open-telemetry/opentelemetry-python/pull/4965))
25+
- Resolve some Pyright type errors in Span/ReadableSpan and utility stubs
26+
([#4965](https://github.com/open-telemetry/opentelemetry-python/pull/4965))
2527

2628
## Version 1.40.0/0.61b0 (2026-03-04)
2729

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

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ def force_flush(self, timeout_millis: int = 30000) -> bool:
153153
Returns:
154154
False if the timeout is exceeded, True otherwise.
155155
"""
156+
return True
156157

157158

158159
# Temporary fix until https://github.com/PyCQA/pylint/issues/4098 is resolved
@@ -251,9 +252,13 @@ def __init__(self, num_threads: int = 2):
251252
# Only the main thread is kept in forked processed, the executor
252253
# needs to be re-instantiated to get a fresh pool of threads:
253254
weak_reinit = weakref.WeakMethod(self._init_executor)
254-
os.register_at_fork(
255-
after_in_child=lambda: weak_reinit()(num_threads)
256-
)
255+
256+
def _after_in_child() -> None:
257+
reinit = weak_reinit()
258+
if reinit is not None:
259+
reinit(num_threads)
260+
261+
os.register_at_fork(after_in_child=_after_in_child)
257262

258263
def _init_executor(self, num_threads: int) -> None:
259264
self._executor = concurrent.futures.ThreadPoolExecutor(
@@ -466,7 +471,7 @@ def dropped_links(self) -> int:
466471
def name(self) -> str:
467472
return self._name
468473

469-
def get_span_context(self):
474+
def get_span_context(self) -> Optional[trace_api.SpanContext]:
470475
return self._context
471476

472477
@property
@@ -880,8 +885,8 @@ def _new_links(self, links: Sequence[trace_api.Link]):
880885

881886
return BoundedList.from_seq(self._limits.max_links, valid_links)
882887

883-
def get_span_context(self):
884-
return self._context
888+
def get_span_context(self) -> trace_api.SpanContext:
889+
return typing.cast(trace_api.SpanContext, self._context)
885890

886891
def set_attributes(
887892
self, attributes: Mapping[str, types.AttributeValue]
@@ -1047,7 +1052,7 @@ def __exit__(
10471052
self.set_status(
10481053
Status(
10491054
status_code=StatusCode.ERROR,
1050-
description=f"{exc_type.__name__}: {exc_val}",
1055+
description=(f"{type(exc_val).__name__}: {exc_val}"),
10511056
)
10521057
)
10531058

@@ -1182,6 +1187,7 @@ def start_span( # pylint: disable=too-many-locals
11821187
record_exception: bool = True,
11831188
set_status_on_exception: bool = True,
11841189
) -> trace_api.Span:
1190+
links = links or ()
11851191
parent_span_context = trace_api.get_current_span(
11861192
context
11871193
).get_span_context()

opentelemetry-sdk/src/opentelemetry/sdk/util/__init__.pyi

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ from typing import (
1717
Iterator,
1818
Mapping,
1919
MutableMapping,
20+
Optional,
2021
Sequence,
2122
TypeVar,
2223
overload,
@@ -42,7 +43,7 @@ class BoundedList(Sequence[_T]):
4243
"""
4344

4445
dropped: int
45-
def __init__(self, maxlen: int): ...
46+
def __init__(self, maxlen: Optional[int]): ...
4647
def insert(self, index: int, value: _T) -> None: ...
4748
@overload
4849
def __getitem__(self, i: int) -> _T: ...
@@ -52,7 +53,9 @@ class BoundedList(Sequence[_T]):
5253
def append(self, item: _T) -> None: ...
5354
def extend(self, seq: Sequence[_T]) -> None: ...
5455
@classmethod
55-
def from_seq(cls, maxlen: int, seq: Iterable[_T]) -> BoundedList[_T]: ... # pylint: disable=undefined-variable
56+
def from_seq(
57+
cls, maxlen: Optional[int], seq: Iterable[_T]
58+
) -> BoundedList[_T]: ... # pylint: disable=undefined-variable
5659

5760
class BoundedDict(MutableMapping[_KT, _VT]):
5861
"""An ordered dict with a fixed max capacity.

pyproject.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,6 @@ exclude = [
113113
"opentelemetry-sdk/tests",
114114
"opentelemetry-sdk/src/opentelemetry/sdk/_events",
115115
"opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/",
116-
"opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py",
117-
"opentelemetry-sdk/src/opentelemetry/sdk/_configuration/models.py",
118116
"opentelemetry-sdk/benchmarks",
119117
"exporter/opentelemetry-exporter-otlp-proto-grpc/tests",
120118
]

0 commit comments

Comments
 (0)