Coverage for src/bluetooth_sig/types/units.py: 100%

43 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-10-30 00:10 +0000

1"""Unit enumerations for measurements and data types. 

2 

3Defines enums for measurement systems, weight units, height units, 

4temperature units, and other unit types to replace string usage with type-safe alternatives. 

5""" 

6 

7from __future__ import annotations 

8 

9from enum import Enum 

10 

11 

12class MeasurementSystem(Enum): 

13 """Measurement system for body composition and weight data.""" 

14 

15 METRIC = "metric" 

16 IMPERIAL = "imperial" 

17 

18 

19class WeightUnit(Enum): 

20 """Units for weight/mass measurements.""" 

21 

22 KG = "kg" 

23 LB = "lb" 

24 

25 

26class HeightUnit(Enum): 

27 """Units for height measurements.""" 

28 

29 METERS = "meters" 

30 INCHES = "inches" 

31 

32 

33class TemperatureUnit(Enum): 

34 """Units for temperature measurements.""" 

35 

36 CELSIUS = "°C" 

37 FAHRENHEIT = "°F" 

38 

39 

40class GlucoseConcentrationUnit(Enum): 

41 """Units for glucose concentration measurements.""" 

42 

43 MG_DL = "mg/dL" 

44 MMOL_L = "mmol/L" 

45 

46 

47class PressureUnit(Enum): 

48 """Units for pressure measurements.""" 

49 

50 KPA = "kPa" 

51 MMHG = "mmHg" 

52 

53 

54class ElectricalUnit(Enum): 

55 """Units for electrical measurements.""" 

56 

57 VOLTS = "V" 

58 AMPS = "A" 

59 HERTZ = "Hz" 

60 DBM = "dBm" 

61 

62 

63class ConcentrationUnit(Enum): 

64 """Units for concentration measurements.""" 

65 

66 MICROGRAMS_PER_CUBIC_METER = "µg/m³" 

67 PARTS_PER_MILLION = "ppm" 

68 PARTS_PER_BILLION = "ppb" 

69 KILOGRAMS_PER_CUBIC_METER = "kg/m³" 

70 GRAINS_PER_CUBIC_METER = "grains/m³" 

71 

72 

73class PercentageUnit(Enum): 

74 """Units for percentage measurements.""" 

75 

76 PERCENT = "%" 

77 

78 

79class AngleUnit(Enum): 

80 """Units for angle measurements.""" 

81 

82 DEGREES = "°" 

83 

84 

85class SoundUnit(Enum): 

86 """Units for sound measurements.""" 

87 

88 DECIBELS_SPL = "dB SPL" 

89 

90 

91class LengthUnit(Enum): 

92 """Units for length measurements.""" 

93 

94 MILLIMETERS = "mm" 

95 METERS = "m" 

96 INCHES = "'" 

97 

98 

99class PhysicalUnit(Enum): 

100 """Units for physical measurements.""" 

101 

102 TESLA = "T"