Skip to content

Commit 82128af

Browse files
emdnetoxrmx
andauthored
semconv: use X | Y union annotation (#5096)
* update semconv to use X | Y union annotation Signed-off-by: emdneto <9735060+emdneto@users.noreply.github.com> * add changelog Signed-off-by: emdneto <9735060+emdneto@users.noreply.github.com> --------- Signed-off-by: emdneto <9735060+emdneto@users.noreply.github.com> Co-authored-by: Riccardo Magliocchetti <riccardo.magliocchetti@gmail.com>
1 parent f8465c6 commit 82128af

File tree

10 files changed

+106
-157
lines changed

10 files changed

+106
-157
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
([#4907](https://github.com/open-telemetry/opentelemetry-python/issues/4907))
2323
- Drop Python 3.9 support
2424
([#5076](https://github.com/open-telemetry/opentelemetry-python/pull/5076))
25+
- `opentelemetry-semantic-conventions`: use `X | Y` union annotation
26+
([#5096](https://github.com/open-telemetry/opentelemetry-python/pull/5096))
2527

2628

2729
## Version 1.41.0/0.62b0 (2026-04-09)

opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/metrics/container_metrics.py

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

1515

16-
from typing import (
17-
Callable,
18-
Final,
19-
Generator,
20-
Iterable,
21-
Optional,
22-
Sequence,
23-
Union,
24-
)
16+
from collections.abc import Callable, Generator, Iterable, Sequence
17+
from typing import Final
2518

2619
from opentelemetry.metrics import (
2720
CallbackOptions,
@@ -33,10 +26,10 @@
3326
)
3427

3528
# pylint: disable=invalid-name
36-
CallbackT = Union[
37-
Callable[[CallbackOptions], Iterable[Observation]],
38-
Generator[Iterable[Observation], CallbackOptions, None],
39-
]
29+
CallbackT = (
30+
Callable[[CallbackOptions], Iterable[Observation]]
31+
| Generator[Iterable[Observation], CallbackOptions, None]
32+
)
4033

4134
CONTAINER_CPU_TIME: Final = "container.cpu.time"
4235
"""
@@ -66,7 +59,7 @@ def create_container_cpu_time(meter: Meter) -> Counter:
6659

6760

6861
def create_container_cpu_usage(
69-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
62+
meter: Meter, callbacks: Sequence[CallbackT] | None
7063
) -> ObservableGauge:
7164
"""Container's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs"""
7265
return meter.create_observable_gauge(
@@ -284,7 +277,7 @@ def create_container_network_io(meter: Meter) -> Counter:
284277

285278

286279
def create_container_uptime(
287-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
280+
meter: Meter, callbacks: Sequence[CallbackT] | None
288281
) -> ObservableGauge:
289282
"""The time the container has been running"""
290283
return meter.create_observable_gauge(

opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/metrics/cpu_metrics.py

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

1515

16-
from typing import (
17-
Callable,
18-
Final,
19-
Generator,
20-
Iterable,
21-
Optional,
22-
Sequence,
23-
Union,
24-
)
16+
from collections.abc import Callable, Generator, Iterable, Sequence
17+
from typing import Final
2518

2619
from opentelemetry.metrics import (
2720
CallbackOptions,
@@ -32,10 +25,10 @@
3225
)
3326

3427
# pylint: disable=invalid-name
35-
CallbackT = Union[
36-
Callable[[CallbackOptions], Iterable[Observation]],
37-
Generator[Iterable[Observation], CallbackOptions, None],
38-
]
28+
CallbackT = (
29+
Callable[[CallbackOptions], Iterable[Observation]]
30+
| Generator[Iterable[Observation], CallbackOptions, None]
31+
)
3932

4033
CPU_FREQUENCY: Final = "cpu.frequency"
4134
"""
@@ -44,7 +37,7 @@
4437

4538

4639
def create_cpu_frequency(
47-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
40+
meter: Meter, callbacks: Sequence[CallbackT] | None
4841
) -> ObservableGauge:
4942
"""Deprecated. Use `system.cpu.frequency` instead"""
5043
return meter.create_observable_gauge(
@@ -77,7 +70,7 @@ def create_cpu_time(meter: Meter) -> Counter:
7770

7871

7972
def create_cpu_utilization(
80-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
73+
meter: Meter, callbacks: Sequence[CallbackT] | None
8174
) -> ObservableGauge:
8275
"""Deprecated. Use `system.cpu.utilization` instead"""
8376
return meter.create_observable_gauge(

opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/metrics/hw_metrics.py

Lines changed: 30 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,8 @@
1313
# limitations under the License.
1414

1515

16-
from typing import (
17-
Callable,
18-
Final,
19-
Generator,
20-
Iterable,
21-
Optional,
22-
Sequence,
23-
Union,
24-
)
16+
from collections.abc import Callable, Generator, Iterable, Sequence
17+
from typing import Final
2518

2619
from opentelemetry.metrics import (
2720
CallbackOptions,
@@ -33,10 +26,10 @@
3326
)
3427

3528
# pylint: disable=invalid-name
36-
CallbackT = Union[
37-
Callable[[CallbackOptions], Iterable[Observation]],
38-
Generator[Iterable[Observation], CallbackOptions, None],
39-
]
29+
CallbackT = (
30+
Callable[[CallbackOptions], Iterable[Observation]]
31+
| Generator[Iterable[Observation], CallbackOptions, None]
32+
)
4033

4134
HW_BATTERY_CHARGE: Final = "hw.battery.charge"
4235
"""
@@ -47,7 +40,7 @@
4740

4841

4942
def create_hw_battery_charge(
50-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
43+
meter: Meter, callbacks: Sequence[CallbackT] | None
5144
) -> ObservableGauge:
5245
"""Remaining fraction of battery charge"""
5346
return meter.create_observable_gauge(
@@ -67,7 +60,7 @@ def create_hw_battery_charge(
6760

6861

6962
def create_hw_battery_charge_limit(
70-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
63+
meter: Meter, callbacks: Sequence[CallbackT] | None
7164
) -> ObservableGauge:
7265
"""Lower limit of battery charge fraction to ensure proper operation"""
7366
return meter.create_observable_gauge(
@@ -87,7 +80,7 @@ def create_hw_battery_charge_limit(
8780

8881

8982
def create_hw_battery_time_left(
90-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
83+
meter: Meter, callbacks: Sequence[CallbackT] | None
9184
) -> ObservableGauge:
9285
"""Time left before battery is completely charged or discharged"""
9386
return meter.create_observable_gauge(
@@ -107,7 +100,7 @@ def create_hw_battery_time_left(
107100

108101

109102
def create_hw_cpu_speed(
110-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
103+
meter: Meter, callbacks: Sequence[CallbackT] | None
111104
) -> ObservableGauge:
112105
"""CPU current frequency"""
113106
return meter.create_observable_gauge(
@@ -127,7 +120,7 @@ def create_hw_cpu_speed(
127120

128121

129122
def create_hw_cpu_speed_limit(
130-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
123+
meter: Meter, callbacks: Sequence[CallbackT] | None
131124
) -> ObservableGauge:
132125
"""CPU maximum frequency"""
133126
return meter.create_observable_gauge(
@@ -181,7 +174,7 @@ def create_hw_errors(meter: Meter) -> Counter:
181174

182175

183176
def create_hw_fan_speed(
184-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
177+
meter: Meter, callbacks: Sequence[CallbackT] | None
185178
) -> ObservableGauge:
186179
"""Fan speed in revolutions per minute"""
187180
return meter.create_observable_gauge(
@@ -201,7 +194,7 @@ def create_hw_fan_speed(
201194

202195

203196
def create_hw_fan_speed_limit(
204-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
197+
meter: Meter, callbacks: Sequence[CallbackT] | None
205198
) -> ObservableGauge:
206199
"""Speed limit in rpm"""
207200
return meter.create_observable_gauge(
@@ -221,7 +214,7 @@ def create_hw_fan_speed_limit(
221214

222215

223216
def create_hw_fan_speed_ratio(
224-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
217+
meter: Meter, callbacks: Sequence[CallbackT] | None
225218
) -> ObservableGauge:
226219
"""Fan speed expressed as a fraction of its maximum speed"""
227220
return meter.create_observable_gauge(
@@ -292,7 +285,7 @@ def create_hw_gpu_memory_usage(meter: Meter) -> UpDownCounter:
292285

293286

294287
def create_hw_gpu_memory_utilization(
295-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
288+
meter: Meter, callbacks: Sequence[CallbackT] | None
296289
) -> ObservableGauge:
297290
"""Fraction of GPU memory used"""
298291
return meter.create_observable_gauge(
@@ -312,7 +305,7 @@ def create_hw_gpu_memory_utilization(
312305

313306

314307
def create_hw_gpu_utilization(
315-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
308+
meter: Meter, callbacks: Sequence[CallbackT] | None
316309
) -> ObservableGauge:
317310
"""Fraction of time spent in a specific task"""
318311
return meter.create_observable_gauge(
@@ -332,7 +325,7 @@ def create_hw_gpu_utilization(
332325

333326

334327
def create_hw_host_ambient_temperature(
335-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
328+
meter: Meter, callbacks: Sequence[CallbackT] | None
336329
) -> ObservableGauge:
337330
"""Ambient (external) temperature of the physical host"""
338331
return meter.create_observable_gauge(
@@ -370,7 +363,7 @@ def create_hw_host_energy(meter: Meter) -> Counter:
370363

371364

372365
def create_hw_host_heating_margin(
373-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
366+
meter: Meter, callbacks: Sequence[CallbackT] | None
374367
) -> ObservableGauge:
375368
"""By how many degrees Celsius the temperature of the physical host can be increased, before reaching a warning threshold on one of the internal sensors"""
376369
return meter.create_observable_gauge(
@@ -391,7 +384,7 @@ def create_hw_host_heating_margin(
391384

392385

393386
def create_hw_host_power(
394-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
387+
meter: Meter, callbacks: Sequence[CallbackT] | None
395388
) -> ObservableGauge:
396389
"""Instantaneous power consumed by the entire physical host in Watts (`hw.host.energy` is preferred)"""
397390
return meter.create_observable_gauge(
@@ -445,7 +438,7 @@ def create_hw_logical_disk_usage(meter: Meter) -> UpDownCounter:
445438

446439

447440
def create_hw_logical_disk_utilization(
448-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
441+
meter: Meter, callbacks: Sequence[CallbackT] | None
449442
) -> ObservableGauge:
450443
"""Logical disk space utilization as a fraction"""
451444
return meter.create_observable_gauge(
@@ -499,7 +492,7 @@ def create_hw_network_bandwidth_limit(meter: Meter) -> UpDownCounter:
499492

500493

501494
def create_hw_network_bandwidth_utilization(
502-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
495+
meter: Meter, callbacks: Sequence[CallbackT] | None
503496
) -> ObservableGauge:
504497
"""Utilization of the network bandwidth as a fraction"""
505498
return meter.create_observable_gauge(
@@ -572,7 +565,7 @@ def create_hw_network_up(meter: Meter) -> UpDownCounter:
572565

573566

574567
def create_hw_physical_disk_endurance_utilization(
575-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
568+
meter: Meter, callbacks: Sequence[CallbackT] | None
576569
) -> ObservableGauge:
577570
"""Endurance remaining for this SSD disk"""
578571
return meter.create_observable_gauge(
@@ -609,7 +602,7 @@ def create_hw_physical_disk_size(meter: Meter) -> UpDownCounter:
609602

610603

611604
def create_hw_physical_disk_smart(
612-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
605+
meter: Meter, callbacks: Sequence[CallbackT] | None
613606
) -> ObservableGauge:
614607
"""Value of the corresponding [S.M.A.R.T.](https://wikipedia.org/wiki/S.M.A.R.T.) (Self-Monitoring, Analysis, and Reporting Technology) attribute"""
615608
return meter.create_observable_gauge(
@@ -630,7 +623,7 @@ def create_hw_physical_disk_smart(
630623

631624

632625
def create_hw_power(
633-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
626+
meter: Meter, callbacks: Sequence[CallbackT] | None
634627
) -> ObservableGauge:
635628
"""Instantaneous power consumed by the component"""
636629
return meter.create_observable_gauge(
@@ -684,7 +677,7 @@ def create_hw_power_supply_usage(meter: Meter) -> UpDownCounter:
684677

685678

686679
def create_hw_power_supply_utilization(
687-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
680+
meter: Meter, callbacks: Sequence[CallbackT] | None
688681
) -> ObservableGauge:
689682
"""Utilization of the power supply as a fraction of its maximum output"""
690683
return meter.create_observable_gauge(
@@ -739,7 +732,7 @@ def create_hw_tape_drive_operations(meter: Meter) -> Counter:
739732

740733

741734
def create_hw_temperature(
742-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
735+
meter: Meter, callbacks: Sequence[CallbackT] | None
743736
) -> ObservableGauge:
744737
"""Temperature in degrees Celsius"""
745738
return meter.create_observable_gauge(
@@ -759,7 +752,7 @@ def create_hw_temperature(
759752

760753

761754
def create_hw_temperature_limit(
762-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
755+
meter: Meter, callbacks: Sequence[CallbackT] | None
763756
) -> ObservableGauge:
764757
"""Temperature limit in degrees Celsius"""
765758
return meter.create_observable_gauge(
@@ -779,7 +772,7 @@ def create_hw_temperature_limit(
779772

780773

781774
def create_hw_voltage(
782-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
775+
meter: Meter, callbacks: Sequence[CallbackT] | None
783776
) -> ObservableGauge:
784777
"""Voltage measured by the sensor"""
785778
return meter.create_observable_gauge(
@@ -799,7 +792,7 @@ def create_hw_voltage(
799792

800793

801794
def create_hw_voltage_limit(
802-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
795+
meter: Meter, callbacks: Sequence[CallbackT] | None
803796
) -> ObservableGauge:
804797
"""Voltage limit in Volts"""
805798
return meter.create_observable_gauge(
@@ -819,7 +812,7 @@ def create_hw_voltage_limit(
819812

820813

821814
def create_hw_voltage_nominal(
822-
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
815+
meter: Meter, callbacks: Sequence[CallbackT] | None
823816
) -> ObservableGauge:
824817
"""Nominal (expected) voltage"""
825818
return meter.create_observable_gauge(

0 commit comments

Comments
 (0)