Skip to content

Commit 67be9d7

Browse files
authored
Merge pull request #3 from sokratisvas/add-type-annotations
Add Type Annotations
2 parents 126fd3c + f18fe53 commit 67be9d7

File tree

1 file changed

+24
-18
lines changed

1 file changed

+24
-18
lines changed

adafruit_guvx_i2c.py

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@
3333
from adafruit_register.i2c_struct import ROUnaryStruct, UnaryStruct
3434
from adafruit_register.i2c_bits import RWBits
3535

36+
try:
37+
import typing # pylint: disable=unused-import
38+
from busio import I2C
39+
except ImportError:
40+
pass
41+
3642
__version__ = "0.0.0+auto.0"
3743
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_GUVX_I2C.git"
3844

@@ -91,7 +97,7 @@ class GUVX_I2C:
9197
_uvb = ROUnaryStruct(_GUVXI2C_REG_UVBLSB, "<H")
9298
_uva = ROUnaryStruct(_GUVXI2C_REG_UVALSB, "<H")
9399

94-
def __init__(self, i2c_bus, address=_GUVXI2C_I2CADDR_DEFAULT):
100+
def __init__(self, i2c_bus: I2C, address: int = _GUVXI2C_I2CADDR_DEFAULT) -> None:
95101
# pylint: disable=no-member
96102
self.i2c_device = i2c_device.I2CDevice(i2c_bus, address)
97103
if self._chip_id != _GUVXI2C_CHIP_ID:
@@ -109,7 +115,7 @@ def __init__(self, i2c_bus, address=_GUVXI2C_I2CADDR_DEFAULT):
109115
self._nvm_ctrl = 0x0B # read B_Scale second
110116
self._scale = self._nvm_data
111117

112-
def reset(self):
118+
def reset(self) -> None:
113119
"""Perform a soft reset"""
114120
# It should be noted that applying SOFT_RESET should be done only
115121
# when POWER_MODE=��00��.
@@ -118,20 +124,20 @@ def reset(self):
118124
time.sleep(0.05)
119125

120126
@property
121-
def uv_mode(self):
127+
def uv_mode(self) -> bool:
122128
"""Whether or not UV-reading mode is enabled"""
123129
return self._oper == 2 # see datasheet table 7.2
124130

125131
@uv_mode.setter
126-
def uv_mode(self, enabled):
132+
def uv_mode(self, enabled: bool) -> None:
127133
# see datasheet table 7.2
128134
if enabled:
129135
self._oper = 2
130136
else:
131137
self._oper = 0
132138

133139
@property
134-
def power_mode(self):
140+
def power_mode(self) -> int:
135141
"""One of four power modes available:
136142
137143
GUVXI2C_PMODE_NORMAL, GUVXI2C_PMODE_LOWPOWER, GUVXI2C_PMODE_AUTOSHUT,
@@ -140,7 +146,7 @@ def power_mode(self):
140146
return self._pmode
141147

142148
@power_mode.setter
143-
def power_mode(self, mode):
149+
def power_mode(self, mode: int) -> None:
144150
# see datasheet table 7.3
145151
if not mode in (
146152
GUVXI2C_PMODE_NORMAL,
@@ -152,30 +158,30 @@ def power_mode(self, mode):
152158
self._pmode = mode
153159

154160
@property
155-
def measure_period(self):
161+
def measure_period(self) -> int:
156162
"""One of four measuring periods in milliseconds:
157163
158164
100, 200, 400 or 800ms
159165
"""
160166
return _measure_periods[self._period]
161167

162168
@measure_period.setter
163-
def measure_period(self, period):
169+
def measure_period(self, period: int) -> None:
164170
# see datasheet table 7.4
165171
if not period in _measure_periods:
166172
raise RuntimeError("Invalid period: must be 100, 200, 400 or 800 (ms)")
167173
self._period = _measure_periods.index(period)
168174

169175
@property
170-
def sleep_duration(self):
176+
def sleep_duration(self) -> int:
171177
"""Sleep duration in low power mode, can be:
172178
173179
2, 4, 8, 16, 32, 64, 128, or 256 times
174180
"""
175181
return _sleep_durations[self._sleep_duration]
176182

177183
@sleep_duration.setter
178-
def sleep_duration(self, duration):
184+
def sleep_duration(self, duration: int) -> None:
179185
# see datasheet table 7.7
180186
if not duration in _sleep_durations:
181187
raise RuntimeError(
@@ -188,12 +194,12 @@ class GUVB_C31SM(GUVX_I2C):
188194
"""Driver for the GUVB-C31SM sensor"""
189195

190196
@property
191-
def range(self):
197+
def range(self) -> int:
192198
"""UVB range, can be: 1, 2, 4, 8, 16, 32, 64, or 128 times"""
193199
return _measure_ranges[self._range_uvb]
194200

195201
@range.setter
196-
def range(self, multiple):
202+
def range(self, multiple: int) -> None:
197203
# see datasheet table 7.6
198204
if not multiple in _measure_ranges:
199205
raise RuntimeError(
@@ -202,12 +208,12 @@ def range(self, multiple):
202208
self._range_uvb = _measure_ranges.index(multiple)
203209

204210
@property
205-
def uvb(self):
211+
def uvb(self) -> int:
206212
"""The raw UV B 16-bit data"""
207213
return self._uvb
208214

209215
@property
210-
def uv_index(self):
216+
def uv_index(self) -> float:
211217
"""Calculated using offset and b-scale"""
212218
# GUVB-C31SM UVI = (B value *0.8 )/(B_scale) in app note
213219
return (self.uvb / self.range * 0.8) / self._scale
@@ -220,12 +226,12 @@ class GUVA_C32SM(GUVX_I2C):
220226
"""
221227

222228
@property
223-
def range(self):
229+
def range(self) -> int:
224230
"""UVB range, can be: 1, 2, 4, 8, 16, 32, 64, or 128 times"""
225231
return _measure_ranges[self._range_uva]
226232

227233
@range.setter
228-
def range(self, multiple):
234+
def range(self, multiple: int) -> None:
229235
# see datasheet table 7.6
230236
if not multiple in _measure_ranges:
231237
raise RuntimeError(
@@ -234,12 +240,12 @@ def range(self, multiple):
234240
self._range_uva = _measure_ranges.index(multiple)
235241

236242
@property
237-
def uva(self):
243+
def uva(self) -> int:
238244
"""The raw UV A 16-bit data"""
239245
return self._uva
240246

241247
@property
242-
def uv_index(self):
248+
def uv_index(self) -> float:
243249
"""Calculated using offset and b-scale"""
244250
# GUVA-C32SM UVI = (A value * 2.5 - self._offset )/(A_scale)
245251
# in app note

0 commit comments

Comments
 (0)