Skip to content

Commit 518e59e

Browse files
authored
Merge pull request #22 from tcfranks/main
resolves #18 Missing Type Annotations
2 parents 28e4b0b + 0bae88e commit 518e59e

File tree

1 file changed

+33
-28
lines changed

1 file changed

+33
-28
lines changed

adafruit_bmp3xx.py

+33-28
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,13 @@
3232

3333
from micropython import const
3434

35+
try:
36+
from typing import Tuple
37+
from digitalio import DigitalInOut
38+
from busio import I2C, SPI
39+
except ImportError:
40+
pass
41+
3542
__version__ = "0.0.0+auto.0"
3643
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_BMP3XX.git"
3744

@@ -57,80 +64,78 @@
5764
class BMP3XX:
5865
"""Base class for BMP3XX sensor."""
5966

60-
def __init__(self):
67+
def __init__(self) -> None:
6168
chip_id = self._read_byte(_REGISTER_CHIPID)
6269
if chip_id not in (_BMP388_CHIP_ID, _BMP390_CHIP_ID):
63-
raise RuntimeError("Failed to find BMP3XX! Chip ID 0x%x" % chip_id)
70+
raise RuntimeError(f"Failed to find BMP3XX! Chip ID {hex(chip_id)}")
6471
self._read_coefficients()
6572
self.reset()
6673
self.sea_level_pressure = 1013.25
6774
self._wait_time = 0.002 # change this value to have faster reads if needed
6875
"""Sea level pressure in hPa."""
6976

7077
@property
71-
def pressure(self):
78+
def pressure(self) -> float:
7279
"""The pressure in hPa."""
7380
return self._read()[0] / 100
7481

7582
@property
76-
def temperature(self):
83+
def temperature(self) -> float:
7784
"""The temperature in degrees Celsius"""
7885
return self._read()[1]
7986

8087
@property
81-
def altitude(self):
88+
def altitude(self) -> float:
8289
"""The altitude in meters based on the currently set sea level pressure."""
8390
# see https://www.weather.gov/media/epz/wxcalc/pressureAltitude.pdf
8491
return 44307.7 * (1 - (self.pressure / self.sea_level_pressure) ** 0.190284)
8592

8693
@property
87-
def pressure_oversampling(self):
94+
def pressure_oversampling(self) -> int:
8895
"""The pressure oversampling setting."""
8996
return _OSR_SETTINGS[self._read_byte(_REGISTER_OSR) & 0x07]
9097

9198
@pressure_oversampling.setter
92-
def pressure_oversampling(self, oversample):
99+
def pressure_oversampling(self, oversample: int) -> None:
93100
if oversample not in _OSR_SETTINGS:
94-
raise ValueError("Oversampling must be one of: {}".format(_OSR_SETTINGS))
101+
raise ValueError(f"Oversampling must be one of: {_OSR_SETTINGS}")
95102
new_setting = self._read_byte(_REGISTER_OSR) & 0xF8 | _OSR_SETTINGS.index(
96103
oversample
97104
)
98105
self._write_register_byte(_REGISTER_OSR, new_setting)
99106

100107
@property
101-
def temperature_oversampling(self):
108+
def temperature_oversampling(self) -> int:
102109
"""The temperature oversampling setting."""
103110
return _OSR_SETTINGS[self._read_byte(_REGISTER_OSR) >> 3 & 0x07]
104111

105112
@temperature_oversampling.setter
106-
def temperature_oversampling(self, oversample):
113+
def temperature_oversampling(self, oversample: int) -> None:
107114
if oversample not in _OSR_SETTINGS:
108-
raise ValueError("Oversampling must be one of: {}".format(_OSR_SETTINGS))
115+
raise ValueError(f"Oversampling must be one of: {_OSR_SETTINGS}")
109116
new_setting = (
110117
self._read_byte(_REGISTER_OSR) & 0xC7 | _OSR_SETTINGS.index(oversample) << 3
111118
)
112119
self._write_register_byte(_REGISTER_OSR, new_setting)
113120

114121
@property
115-
def filter_coefficient(self):
122+
def filter_coefficient(self) -> int:
116123
"""The IIR filter coefficient."""
117124
return _IIR_SETTINGS[self._read_byte(_REGISTER_CONFIG) >> 1 & 0x07]
118125

119126
@filter_coefficient.setter
120-
def filter_coefficient(self, coef):
127+
def filter_coefficient(self, coef: int) -> None:
121128
if coef not in _IIR_SETTINGS:
122-
raise ValueError(
123-
"Filter coefficient must be one of: {}".format(_IIR_SETTINGS)
124-
)
129+
raise ValueError(f"Filter coefficient must be one of: {_IIR_SETTINGS}")
125130
self._write_register_byte(_REGISTER_CONFIG, _IIR_SETTINGS.index(coef) << 1)
126131

127-
def reset(self):
132+
def reset(self) -> None:
128133
"""Perform a power on reset. All user configuration settings are overwritten
129134
with their default state.
130135
"""
131136
self._write_register_byte(_REGISTER_CMD, 0xB6)
132137

133-
def _read(self):
138+
def _read(self) -> Tuple[float, float]:
134139
"""Returns a tuple for temperature and pressure."""
135140
# OK, pylint. This one is all kinds of stuff you shouldn't worry about.
136141
# pylint: disable=invalid-name, too-many-locals
@@ -178,7 +183,7 @@ def _read(self):
178183
# pressure in hPa, temperature in deg C
179184
return pressure, temperature
180185

181-
def _read_coefficients(self):
186+
def _read_coefficients(self) -> None:
182187
"""Read & save the calibration coefficients"""
183188
coeff = self._read_register(_REGISTER_CAL_DATA, 21)
184189
# See datasheet, pg. 27, table 22
@@ -205,15 +210,15 @@ def _read_coefficients(self):
205210
coeff[13] / 2**65.0,
206211
) # P11
207212

208-
def _read_byte(self, register):
213+
def _read_byte(self, register: int) -> int:
209214
"""Read a byte register value and return it"""
210215
return self._read_register(register, 1)[0]
211216

212-
def _read_register(self, register, length):
217+
def _read_register(self, register: int, length: int) -> bytearray:
213218
"""Low level register reading, not implemented in base class"""
214219
raise NotImplementedError()
215220

216-
def _write_register_byte(self, register, value):
221+
def _write_register_byte(self, register: int, value: int) -> None:
217222
"""Low level register writing, not implemented in base class"""
218223
raise NotImplementedError()
219224

@@ -252,21 +257,21 @@ class BMP3XX_I2C(BMP3XX):
252257
253258
"""
254259

255-
def __init__(self, i2c, address=0x77):
260+
def __init__(self, i2c: I2C, address: int = 0x77) -> None:
256261
from adafruit_bus_device import i2c_device
257262

258263
self._i2c = i2c_device.I2CDevice(i2c, address)
259264
super().__init__()
260265

261-
def _read_register(self, register, length):
266+
def _read_register(self, register: int, length: int) -> bytearray:
262267
"""Low level register reading over I2C, returns a list of values"""
263268
result = bytearray(length)
264269
with self._i2c as i2c:
265270
i2c.write(bytes([register & 0xFF]))
266271
i2c.readinto(result)
267272
return result
268273

269-
def _write_register_byte(self, register, value):
274+
def _write_register_byte(self, register: int, value: int) -> None:
270275
"""Low level register writing over I2C, writes one 8-bit value"""
271276
with self._i2c as i2c:
272277
i2c.write(bytes((register & 0xFF, value & 0xFF)))
@@ -308,7 +313,7 @@ class BMP3XX_SPI(BMP3XX):
308313
309314
"""
310315

311-
def __init__(self, spi, cs):
316+
def __init__(self, spi: SPI, cs: DigitalInOut) -> None:
312317
from adafruit_bus_device import spi_device
313318

314319
self._spi = spi_device.SPIDevice(spi, cs)
@@ -317,7 +322,7 @@ def __init__(self, spi, cs):
317322
time.sleep(0.001)
318323
super().__init__()
319324

320-
def _read_register(self, register, length):
325+
def _read_register(self, register: int, length: int) -> bytearray:
321326
"""Low level register reading over SPI, returns a list of values"""
322327
result = bytearray(length)
323328
with self._spi as spi:
@@ -326,7 +331,7 @@ def _read_register(self, register, length):
326331
spi.readinto(result)
327332
return result
328333

329-
def _write_register_byte(self, register, value):
334+
def _write_register_byte(self, register: int, value: int) -> None:
330335
"""Low level register writing over SPI, writes one 8-bit value"""
331336
with self._spi as spi:
332337
# pylint: disable=no-member

0 commit comments

Comments
 (0)