Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
([#4907](https://github.com/open-telemetry/opentelemetry-python/issues/4907))
- Drop Python 3.9 support
([#5076](https://github.com/open-telemetry/opentelemetry-python/pull/5076))
- `opentelemetry-semantic-conventions`: use `X | Y` union annotation
([#5096](https://github.com/open-telemetry/opentelemetry-python/pull/5096))


## Version 1.41.0/0.62b0 (2026-04-09)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,8 @@
# limitations under the License.


from typing import (
Callable,
Final,
Generator,
Iterable,
Optional,
Sequence,
Union,
)
from collections.abc import Callable, Generator, Iterable, Sequence
from typing import Final

from opentelemetry.metrics import (
CallbackOptions,
Expand All @@ -33,10 +26,10 @@
)

# pylint: disable=invalid-name
CallbackT = Union[
Callable[[CallbackOptions], Iterable[Observation]],
Generator[Iterable[Observation], CallbackOptions, None],
]
CallbackT = (
Callable[[CallbackOptions], Iterable[Observation]]
| Generator[Iterable[Observation], CallbackOptions, None]
)

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


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


def create_container_uptime(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""The time the container has been running"""
return meter.create_observable_gauge(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,8 @@
# limitations under the License.


from typing import (
Callable,
Final,
Generator,
Iterable,
Optional,
Sequence,
Union,
)
from collections.abc import Callable, Generator, Iterable, Sequence
from typing import Final

from opentelemetry.metrics import (
CallbackOptions,
Expand All @@ -32,10 +25,10 @@
)

# pylint: disable=invalid-name
CallbackT = Union[
Callable[[CallbackOptions], Iterable[Observation]],
Generator[Iterable[Observation], CallbackOptions, None],
]
CallbackT = (
Callable[[CallbackOptions], Iterable[Observation]]
| Generator[Iterable[Observation], CallbackOptions, None]
)

CPU_FREQUENCY: Final = "cpu.frequency"
"""
Expand All @@ -44,7 +37,7 @@


def create_cpu_frequency(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""Deprecated. Use `system.cpu.frequency` instead"""
return meter.create_observable_gauge(
Expand Down Expand Up @@ -77,7 +70,7 @@ def create_cpu_time(meter: Meter) -> Counter:


def create_cpu_utilization(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""Deprecated. Use `system.cpu.utilization` instead"""
return meter.create_observable_gauge(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,8 @@
# limitations under the License.


from typing import (
Callable,
Final,
Generator,
Iterable,
Optional,
Sequence,
Union,
)
from collections.abc import Callable, Generator, Iterable, Sequence
from typing import Final

from opentelemetry.metrics import (
CallbackOptions,
Expand All @@ -33,10 +26,10 @@
)

# pylint: disable=invalid-name
CallbackT = Union[
Callable[[CallbackOptions], Iterable[Observation]],
Generator[Iterable[Observation], CallbackOptions, None],
]
CallbackT = (
Callable[[CallbackOptions], Iterable[Observation]]
| Generator[Iterable[Observation], CallbackOptions, None]
)

HW_BATTERY_CHARGE: Final = "hw.battery.charge"
"""
Expand All @@ -47,7 +40,7 @@


def create_hw_battery_charge(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""Remaining fraction of battery charge"""
return meter.create_observable_gauge(
Expand All @@ -67,7 +60,7 @@ def create_hw_battery_charge(


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


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


def create_hw_cpu_speed(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""CPU current frequency"""
return meter.create_observable_gauge(
Expand All @@ -127,7 +120,7 @@ def create_hw_cpu_speed(


def create_hw_cpu_speed_limit(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""CPU maximum frequency"""
return meter.create_observable_gauge(
Expand Down Expand Up @@ -181,7 +174,7 @@ def create_hw_errors(meter: Meter) -> Counter:


def create_hw_fan_speed(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""Fan speed in revolutions per minute"""
return meter.create_observable_gauge(
Expand All @@ -201,7 +194,7 @@ def create_hw_fan_speed(


def create_hw_fan_speed_limit(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""Speed limit in rpm"""
return meter.create_observable_gauge(
Expand All @@ -221,7 +214,7 @@ def create_hw_fan_speed_limit(


def create_hw_fan_speed_ratio(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""Fan speed expressed as a fraction of its maximum speed"""
return meter.create_observable_gauge(
Expand Down Expand Up @@ -292,7 +285,7 @@ def create_hw_gpu_memory_usage(meter: Meter) -> UpDownCounter:


def create_hw_gpu_memory_utilization(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""Fraction of GPU memory used"""
return meter.create_observable_gauge(
Expand All @@ -312,7 +305,7 @@ def create_hw_gpu_memory_utilization(


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


def create_hw_host_ambient_temperature(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""Ambient (external) temperature of the physical host"""
return meter.create_observable_gauge(
Expand Down Expand Up @@ -370,7 +363,7 @@ def create_hw_host_energy(meter: Meter) -> Counter:


def create_hw_host_heating_margin(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""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"""
return meter.create_observable_gauge(
Expand All @@ -391,7 +384,7 @@ def create_hw_host_heating_margin(


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


def create_hw_logical_disk_utilization(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""Logical disk space utilization as a fraction"""
return meter.create_observable_gauge(
Expand Down Expand Up @@ -499,7 +492,7 @@ def create_hw_network_bandwidth_limit(meter: Meter) -> UpDownCounter:


def create_hw_network_bandwidth_utilization(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""Utilization of the network bandwidth as a fraction"""
return meter.create_observable_gauge(
Expand Down Expand Up @@ -572,7 +565,7 @@ def create_hw_network_up(meter: Meter) -> UpDownCounter:


def create_hw_physical_disk_endurance_utilization(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""Endurance remaining for this SSD disk"""
return meter.create_observable_gauge(
Expand Down Expand Up @@ -609,7 +602,7 @@ def create_hw_physical_disk_size(meter: Meter) -> UpDownCounter:


def create_hw_physical_disk_smart(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""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"""
return meter.create_observable_gauge(
Expand All @@ -630,7 +623,7 @@ def create_hw_physical_disk_smart(


def create_hw_power(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""Instantaneous power consumed by the component"""
return meter.create_observable_gauge(
Expand Down Expand Up @@ -684,7 +677,7 @@ def create_hw_power_supply_usage(meter: Meter) -> UpDownCounter:


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


def create_hw_temperature(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""Temperature in degrees Celsius"""
return meter.create_observable_gauge(
Expand All @@ -759,7 +752,7 @@ def create_hw_temperature(


def create_hw_temperature_limit(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""Temperature limit in degrees Celsius"""
return meter.create_observable_gauge(
Expand All @@ -779,7 +772,7 @@ def create_hw_temperature_limit(


def create_hw_voltage(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""Voltage measured by the sensor"""
return meter.create_observable_gauge(
Expand All @@ -799,7 +792,7 @@ def create_hw_voltage(


def create_hw_voltage_limit(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""Voltage limit in Volts"""
return meter.create_observable_gauge(
Expand All @@ -819,7 +812,7 @@ def create_hw_voltage_limit(


def create_hw_voltage_nominal(
meter: Meter, callbacks: Optional[Sequence[CallbackT]]
meter: Meter, callbacks: Sequence[CallbackT] | None
) -> ObservableGauge:
"""Nominal (expected) voltage"""
return meter.create_observable_gauge(
Expand Down
Loading
Loading