Skip to content

Commit b1e3ac2

Browse files
committed
Add type hints
1 parent c49def8 commit b1e3ac2

File tree

2 files changed

+34
-21
lines changed

2 files changed

+34
-21
lines changed

adafruit_onewire/bus.py

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@
1717
import busio
1818
from micropython import const
1919

20+
try:
21+
from typing import Optional, List, Tuple
22+
from microcontroller import Pin
23+
except ImportError:
24+
pass
25+
2026
_SEARCH_ROM = const(0xF0)
2127
_MATCH_ROM = const(0x55)
2228
_SKIP_ROM = const(0xCC)
@@ -30,56 +36,56 @@ class OneWireError(Exception):
3036
class OneWireAddress:
3137
"""A class to represent a 1-Wire address."""
3238

33-
def __init__(self, rom):
39+
def __init__(self, rom: bytearray) -> None:
3440
self._rom = rom
3541

3642
@property
37-
def rom(self):
43+
def rom(self) -> bytearray:
3844
"""The unique 64 bit ROM code."""
3945
return self._rom
4046

4147
@property
42-
def crc(self):
48+
def crc(self) -> int:
4349
"""The 8 bit CRC."""
4450
return self._rom[7]
4551

4652
@property
47-
def serial_number(self):
53+
def serial_number(self) -> bytearray:
4854
"""The 48 bit serial number."""
4955
return self._rom[1:7]
5056

5157
@property
52-
def family_code(self):
58+
def family_code(self) -> int:
5359
"""The 8 bit family code."""
5460
return self._rom[0]
5561

5662

5763
class OneWireBus:
5864
"""A class to represent a 1-Wire bus."""
5965

60-
def __init__(self, pin):
66+
def __init__(self, pin: Pin) -> None:
6167
# pylint: disable=no-member
6268
self._ow = busio.OneWire(pin)
6369
self._readbit = self._ow.read_bit
6470
self._writebit = self._ow.write_bit
6571
self._maximum_devices = _MAX_DEV
6672

6773
@property
68-
def maximum_devices(self):
74+
def maximum_devices(self) -> int:
6975
"""The maximum number of devices the bus will scan for. Valid range is 1 to 255.
7076
It is an error to have more devices on the bus than this number. Having less is OK.
7177
"""
7278
return self._maximum_devices
7379

7480
@maximum_devices.setter
75-
def maximum_devices(self, count):
81+
def maximum_devices(self, count: int) -> None:
7682
if not isinstance(count, int):
7783
raise ValueError("Maximum must be an integer value 1 - 255.")
7884
if count < 1 or count > 0xFF:
7985
raise ValueError("Maximum must be an integer value 1 - 255.")
8086
self._maximum_devices = count
8187

82-
def reset(self, required=False):
88+
def reset(self, required: bool = False) -> bool:
8389
"""
8490
Perform a reset and check for presence pulse.
8591
@@ -90,7 +96,7 @@ def reset(self, required=False):
9096
raise OneWireError("No presence pulse found. Check devices and wiring.")
9197
return not reset
9298

93-
def readinto(self, buf, *, start=0, end=None):
99+
def readinto(self, buf: bytearray, *, start: int = 0, end: Optional[int] = None) -> None:
94100
"""
95101
Read into ``buf`` from the device. The number of bytes read will be the
96102
length of ``buf``.
@@ -108,7 +114,7 @@ def readinto(self, buf, *, start=0, end=None):
108114
for i in range(start, end):
109115
buf[i] = self._readbyte()
110116

111-
def write(self, buf, *, start=0, end=None):
117+
def write(self, buf: bytearray, *, start: int = 0, end: Optional[int] = None) -> None:
112118
"""
113119
Write the bytes from ``buf`` to the device.
114120
@@ -125,7 +131,7 @@ def write(self, buf, *, start=0, end=None):
125131
for i in range(start, end):
126132
self._writebyte(buf[i])
127133

128-
def scan(self):
134+
def scan(self) -> List[OneWireAddress]:
129135
"""Scan for devices on the bus and return a list of addresses."""
130136
devices = []
131137
diff = 65
@@ -146,18 +152,18 @@ def scan(self):
146152
break
147153
return devices
148154

149-
def _readbyte(self):
155+
def _readbyte(self) -> int:
150156
val = 0
151157
for i in range(8):
152158
val |= self._ow.read_bit() << i
153159
return val
154160

155-
def _writebyte(self, value):
161+
def _writebyte(self, value: int) -> None:
156162
for i in range(8):
157163
bit = (value >> i) & 0x1
158164
self._ow.write_bit(bit)
159165

160-
def _search_rom(self, l_rom, diff):
166+
def _search_rom(self, l_rom: Optional[bytearray], diff: int) -> Tuple[bytearray, int]:
161167
if not self.reset():
162168
return None, 0
163169
self._writebyte(_SEARCH_ROM)
@@ -185,7 +191,7 @@ def _search_rom(self, l_rom, diff):
185191
return rom, next_diff
186192

187193
@staticmethod
188-
def crc8(data):
194+
def crc8(data: bytearray) -> int:
189195
"""
190196
Perform the 1-Wire CRC check on the provided data.
191197

adafruit_onewire/device.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,31 @@
1414
__version__ = "0.0.0-auto.0"
1515
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_OneWire.git"
1616

17+
try:
18+
from typing import Optional, Type
19+
from types import TracebackType
20+
from adafruit_onewire.bus import OneWireBus, OneWireAddress
21+
except ImportError:
22+
pass
23+
1724
_MATCH_ROM = b"\x55"
1825

1926

2027
class OneWireDevice:
2128
"""A class to represent a single device on the 1-Wire bus."""
2229

23-
def __init__(self, bus, address):
30+
def __init__(self, bus: OneWireBus, address: OneWireAddress):
2431
self._bus = bus
2532
self._address = address
2633

27-
def __enter__(self):
34+
def __enter__(self) -> 'OneWireDevice':
2835
self._select_rom()
2936
return self
3037

3138
def __exit__(self, exception_type: Optional[Type[type]], exception_value: Optional[BaseException], traceback: Optional[TracebackType]) -> bool:
3239
return False
3340

34-
def readinto(self, buf, *, start=0, end=None):
41+
def readinto(self, buf: bytearray, *, start: int = 0, end: Optional[int] = None) -> None:
3542
"""
3643
Read into ``buf`` from the device. The number of bytes read will be the
3744
length of ``buf``.
@@ -49,7 +56,7 @@ def readinto(self, buf, *, start=0, end=None):
4956
if self._bus.crc8(buf):
5057
raise RuntimeError("CRC error.")
5158

52-
def write(self, buf, *, start=0, end=None):
59+
def write(self, buf: bytearray, *, start: int = 0, end: Optional[int] = None) -> None:
5360
"""
5461
Write the bytes from ``buf`` to the device.
5562
@@ -63,7 +70,7 @@ def write(self, buf, *, start=0, end=None):
6370
"""
6471
return self._bus.write(buf, start=start, end=end)
6572

66-
def _select_rom(self):
73+
def _select_rom(self) -> None:
6774
self._bus.reset()
6875
self.write(_MATCH_ROM)
6976
self.write(self._address.rom)

0 commit comments

Comments
 (0)