Skip to content

Commit 8c82502

Browse files
xrmxMikeGoldsmith
andauthored
Misc fixes towards opentelemetry-sdk being type checked (#5105)
* opentelemetry-sdk: fix some typing warnings These variables are check for None at runtime so we can assume that later they are not Optional anymore. * opentelemetry-sdk: add missing types for exponential histograms mapping * opentelemetry-sdk: silence typing warnings in buckets Honestly no idea what's going on here. * pyproject: exponential_histogram dir is now clean for typechecking * opentelemetry-sdk: fix typing warnings in _view_instrument_match * opentelemetry-sdk: fix path of type * Fixup * Update opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exponential_histogram/mapping/__init__.py Co-authored-by: Mike Goldsmith <goldsmith.mike@gmail.com> --------- Co-authored-by: Mike Goldsmith <goldsmith.mike@gmail.com>
1 parent 6339fc4 commit 8c82502

File tree

6 files changed

+29
-9
lines changed

6 files changed

+29
-9
lines changed

opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/_view_instrument_match.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from logging import getLogger
1717
from threading import Lock
1818
from time import time_ns
19-
from typing import Dict, List, Optional, Sequence
19+
from typing import Dict, List, Optional, Sequence, cast
2020

2121
from opentelemetry.sdk.metrics._internal.aggregation import (
2222
Aggregation,
@@ -76,10 +76,16 @@ def conflicts(self, other: "_ViewInstrumentMatch") -> bool:
7676
# type since they are functionally equivalent.
7777
and self._aggregation.__class__ == other._aggregation.__class__
7878
)
79+
if not result:
80+
return result
81+
7982
if isinstance(self._aggregation, _SumAggregation):
83+
# if result is True the two aggregation are of the same type
84+
self._aggregation = cast(_SumAggregation, self._aggregation)
85+
other._aggregation = cast(_SumAggregation, other._aggregation)
86+
8087
result = (
81-
result
82-
and self._aggregation._instrument_is_monotonic
88+
self._aggregation._instrument_is_monotonic
8389
== other._aggregation._instrument_is_monotonic
8490
and self._aggregation._instrument_aggregation_temporality
8591
== other._aggregation._instrument_aggregation_temporality

opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/aggregation.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
Sequence,
3030
Type,
3131
TypeVar,
32+
cast,
3233
)
3334

3435
from opentelemetry.metrics import (
@@ -968,6 +969,14 @@ def collect(
968969
if scale is None and self._previous_scale is not None:
969970
scale = self._previous_scale
970971

972+
# here self._previous_value_negative and self._previous_value_positive are not Optional anymore
973+
self._previous_value_negative = cast(
974+
Buckets, self._previous_value_negative
975+
)
976+
self._previous_value_positive = cast(
977+
Buckets, self._previous_value_positive
978+
)
979+
971980
min_scale = min(self._previous_scale, scale)
972981

973982
low_positive, high_positive = (

opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exponential_histogram/buckets.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -182,9 +182,9 @@ def copy_empty(self) -> "Buckets":
182182
# pylint: disable=protected-access
183183
# pylint: disable=attribute-defined-outside-init
184184
# pylint: disable=invalid-name
185-
copy._Buckets__index_base = self._Buckets__index_base
186-
copy._Buckets__index_start = self._Buckets__index_start
187-
copy._Buckets__index_end = self._Buckets__index_end
185+
copy._Buckets__index_base = self._Buckets__index_base # type: ignore[reportArgumentType]
186+
copy._Buckets__index_start = self._Buckets__index_start # type: ignore[reportArgumentType]
187+
copy._Buckets__index_end = self._Buckets__index_end # type: ignore[reportArgumentType]
188188
copy._counts = [0 for _ in self._counts]
189189

190190
return copy

opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exponential_histogram/mapping/__init__.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,20 @@
1313
# limitations under the License.
1414

1515
from abc import ABC, abstractmethod
16+
from threading import Lock
1617

1718

1819
class Mapping(ABC):
1920
"""
2021
Parent class for `LogarithmMapping` and `ExponentialMapping`.
2122
"""
2223

24+
_mappings: dict[int, "Mapping"]
25+
_mappings_lock: Lock
26+
27+
_min_scale: int
28+
_max_scale: int
29+
2330
# pylint: disable=no-member
2431
def __new__(cls, scale: int):
2532
with cls._mappings_lock:

opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/measurement_consumer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ def collect(
5858
class SynchronousMeasurementConsumer(MeasurementConsumer):
5959
def __init__(
6060
self,
61-
sdk_config: "opentelemetry.sdk.metrics._internal.SdkConfiguration",
61+
sdk_config: "opentelemetry.sdk.metrics._internal.sdk_configuration.SdkConfiguration",
6262
) -> None:
6363
self._lock = Lock()
6464
self._sdk_config = sdk_config

pyproject.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,8 @@ exclude = [
130130
"opentelemetry-sdk/tests",
131131
"opentelemetry-sdk/src/opentelemetry/sdk/_events",
132132
"opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py",
133-
"opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/_view_instrument_match.py",
134133
"opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/aggregation.py",
135134
"opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exemplar/exemplar_reservoir.py",
136-
"opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exponential_histogram/",
137135
"opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/export/",
138136
"opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/instrument.py",
139137
"opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/measurement_consumer.py",

0 commit comments

Comments
 (0)