Skip to content

Commit 977d435

Browse files
committed
Add type annotations
1 parent 1ebe082 commit 977d435

File tree

1 file changed

+38
-31
lines changed

1 file changed

+38
-31
lines changed

adafruit_mlx90393.py

Lines changed: 38 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,13 @@
3434
from adafruit_bus_device.i2c_device import I2CDevice
3535
from micropython import const
3636

37+
try:
38+
from typing import Tuple
39+
from circuitpython_typing import ReadableBuffer
40+
from busio import I2C
41+
except ImportError:
42+
pass
43+
3744
__version__ = "0.0.0-auto.0"
3845
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_MLX90393.git"
3946

@@ -192,14 +199,14 @@ class MLX90393: # pylint: disable=too-many-instance-attributes
192199

193200
def __init__(
194201
self,
195-
i2c_bus,
196-
address=0x0C,
197-
gain=GAIN_1X,
198-
resolution=RESOLUTION_16,
199-
filt=FILTER_7,
200-
oversampling=OSR_3,
201-
debug=False,
202-
): # pylint: disable=too-many-arguments
202+
i2c_bus: I2C,
203+
address: int = 0x0C,
204+
gain: int = GAIN_1X,
205+
resolution: int = RESOLUTION_16,
206+
filt: int = FILTER_7,
207+
oversampling: int = OSR_3,
208+
debug: bool = False,
209+
) -> None: # pylint: disable=too-many-arguments
203210
self.i2c_device = I2CDevice(i2c_bus, address)
204211
self._debug = debug
205212
self._status_last = 0
@@ -225,12 +232,12 @@ def __init__(
225232
# Set gain to the supplied level
226233
self.gain = self._gain_current
227234

228-
def _transceive(self, payload, rxlen=0):
235+
def _transceive(self, payload: ReadableBuffer, rxlen: int = 0) -> bytearray:
229236
"""
230237
Writes the specified 'payload' to the sensor
231238
Returns the results of the write attempt.
232239
233-
:param bytes payload: The byte array to write to the sensor
240+
:param ReadableBuffer payload: The byte array to write to the sensor
234241
:param int rxlen: numbers of bytes to read back. Defaults to :const:`0`
235242
236243
"""
@@ -266,21 +273,21 @@ def _transceive(self, payload, rxlen=0):
266273
return data
267274

268275
@property
269-
def last_status(self):
276+
def last_status(self) -> int:
270277
"""
271278
The last status byte received from the sensor.
272279
"""
273280
return self._status_last
274281

275282
@property
276-
def gain(self):
283+
def gain(self) -> int:
277284
"""
278285
The gain setting for the device.
279286
"""
280287
return self._gain_current
281288

282289
@gain.setter
283-
def gain(self, value):
290+
def gain(self, value: int) -> None:
284291
if value > GAIN_1X or value < GAIN_5X:
285292
raise ValueError("Invalid GAIN setting")
286293
if self._debug:
@@ -298,36 +305,36 @@ def gain(self, value):
298305
)
299306

300307
@property
301-
def resolution_x(self):
308+
def resolution_x(self) -> int:
302309
"""The X axis resolution."""
303310
return self._res_x
304311

305312
@resolution_x.setter
306-
def resolution_x(self, resolution):
313+
def resolution_x(self, resolution: int) -> None:
307314
self._set_resolution(0, resolution)
308315
self._res_x = resolution
309316

310317
@property
311-
def resolution_y(self):
318+
def resolution_y(self) -> int:
312319
"""The Y axis resolution."""
313320
return self._res_y
314321

315322
@resolution_y.setter
316-
def resolution_y(self, resolution):
323+
def resolution_y(self, resolution: int) -> None:
317324
self._set_resolution(1, resolution)
318325
self._res_y = resolution
319326

320327
@property
321-
def resolution_z(self):
328+
def resolution_z(self) -> int:
322329
"""The Z axis resolution."""
323330
return self._res_z
324331

325332
@resolution_z.setter
326-
def resolution_z(self, resolution):
333+
def resolution_z(self, resolution: int) -> None:
327334
self._set_resolution(2, resolution)
328335
self._res_z = resolution
329336

330-
def _set_resolution(self, axis, resolution):
337+
def _set_resolution(self, axis: int, resolution: int) -> None:
331338
if resolution not in (
332339
RESOLUTION_16,
333340
RESOLUTION_17,
@@ -343,12 +350,12 @@ def _set_resolution(self, axis, resolution):
343350
self.write_reg(_CMD_REG_CONF3, reg)
344351

345352
@property
346-
def filter(self):
353+
def filter(self) -> int:
347354
"""The filter level."""
348355
return self._filter
349356

350357
@filter.setter
351-
def filter(self, level):
358+
def filter(self, level: int) -> None:
352359
if level not in range(8):
353360
raise ValueError("Incorrect filter level.")
354361
reg = self.read_reg(_CMD_REG_CONF3)
@@ -358,12 +365,12 @@ def filter(self, level):
358365
self._filter = level
359366

360367
@property
361-
def oversampling(self):
368+
def oversampling(self) -> int:
362369
"""The oversampling level."""
363370
return self._osr
364371

365372
@oversampling.setter
366-
def oversampling(self, level):
373+
def oversampling(self, level: int) -> None:
367374
if level not in range(4):
368375
raise ValueError("Incorrect oversampling level.")
369376
reg = self.read_reg(_CMD_REG_CONF3)
@@ -372,7 +379,7 @@ def oversampling(self, level):
372379
self.write_reg(_CMD_REG_CONF3, reg)
373380
self._osr = level
374381

375-
def display_status(self):
382+
def display_status(self) -> None:
376383
"""
377384
Prints out the content of the last status byte in a human-readable
378385
format.
@@ -389,7 +396,7 @@ def display_status(self):
389396
print("Reset status :", (self._status_last & (1 << 2)) > 0)
390397
print("Response bytes available :", avail)
391398

392-
def read_reg(self, reg):
399+
def read_reg(self, reg: int) -> int:
393400
"""
394401
Gets the current value of the specified register.
395402
"""
@@ -411,7 +418,7 @@ def read_reg(self, reg):
411418
print("\t Status :", hex(data[0]))
412419
return val
413420

414-
def write_reg(self, reg, value):
421+
def write_reg(self, reg: int, value: int) -> None:
415422
"""
416423
Writes the 16-bit value to the supplied register.
417424
"""
@@ -426,7 +433,7 @@ def write_reg(self, reg, value):
426433
)
427434
)
428435

429-
def reset(self):
436+
def reset(self) -> None:
430437
"""
431438
Performs a software reset of the sensor.
432439
"""
@@ -442,7 +449,7 @@ def reset(self):
442449
return self._status_last
443450

444451
@property
445-
def read_data(self):
452+
def read_data(self) -> Tuple[int, int, int]:
446453
"""
447454
Reads a single X/Y/Z sample from the magnetometer.
448455
"""
@@ -469,7 +476,7 @@ def read_data(self):
469476
return m_x, m_y, m_z
470477

471478
# pylint: disable=no-self-use
472-
def _unpack_axis_data(self, resolution, data):
479+
def _unpack_axis_data(self, resolution: int, data: ReadableBuffer) -> int:
473480
# see datasheet
474481
if resolution == RESOLUTION_19:
475482
(value,) = struct.unpack(">H", data)
@@ -482,7 +489,7 @@ def _unpack_axis_data(self, resolution, data):
482489
return value
483490

484491
@property
485-
def magnetic(self):
492+
def magnetic(self) -> Tuple[float, float, float]:
486493
"""
487494
The processed magnetometer sensor values.
488495
A 3-tuple of X, Y, Z axis values in microteslas that are signed floats.

0 commit comments

Comments
 (0)