Skip to content

Commit 24ac96e

Browse files
authored
Run mypy checks on Metrics API (#2335)
* Run mypy checks on sdk * Add more api type * Update callbacks * Fix conflicts * Fix incorrect comparision * Fix lint * Fix lint
1 parent 0de0eab commit 24ac96e

File tree

5 files changed

+253
-76
lines changed

5 files changed

+253
-76
lines changed

opentelemetry-api/src/opentelemetry/_metrics/__init__.py

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

1515
# pylint: disable=too-many-ancestors
16-
# type: ignore
1716

1817
"""
1918
The OpenTelemetry metrics API describes the classes used to generate
@@ -46,9 +45,10 @@
4645
from logging import getLogger
4746
from os import environ
4847
from threading import Lock
49-
from typing import List, Optional, Set, Tuple, cast
48+
from typing import List, Optional, Sequence, Set, Tuple, Union, cast
5049

5150
from opentelemetry._metrics.instrument import (
51+
CallbackT,
5252
Counter,
5353
Histogram,
5454
NoOpCounter,
@@ -63,7 +63,6 @@
6363
UpDownCounter,
6464
_ProxyCounter,
6565
_ProxyHistogram,
66-
_ProxyInstrument,
6766
_ProxyObservableCounter,
6867
_ProxyObservableGauge,
6968
_ProxyObservableUpDownCounter,
@@ -78,6 +77,16 @@
7877
_logger = getLogger(__name__)
7978

8079

80+
ProxyInstrumentT = Union[
81+
_ProxyCounter,
82+
_ProxyHistogram,
83+
_ProxyObservableCounter,
84+
_ProxyObservableGauge,
85+
_ProxyObservableUpDownCounter,
86+
_ProxyUpDownCounter,
87+
]
88+
89+
8190
class MeterProvider(ABC):
8291
"""
8392
MeterProvider is the entry point of the API. It provides access to `Meter` instances.
@@ -87,8 +96,8 @@ class MeterProvider(ABC):
8796
def get_meter(
8897
self,
8998
name: str,
90-
version: str = None,
91-
schema_url: str = None,
99+
version: Optional[str] = None,
100+
schema_url: Optional[str] = None,
92101
) -> "Meter":
93102
"""Returns a `Meter` for use by the given instrumentation library.
94103
@@ -123,9 +132,9 @@ class NoOpMeterProvider(MeterProvider):
123132

124133
def get_meter(
125134
self,
126-
name,
127-
version=None,
128-
schema_url=None,
135+
name: str,
136+
version: Optional[str] = None,
137+
schema_url: Optional[str] = None,
129138
) -> "Meter":
130139
"""Returns a NoOpMeter."""
131140
super().get_meter(name, version=version, schema_url=schema_url)
@@ -140,9 +149,9 @@ def __init__(self) -> None:
140149

141150
def get_meter(
142151
self,
143-
name,
144-
version=None,
145-
schema_url=None,
152+
name: str,
153+
version: Optional[str] = None,
154+
schema_url: Optional[str] = None,
146155
) -> "Meter":
147156
with self._lock:
148157
if self._real_meter_provider is not None:
@@ -168,7 +177,12 @@ class Meter(ABC):
168177
used to produce measurements.
169178
"""
170179

171-
def __init__(self, name: str, version: str = None, schema_url: str = None):
180+
def __init__(
181+
self,
182+
name: str,
183+
version: Optional[str] = None,
184+
schema_url: Optional[str] = None,
185+
) -> None:
172186
super().__init__()
173187
self._name = name
174188
self._version = version
@@ -177,21 +191,21 @@ def __init__(self, name: str, version: str = None, schema_url: str = None):
177191
self._instrument_ids_lock = Lock()
178192

179193
@property
180-
def name(self):
194+
def name(self) -> str:
181195
"""
182196
The name of the instrumenting module.
183197
"""
184198
return self._name
185199

186200
@property
187-
def version(self):
201+
def version(self) -> Optional[str]:
188202
"""
189203
The version string of the instrumenting library.
190204
"""
191205
return self._version
192206

193207
@property
194-
def schema_url(self):
208+
def schema_url(self) -> Optional[str]:
195209
"""
196210
Specifies the Schema URL of the emitted telemetry
197211
"""
@@ -225,7 +239,10 @@ def _is_instrument_registered(
225239

226240
@abstractmethod
227241
def create_counter(
228-
self, name: str, unit: str = "", description: str = ""
242+
self,
243+
name: str,
244+
unit: str = "",
245+
description: str = "",
229246
) -> Counter:
230247
"""Creates a `Counter` instrument
231248
@@ -238,7 +255,10 @@ def create_counter(
238255

239256
@abstractmethod
240257
def create_up_down_counter(
241-
self, name: str, unit: str = "", description: str = ""
258+
self,
259+
name: str,
260+
unit: str = "",
261+
description: str = "",
242262
) -> UpDownCounter:
243263
"""Creates an `UpDownCounter` instrument
244264
@@ -251,7 +271,11 @@ def create_up_down_counter(
251271

252272
@abstractmethod
253273
def create_observable_counter(
254-
self, name, callbacks=None, unit="", description=""
274+
self,
275+
name: str,
276+
callbacks: Optional[Sequence[CallbackT]] = None,
277+
unit: str = "",
278+
description: str = "",
255279
) -> ObservableCounter:
256280
"""Creates an `ObservableCounter` instrument
257281
@@ -334,7 +358,12 @@ def cpu_time_callback(states_to_include: set[str]) -> Iterable[Iterable[Observat
334358
"""
335359

336360
@abstractmethod
337-
def create_histogram(self, name, unit="", description="") -> Histogram:
361+
def create_histogram(
362+
self,
363+
name: str,
364+
unit: str = "",
365+
description: str = "",
366+
) -> Histogram:
338367
"""Creates a `opentelemetry._metrics.instrument.Histogram` instrument
339368
340369
Args:
@@ -346,7 +375,11 @@ def create_histogram(self, name, unit="", description="") -> Histogram:
346375

347376
@abstractmethod
348377
def create_observable_gauge(
349-
self, name, callbacks=None, unit="", description=""
378+
self,
379+
name: str,
380+
callbacks: Optional[Sequence[CallbackT]] = None,
381+
unit: str = "",
382+
description: str = "",
350383
) -> ObservableGauge:
351384
"""Creates an `ObservableGauge` instrument
352385
@@ -363,7 +396,11 @@ def create_observable_gauge(
363396

364397
@abstractmethod
365398
def create_observable_up_down_counter(
366-
self, name, callbacks=None, unit="", description=""
399+
self,
400+
name: str,
401+
callbacks: Optional[Sequence[CallbackT]] = None,
402+
unit: str = "",
403+
description: str = "",
367404
) -> ObservableUpDownCounter:
368405
"""Creates an `ObservableUpDownCounter` instrument
369406
@@ -382,13 +419,13 @@ def create_observable_up_down_counter(
382419
class _ProxyMeter(Meter):
383420
def __init__(
384421
self,
385-
name,
386-
version=None,
387-
schema_url=None,
388-
):
422+
name: str,
423+
version: Optional[str] = None,
424+
schema_url: Optional[str] = None,
425+
) -> None:
389426
super().__init__(name, version=version, schema_url=schema_url)
390427
self._lock = Lock()
391-
self._instruments: List[_ProxyInstrument] = []
428+
self._instruments: List[ProxyInstrumentT] = []
392429
self._real_meter: Optional[Meter] = None
393430

394431
def on_set_meter_provider(self, meter_provider: MeterProvider) -> None:
@@ -408,7 +445,12 @@ def on_set_meter_provider(self, meter_provider: MeterProvider) -> None:
408445
for instrument in self._instruments:
409446
instrument.on_meter_set(real_meter)
410447

411-
def create_counter(self, name, unit="", description="") -> Counter:
448+
def create_counter(
449+
self,
450+
name: str,
451+
unit: str = "",
452+
description: str = "",
453+
) -> Counter:
412454
with self._lock:
413455
if self._real_meter:
414456
return self._real_meter.create_counter(name, unit, description)
@@ -417,7 +459,10 @@ def create_counter(self, name, unit="", description="") -> Counter:
417459
return proxy
418460

419461
def create_up_down_counter(
420-
self, name, unit="", description=""
462+
self,
463+
name: str,
464+
unit: str = "",
465+
description: str = "",
421466
) -> UpDownCounter:
422467
with self._lock:
423468
if self._real_meter:
@@ -429,7 +474,11 @@ def create_up_down_counter(
429474
return proxy
430475

431476
def create_observable_counter(
432-
self, name, callbacks=None, unit="", description=""
477+
self,
478+
name: str,
479+
callbacks: Optional[Sequence[CallbackT]] = None,
480+
unit: str = "",
481+
description: str = "",
433482
) -> ObservableCounter:
434483
with self._lock:
435484
if self._real_meter:
@@ -442,7 +491,12 @@ def create_observable_counter(
442491
self._instruments.append(proxy)
443492
return proxy
444493

445-
def create_histogram(self, name, unit="", description="") -> Histogram:
494+
def create_histogram(
495+
self,
496+
name: str,
497+
unit: str = "",
498+
description: str = "",
499+
) -> Histogram:
446500
with self._lock:
447501
if self._real_meter:
448502
return self._real_meter.create_histogram(
@@ -453,7 +507,11 @@ def create_histogram(self, name, unit="", description="") -> Histogram:
453507
return proxy
454508

455509
def create_observable_gauge(
456-
self, name, callbacks=None, unit="", description=""
510+
self,
511+
name: str,
512+
callbacks: Optional[Sequence[CallbackT]] = None,
513+
unit: str = "",
514+
description: str = "",
457515
) -> ObservableGauge:
458516
with self._lock:
459517
if self._real_meter:
@@ -467,7 +525,11 @@ def create_observable_gauge(
467525
return proxy
468526

469527
def create_observable_up_down_counter(
470-
self, name, callbacks=None, unit="", description=""
528+
self,
529+
name: str,
530+
callbacks: Optional[Sequence[CallbackT]] = None,
531+
unit: str = "",
532+
description: str = "",
471533
) -> ObservableUpDownCounter:
472534
with self._lock:
473535
if self._real_meter:
@@ -490,7 +552,12 @@ class NoOpMeter(Meter):
490552
All operations are no-op.
491553
"""
492554

493-
def create_counter(self, name, unit="", description="") -> Counter:
555+
def create_counter(
556+
self,
557+
name: str,
558+
unit: str = "",
559+
description: str = "",
560+
) -> Counter:
494561
"""Returns a no-op Counter."""
495562
super().create_counter(name, unit=unit, description=description)
496563
if self._is_instrument_registered(
@@ -507,7 +574,10 @@ def create_counter(self, name, unit="", description="") -> Counter:
507574
return NoOpCounter(name, unit=unit, description=description)
508575

509576
def create_up_down_counter(
510-
self, name, unit="", description=""
577+
self,
578+
name: str,
579+
unit: str = "",
580+
description: str = "",
511581
) -> UpDownCounter:
512582
"""Returns a no-op UpDownCounter."""
513583
super().create_up_down_counter(
@@ -527,7 +597,11 @@ def create_up_down_counter(
527597
return NoOpUpDownCounter(name, unit=unit, description=description)
528598

529599
def create_observable_counter(
530-
self, name, callbacks=None, unit="", description=""
600+
self,
601+
name: str,
602+
callbacks: Optional[Sequence[CallbackT]] = None,
603+
unit: str = "",
604+
description: str = "",
531605
) -> ObservableCounter:
532606
"""Returns a no-op ObservableCounter."""
533607
super().create_observable_counter(
@@ -551,7 +625,12 @@ def create_observable_counter(
551625
description=description,
552626
)
553627

554-
def create_histogram(self, name, unit="", description="") -> Histogram:
628+
def create_histogram(
629+
self,
630+
name: str,
631+
unit: str = "",
632+
description: str = "",
633+
) -> Histogram:
555634
"""Returns a no-op Histogram."""
556635
super().create_histogram(name, unit=unit, description=description)
557636
if self._is_instrument_registered(
@@ -568,7 +647,11 @@ def create_histogram(self, name, unit="", description="") -> Histogram:
568647
return NoOpHistogram(name, unit=unit, description=description)
569648

570649
def create_observable_gauge(
571-
self, name, callbacks=None, unit="", description=""
650+
self,
651+
name: str,
652+
callbacks: Optional[Sequence[CallbackT]] = None,
653+
unit: str = "",
654+
description: str = "",
572655
) -> ObservableGauge:
573656
"""Returns a no-op ObservableGauge."""
574657
super().create_observable_gauge(
@@ -593,7 +676,11 @@ def create_observable_gauge(
593676
)
594677

595678
def create_observable_up_down_counter(
596-
self, name, callbacks=None, unit="", description=""
679+
self,
680+
name: str,
681+
callbacks: Optional[Sequence[CallbackT]] = None,
682+
unit: str = "",
683+
description: str = "",
597684
) -> ObservableUpDownCounter:
598685
"""Returns a no-op ObservableUpDownCounter."""
599686
super().create_observable_up_down_counter(
@@ -670,7 +757,7 @@ def get_meter_provider() -> MeterProvider:
670757
if OTEL_PYTHON_METER_PROVIDER not in environ.keys():
671758
return _PROXY_METER_PROVIDER
672759

673-
meter_provider: MeterProvider = _load_provider(
760+
meter_provider: MeterProvider = _load_provider( # type: ignore
674761
OTEL_PYTHON_METER_PROVIDER, "meter_provider"
675762
)
676763
_set_meter_provider(meter_provider, log=False)

0 commit comments

Comments
 (0)