Skip to content

Commit 2862963

Browse files
authored
Merge pull request #25 from tcfranks/main
Add Missing Type Annotations
2 parents f59f31b + 3c2ff50 commit 2862963

File tree

2 files changed

+43
-30
lines changed

2 files changed

+43
-30
lines changed

adafruit_dps310/advanced.py

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,21 @@
4040
from adafruit_register.i2c_bits import RWBits
4141
from adafruit_dps310.basic import DPS310
4242

43+
try:
44+
from typing import Iterable, Optional, Tuple, Union
45+
except ImportError:
46+
pass
47+
4348
# pylint: disable=no-member,unnecessary-pass
4449

4550

4651
class CV:
4752
"""struct helper"""
4853

4954
@classmethod
50-
def add_values(cls, value_tuples):
55+
def add_values(
56+
cls, value_tuples: Iterable[Tuple[str, int, Union[str, int], Optional[float]]]
57+
):
5158
"""Add CV values to the class"""
5259
cls.string = {}
5360
cls.lsb = {}
@@ -59,7 +66,7 @@ def add_values(cls, value_tuples):
5966
cls.lsb[value] = lsb
6067

6168
@classmethod
62-
def is_valid(cls, value):
69+
def is_valid(cls, value: int) -> bool:
6370
"""Validate that a given value is a member"""
6471
return value in cls.string
6572

@@ -196,7 +203,7 @@ class DPS310_Advanced(DPS310):
196203
_pressure_ratebits = RWBits(3, _DPS310_PRSCFG, 4)
197204
_temp_ratebits = RWBits(3, _DPS310_TMPCFG, 4)
198205

199-
def initialize(self):
206+
def initialize(self) -> None:
200207
"""Initialize the sensor to continuous measurement"""
201208

202209
self.reset()
@@ -212,11 +219,11 @@ def initialize(self):
212219
self.wait_pressure_ready()
213220

214221
@property
215-
def temperature_ready(self):
222+
def temperature_ready(self) -> bool:
216223
"""Returns true if there is a temperature reading ready"""
217224
return self._temp_ready
218225

219-
def wait_temperature_ready(self):
226+
def wait_temperature_ready(self) -> None:
220227
"""Wait until a temperature measurement is available.
221228
222229
To avoid waiting indefinitely this function raises an
@@ -233,11 +240,11 @@ def wait_temperature_ready(self):
233240
sleep(0.001)
234241

235242
@property
236-
def pressure_ready(self):
243+
def pressure_ready(self) -> bool:
237244
"""Returns true if pressure readings are ready"""
238245
return self._pressure_ready
239246

240-
def wait_pressure_ready(self):
247+
def wait_pressure_ready(self) -> None:
241248
"""Wait until a pressure measurement is available
242249
243250
To avoid waiting indefinitely this function raises an
@@ -254,35 +261,35 @@ def wait_pressure_ready(self):
254261
sleep(0.001)
255262

256263
@property
257-
def mode(self):
264+
def mode(self) -> int:
258265
"""The measurement mode. Must be a `Mode`. See the `Mode` documentation for details"""
259266
return self._mode_bits
260267

261268
@mode.setter
262-
def mode(self, value):
269+
def mode(self, value: int) -> None:
263270
if not Mode.is_valid(value):
264271
raise AttributeError("mode must be an `Mode`")
265272

266273
self._mode_bits = value
267274

268275
@property
269-
def pressure_rate(self):
276+
def pressure_rate(self) -> int:
270277
"""Configure the pressure measurement rate. Must be a `Rate`"""
271278
return self._pressure_ratebits
272279

273280
@pressure_rate.setter
274-
def pressure_rate(self, value):
281+
def pressure_rate(self, value: int) -> None:
275282
if not Rate.is_valid(value):
276283
raise AttributeError("pressure_rate must be a Rate")
277284
self._pressure_ratebits = value
278285

279286
@property
280-
def pressure_oversample_count(self):
287+
def pressure_oversample_count(self) -> int:
281288
"""The number of samples taken per pressure measurement. Must be a ``SampleCount``"""
282289
return self._pressure_osbits
283290

284291
@pressure_oversample_count.setter
285-
def pressure_oversample_count(self, value):
292+
def pressure_oversample_count(self, value: int) -> None:
286293
if not SampleCount.is_valid(value):
287294
raise AttributeError("pressure_oversample_count must be a SampleCount")
288295

@@ -291,23 +298,23 @@ def pressure_oversample_count(self, value):
291298
self._pressure_scale = self._oversample_scalefactor[value]
292299

293300
@property
294-
def temperature_rate(self):
301+
def temperature_rate(self) -> int:
295302
"""Configure the temperature measurement rate. Must be a `Rate`"""
296303
return self._temp_ratebits
297304

298305
@temperature_rate.setter
299-
def temperature_rate(self, value):
306+
def temperature_rate(self, value: int) -> None:
300307
if not Rate.is_valid(value):
301308
raise AttributeError("temperature_rate must be a Rate")
302309
self._temp_ratebits = value
303310

304311
@property
305-
def temperature_oversample_count(self):
312+
def temperature_oversample_count(self) -> int:
306313
"""The number of samples taken per temperature measurement. Must be a ``SampleCount``"""
307314
return self._temp_osbits
308315

309316
@temperature_oversample_count.setter
310-
def temperature_oversample_count(self, value):
317+
def temperature_oversample_count(self, value: int) -> None:
311318
if not SampleCount.is_valid(value):
312319
raise AttributeError("temperature_oversample_count must be a SampleCount")
313320

adafruit_dps310/basic.py

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@
4343
from adafruit_register.i2c_bit import RWBit, ROBit
4444
from adafruit_register.i2c_bits import RWBits, ROBits
4545

46+
try:
47+
import typing # pylint: disable=unused-import
48+
from busio import I2C
49+
except ImportError:
50+
pass
51+
4652
_DPS310_DEFAULT_ADDRESS = const(0x77) # DPS310 default i2c address
4753
_DPS310_DEVICE_ID = const(0x10) # DPS310 device identifier
4854

@@ -118,7 +124,7 @@ class DPS310:
118124
_reg0f = RWBits(8, 0x0F, 0)
119125
_reg62 = RWBits(8, 0x62, 0)
120126

121-
def __init__(self, i2c_bus, address=_DPS310_DEFAULT_ADDRESS):
127+
def __init__(self, i2c_bus: I2C, address: int = _DPS310_DEFAULT_ADDRESS) -> None:
122128
self.i2c_device = i2c_device.I2CDevice(i2c_bus, address)
123129

124130
if self._device_id != _DPS310_DEVICE_ID:
@@ -150,7 +156,7 @@ def __init__(self, i2c_bus, address=_DPS310_DEFAULT_ADDRESS):
150156

151157
self.initialize()
152158

153-
def initialize(self):
159+
def initialize(self) -> None:
154160
"""Initialize the sensor to continuous measurement"""
155161

156162
self.reset()
@@ -171,7 +177,7 @@ def initialize(self):
171177

172178
# (https://github.com/Infineon/DPS310-Pressure-Sensor#temperature-measurement-issue)
173179
# similar to DpsClass::correctTemp(void) from infineon's c++ library
174-
def _correct_temp(self):
180+
def _correct_temp(self) -> None:
175181
"""Correct temperature readings on ICs with a fuse bit problem"""
176182
self._reg0e = 0xA5
177183
self._reg0f = 0x96
@@ -184,7 +190,7 @@ def _correct_temp(self):
184190
# and used for compensation when calculating pressure
185191
_unused = self._raw_temperature
186192

187-
def reset(self):
193+
def reset(self) -> None:
188194
"""Reset the sensor"""
189195
self._reset_register = 0x89
190196
# wait for hardware reset to finish
@@ -197,7 +203,7 @@ def reset(self):
197203
self._temp_measurement_src_bit = self._calib_coeff_temp_src_bit
198204

199205
@property
200-
def pressure(self):
206+
def pressure(self) -> float:
201207
"""Returns the current pressure reading in hectoPascals (hPa)"""
202208

203209
temp_reading = self._raw_temperature
@@ -221,7 +227,7 @@ def pressure(self):
221227
return final_pressure
222228

223229
@property
224-
def altitude(self):
230+
def altitude(self) -> float:
225231
"""The altitude in meters based on the sea level pressure
226232
(:attr:`sea_level_pressure`) - which you must enter
227233
ahead of time
@@ -231,43 +237,43 @@ def altitude(self):
231237
)
232238

233239
@property
234-
def temperature(self):
240+
def temperature(self) -> float:
235241
"""The current temperature reading in degrees Celsius"""
236242
_scaled_rawtemp = self._raw_temperature / self._temp_scale
237243
_temperature = _scaled_rawtemp * self._c1 + self._c0 / 2.0
238244
return _temperature
239245

240246
@property
241-
def sea_level_pressure(self):
247+
def sea_level_pressure(self) -> float:
242248
"""The local sea level pressure in hectoPascals (aka millibars). This is used
243249
for calculation of :attr:`altitude`. Values are typically in the range
244250
980 - 1030."""
245251
return self._sea_level_pressure
246252

247253
@sea_level_pressure.setter
248-
def sea_level_pressure(self, value):
254+
def sea_level_pressure(self, value: float) -> None:
249255
self._sea_level_pressure = value
250256

251-
def wait_temperature_ready(self):
257+
def wait_temperature_ready(self) -> None:
252258
"""Wait until a temperature measurement is available."""
253259

254260
while self._temp_ready is False:
255261
sleep(0.001)
256262

257-
def wait_pressure_ready(self):
263+
def wait_pressure_ready(self) -> None:
258264
"""Wait until a pressure measurement is available"""
259265

260266
while self._pressure_ready is False:
261267
sleep(0.001)
262268

263269
@staticmethod
264-
def _twos_complement(val, bits):
270+
def _twos_complement(val: int, bits: int) -> int:
265271
if val & (1 << (bits - 1)):
266272
val -= 1 << bits
267273

268274
return val
269275

270-
def _read_calibration(self):
276+
def _read_calibration(self) -> None:
271277

272278
while not self._coefficients_ready:
273279
sleep(0.001)

0 commit comments

Comments
 (0)