Skip to content

Commit fe7ce5c

Browse files
authored
Merge pull request #16 from tcfranks/main
Add Missing Type Annotations
2 parents 2d99b34 + 2ed2f20 commit fe7ce5c

File tree

2 files changed

+34
-24
lines changed

2 files changed

+34
-24
lines changed

adafruit_lsm303_accel.py

Lines changed: 33 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,13 @@
3838
from adafruit_register.i2c_bits import RWBits
3939
from adafruit_register.i2c_struct_array import StructArray
4040

41+
try:
42+
from typing import Optional, Tuple
43+
from typing_extensions import Literal
44+
from busio import I2C
45+
except ImportError:
46+
pass
47+
4148
__version__ = "0.0.0+auto.0"
4249
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_LSM303_Accel.git"
4350

@@ -191,7 +198,7 @@ class LSM303_Accel: # pylint:disable=too-many-instance-attributes
191198

192199
_BUFFER = bytearray(6)
193200

194-
def __init__(self, i2c):
201+
def __init__(self, i2c: I2C) -> None:
195202
self._accel_device = I2CDevice(i2c, _ADDRESS_ACCEL)
196203
self.i2c_device = self._accel_device
197204
self._data_rate = 2
@@ -207,14 +214,14 @@ def __init__(self, i2c):
207214

208215
def set_tap(
209216
self,
210-
tap,
211-
threshold,
217+
tap: Literal[0, 1, 2],
218+
threshold: int,
212219
*,
213-
time_limit=10,
214-
time_latency=20,
215-
time_window=255,
216-
tap_cfg=None
217-
):
220+
time_limit: int = 10,
221+
time_latency: int = 20,
222+
time_window: int = 255,
223+
tap_cfg: Optional[int] = None,
224+
) -> None:
218225
"""
219226
The tap detection parameters.
220227
@@ -259,7 +266,7 @@ def set_tap(
259266
self._tap_time_window = time_window
260267

261268
@property
262-
def tapped(self):
269+
def tapped(self) -> bool:
263270
"""
264271
True if a tap was detected recently. Whether its a single tap or double tap is
265272
determined by the tap param on :meth:`set_tap`. :attr:`tapped` may be True over
@@ -269,14 +276,14 @@ def tapped(self):
269276
return tap_src & 0b1000000 > 0
270277

271278
@property
272-
def _raw_acceleration(self):
279+
def _raw_acceleration(self) -> Tuple[int, int, int]:
273280
self._read_bytes(
274281
self._accel_device, _REG_ACCEL_OUT_X_L_A | 0x80, 6, self._BUFFER
275282
)
276283
return struct.unpack_from("<hhh", self._BUFFER[0:6])
277284

278285
@property
279-
def acceleration(self):
286+
def acceleration(self) -> Tuple[float, float, float]:
280287
"""The measured accelerometer sensor values.
281288
A 3-tuple of X, Y, Z axis values in m/s^2 squared that are signed floats.
282289
"""
@@ -289,12 +296,12 @@ def acceleration(self):
289296

290297
return (x, y, z)
291298

292-
def _scale_data(self, raw_measurement):
299+
def _scale_data(self, raw_measurement: int) -> float:
293300
lsb, shift = self._lsb_shift()
294301

295302
return (raw_measurement >> shift) * lsb * _SMOLLER_GRAVITY
296303

297-
def _lsb_shift(self): # pylint:disable=too-many-branches
304+
def _lsb_shift(self) -> Tuple[float, int]: # pylint:disable=too-many-branches
298305
# the bit depth of the data depends on the mode, and the lsb value
299306
# depends on the mode and range
300307
lsb = -1 # the default, normal mode @ 2G
@@ -333,64 +340,66 @@ def _lsb_shift(self): # pylint:disable=too-many-branches
333340

334341
if lsb is -1:
335342
raise AttributeError(
336-
"'impossible' range or mode detected: range: %d mode: %d"
337-
% (self._cached_range, self._cached_mode)
343+
"'impossible' range or mode detected: "
344+
f"range: {self._cached_range} mode: {self._cached_mode}"
338345
)
339346
return (lsb, shift)
340347

341348
@property
342-
def data_rate(self):
349+
def data_rate(self) -> int:
343350
"""Select the rate at which the sensor takes measurements. Must be a `Rate`"""
344351
return self._data_rate
345352

346353
@data_rate.setter
347-
def data_rate(self, value):
354+
def data_rate(self, value: int) -> None:
348355
if value < 0 or value > 9:
349356
raise AttributeError("data_rate must be a `Rate`")
350357

351358
self._data_rate = value
352359

353360
@property
354-
def range(self):
361+
def range(self) -> int:
355362
"""Adjusts the range of values that the sensor can measure, from +- 2G to +-16G
356363
Note that larger ranges will be less accurate. Must be a `Range`"""
357364
return self._cached_range
358365

359366
@range.setter
360-
def range(self, value):
367+
def range(self, value: int) -> None:
361368
if value < 0 or value > 3:
362369
raise AttributeError("range must be a `Range`")
363370
self._range = value
364371
self._cached_range = value
365372

366373
@property
367-
def mode(self):
374+
def mode(self) -> int:
368375
"""Sets the power mode of the sensor. The mode must be a `Mode`. Note that the
369376
mode and range will both affect the accuracy of the sensor"""
370377
return self._cached_mode
371378

372379
@mode.setter
373-
def mode(self, value):
380+
def mode(self, value: int) -> None:
374381
if value < 0 or value > 2:
375382
raise AttributeError("mode must be a `Mode`")
376383
self._high_resolution = value & 0b01
377384
self._low_power = (value & 0b10) >> 1
378385
self._cached_mode = value
379386

380-
def _read_u8(self, device, address):
387+
def _read_u8(self, device: I2CDevice, address: int) -> int:
381388
with device as i2c:
382389
self._BUFFER[0] = address & 0xFF
383390
i2c.write_then_readinto(self._BUFFER, self._BUFFER, out_end=1, in_end=1)
384391
return self._BUFFER[0]
385392

386-
def _write_u8(self, device, address, val):
393+
def _write_u8(self, device: I2CDevice, address: int, val: int) -> None:
387394
with device as i2c:
388395
self._BUFFER[0] = address & 0xFF
389396
self._BUFFER[1] = val & 0xFF
390397
i2c.write(self._BUFFER, end=2)
391398

392399
@staticmethod
393-
def _read_bytes(device, address, count, buf):
400+
def _read_bytes(
401+
device: I2CDevice, address: int, count: int, buf: bytearray
402+
) -> None:
394403
with device as i2c:
395404
buf[0] = address & 0xFF
396405
i2c.write_then_readinto(buf, buf, out_end=1, in_end=count)

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@
55
Adafruit-Blinka
66
adafruit-circuitpython-register
77
adafruit-circuitpython-busdevice
8+
typing-extensions~=4.0

0 commit comments

Comments
 (0)