Skip to content

Commit 0fcce04

Browse files
authored
Merge pull request #17 from tcfranks/main
Add Missing Type Annotations
2 parents 9c9fd32 + 7444700 commit 0fcce04

File tree

1 file changed

+24
-16
lines changed

1 file changed

+24
-16
lines changed

adafruit_si1145.py

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@
3131
from adafruit_bus_device import i2c_device
3232
from adafruit_register.i2c_struct import Struct
3333

34+
try:
35+
from typing import Tuple, Union
36+
from busio import I2C
37+
except ImportError:
38+
pass
39+
3440
__version__ = "0.0.0+auto.0"
3541
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_SI1145.git"
3642

@@ -71,7 +77,7 @@ class SI1145:
7177
_als_data = Struct(_ALS_VIS_DATA0, "<HH")
7278
_aux_data = Struct(_UV_INDEX_DATA0, "<H")
7379

74-
def __init__(self, i2c, address=_DEFAULT_ADDRESS):
80+
def __init__(self, i2c: I2C, address: int = _DEFAULT_ADDRESS) -> None:
7581
self.i2c_device = i2c_device.I2CDevice(i2c, address)
7682
dev_id, dev_rev, dev_seq = self.device_info
7783
if dev_id != 69 or dev_rev != 0 or dev_seq != 8:
@@ -84,17 +90,17 @@ def __init__(self, i2c, address=_DEFAULT_ADDRESS):
8490
self.uv_index_enabled = self._uv_index_enabled
8591

8692
@property
87-
def device_info(self):
93+
def device_info(self) -> Tuple[int, int, int]:
8894
"""A three tuple of part, revision, and sequencer ID"""
8995
return self._device_info
9096

9197
@property
92-
def als_enabled(self):
98+
def als_enabled(self) -> bool:
9399
"""The Ambient Light System enabled state."""
94100
return self._als_enabled
95101

96102
@als_enabled.setter
97-
def als_enabled(self, enable):
103+
def als_enabled(self, enable: bool) -> None:
98104
chlist = self._param_query(_RAM_CHLIST)
99105
if enable:
100106
chlist |= 0b00110000
@@ -104,18 +110,18 @@ def als_enabled(self, enable):
104110
self._als_enabled = enable
105111

106112
@property
107-
def als(self):
113+
def als(self) -> Tuple[int, int]:
108114
"""A two tuple of the Ambient Light System (ALS) visible and infrared raw sensor values."""
109115
self._send_command(_CMD_ALS_FORCE)
110116
return self._als_data
111117

112118
@property
113-
def uv_index_enabled(self):
119+
def uv_index_enabled(self) -> bool:
114120
"""The UV Index system enabled state"""
115121
return self._uv_index_enabled
116122

117123
@uv_index_enabled.setter
118-
def uv_index_enabled(self, enable):
124+
def uv_index_enabled(self, enable: bool) -> None:
119125
chlist = self._param_query(_RAM_CHLIST)
120126
if enable:
121127
chlist |= 0b10000000
@@ -132,47 +138,49 @@ def uv_index_enabled(self, enable):
132138
self._uv_index_enabled = enable
133139

134140
@property
135-
def uv_index(self):
141+
def uv_index(self) -> float:
136142
"""The UV Index value"""
137143
self._send_command(_CMD_ALS_FORCE)
138144
return self._aux_data[0] / 100
139145

140-
def reset(self):
146+
def reset(self) -> None:
141147
"""Perform a software reset of the firmware."""
142148
self._send_command(_CMD_RESET)
143149
time.sleep(0.05) # doubling 25ms datasheet spec
144150

145-
def clear_error(self):
151+
def clear_error(self) -> None:
146152
"""Clear any existing error code."""
147153
self._send_command(_CMD_NOP)
148154

149-
def _param_query(self, param):
155+
def _param_query(self, param: int) -> int:
150156
self._send_command(_CMD_PARAM_QUERY | (param & 0x1F))
151157
return self._read_register(_PARAM_RD)
152158

153-
def _param_set(self, param, value):
159+
def _param_set(self, param: int, value: int) -> None:
154160
self._write_register(_PARAM_WR, value)
155161
self._send_command(_CMD_PARAM_SET | (param & 0x1F))
156162

157-
def _send_command(self, command):
163+
def _send_command(self, command: int) -> int:
158164
counter = self._read_register(_RESPONSE) & 0x0F
159165
self._write_register(_COMMAND, command)
160166
if command in (_CMD_NOP, _CMD_RESET):
161167
return 0
162168
response = self._read_register(_RESPONSE)
163169
while counter == response & 0x0F:
164170
if response & 0xF0:
165-
raise RuntimeError("SI1145 Error: 0x{:02x}".format(response))
171+
raise RuntimeError(f"SI1145 Error: {response:#x}")
166172
response = self._read_register(_RESPONSE)
167173
return response
168174

169-
def _read_register(self, register, length=1):
175+
def _read_register(self, register: int, length: int = 1) -> Union[int, bytearray]:
170176
buffer = bytearray(length)
171177
with self.i2c_device as i2c:
172178
i2c.write_then_readinto(bytes([register]), buffer)
173179
return buffer[0] if length == 1 else buffer
174180

175-
def _write_register(self, register, buffer):
181+
def _write_register(
182+
self, register: int, buffer: Union[int, bytes, bytearray]
183+
) -> None:
176184
if isinstance(buffer, int):
177185
buffer = bytes([buffer])
178186
with self.i2c_device as i2c:

0 commit comments

Comments
 (0)