Skip to content

Commit 39128ba

Browse files
committed
Further type fixes, plus py.typed marker
1 parent 7841384 commit 39128ba

6 files changed

Lines changed: 44 additions & 45 deletions

File tree

src/powersensor_local/event_buffer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class EventBuffer:
1414
"""
1515
def __init__(self, keep: int):
1616
self._keep = keep
17-
self._evs = []
17+
self._evs: list = []
1818

1919
def find_by_key(self, key: str, value: Any):
2020
"""Return the first event that contains ``key`` with the given ``value``.

src/powersensor_local/events.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,20 @@
1717

1818
class EventLoopRunner(AbstractEventHandler):
1919
"""Main logic wrapper."""
20-
def __init__(self):
21-
self.devices: typing.Union[PowersensorDevices, None] = PowersensorDevices()
20+
def __init__(self) -> None:
21+
self.devices: PowersensorDevices = PowersensorDevices()
2222

23-
async def on_exit(self):
23+
async def on_exit(self) -> None:
2424
if self.devices is not None:
2525
await self.devices.stop()
2626

27-
async def on_message(self, obj):
27+
async def on_message(self, obj) -> None:
2828
"""Callback for printing received events."""
2929
print(obj)
3030
if obj['event'] == 'device_found':
3131
self.devices.subscribe(obj['mac'])
3232

33-
async def main(self):
33+
async def main(self) -> None:
3434
if self.devices is None:
3535
self.devices = PowersensorDevices()
3636

@@ -42,7 +42,7 @@ async def main(self):
4242
# Keep the event loop running until Ctrl+C is pressed
4343
await self.wait()
4444

45-
def app():
45+
def app() -> None:
4646
"""Application entry point."""
4747
EventLoopRunner().run()
4848

src/powersensor_local/plugevents.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
Powersensor device. Intended for advanced debugging use only."""
55

66
import sys
7-
from typing import Union
87
from pathlib import Path
98

109
PROJECT_ROOT = str(Path(__file__).parents[ 1])
@@ -15,21 +14,21 @@
1514
from powersensor_local.plug_api import PlugApi
1615
from powersensor_local.abstract_event_handler import AbstractEventHandler
1716

18-
async def print_event_and_message(event, message):
17+
async def print_event_and_message(event, message) -> None:
1918
"""Callback for printing event data."""
2019
print(event, message)
2120

2221
class PlugEvents(AbstractEventHandler):
2322
"""Main logic wrapper."""
24-
def __init__(self):
25-
self.plug: Union[PlugApi, None] = None
23+
def __init__(self) -> None:
24+
self.plug: PlugApi|None = None
2625

27-
async def on_exit(self):
26+
async def on_exit(self) -> None:
2827
if self.plug is not None:
2928
await self.plug.disconnect()
3029
self.plug = None
3130

32-
async def main(self):
31+
async def main(self) -> None:
3332
if len(sys.argv) < 3:
3433
print(f"Syntax: {sys.argv[0]} <id> <ip> [port]")
3534
sys.exit(1)
@@ -57,7 +56,7 @@ async def main(self):
5756
# Keep the event loop running until Ctrl+C is pressed
5857
await self.wait()
5958

60-
def app():
59+
def app() -> None:
6160
"""Application entry point."""
6261
PlugEvents().run()
6362

src/powersensor_local/py.typed

Whitespace-only changes.

src/powersensor_local/rawplug.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
"""Utility script for accessing the raw plug subscription data from a single
44
network-local Powersensor device. Intended for advanced debugging use only."""
55

6-
from typing import Union
76
import sys
87

98
from pathlib import Path
@@ -16,29 +15,29 @@
1615
from powersensor_local import PlugListenerTcp,PlugListenerUdp
1716
from powersensor_local.abstract_event_handler import AbstractEventHandler
1817

19-
async def print_message_ignore_event(_, message):
18+
async def print_message_ignore_event(_, message) -> None:
2019
"""Callback for printing event data withou the event name."""
2120
print(message)
2221

23-
async def print_event(event):
22+
async def print_event(event) -> None:
2423
"""Callback for printing an event."""
2524
print(event)
2625

2726
class RawPlug(AbstractEventHandler):
2827
"""Main logic wrapper."""
29-
def __init__(self, protocol=None):
30-
self.plug: Union[PlugListenerTcp, PlugListenerUdp, None] = None
31-
if protocol is None:
28+
def __init__(self, protocol: str|None = None) -> None:
29+
self.plug: PlugListenerTcp | PlugListenerUdp | None = None
30+
if protocol is None or protocol == 'udp':
3231
self._protocol = 'udp'
3332
else:
3433
self._protocol = 'tcp'
3534

36-
async def on_exit(self):
35+
async def on_exit(self) -> None:
3736
if self.plug is not None:
3837
await self.plug.disconnect()
3938
self.plug = None
4039

41-
async def main(self):
40+
async def main(self) -> None:
4241
if len(sys.argv) < 2:
4342
print(f"Syntax: {sys.argv[0]} <ip> [port]")
4443
sys.exit(1)
@@ -47,25 +46,26 @@ async def main(self):
4746
self.register_sigint_handler()
4847
if len(sys.argv) >= 4:
4948
self._protocol = sys.argv[3]
50-
plug = None
49+
self.plug = None
5150
if self._protocol == 'udp':
52-
plug = PlugListenerUdp(sys.argv[1], *sys.argv[2:3])
51+
self.plug = PlugListenerUdp(sys.argv[1], *sys.argv[2:3])
5352
elif self._protocol == 'tcp':
54-
plug = PlugListenerTcp(sys.argv[1], *sys.argv[2:3])
53+
self.plug = PlugListenerTcp(sys.argv[1], *sys.argv[2:3])
5554
else:
5655
print('Unsupported protocol:', self._protocol)
57-
plug.subscribe('exception', print_message_ignore_event)
58-
plug.subscribe('message', print_message_ignore_event)
59-
plug.subscribe('connecting', print_event)
60-
plug.subscribe('connecting', print_event)
61-
plug.subscribe('connected', print_event)
62-
plug.subscribe('disconnected', print_event)
63-
plug.connect()
56+
sys.exit(1)
57+
self.plug.subscribe('exception', print_message_ignore_event)
58+
self.plug.subscribe('message', print_message_ignore_event)
59+
self.plug.subscribe('connecting', print_event)
60+
self.plug.subscribe('connecting', print_event)
61+
self.plug.subscribe('connected', print_event)
62+
self.plug.subscribe('disconnected', print_event)
63+
self.plug.connect()
6464

6565
# Keep the event loop running until Ctrl+C is pressed
6666
await self.wait()
6767

68-
def app():
68+
def app() -> None:
6969
"""Application entry point."""
7070
RawPlug().run()
7171

src/powersensor_local/xlatemsg.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88

99
# pylint: disable=R0913,R0917
10-
def _pick_item(out: dict, message: dict, key: str, dstkey: str, req: bool, decis: int = None):
10+
def _pick_item(out: dict, message: dict, key: str, dstkey: str, req: bool, decis: int|None = None):
1111
val = message.get(key)
1212
if val is not None:
1313
if isinstance(val, float) and decis is not None:
@@ -23,7 +23,7 @@ def _pick_list(out: dict, message: dict, items: list):
2323
return out
2424

2525
def _make_average_power_event(message: dict):
26-
ev = {}
26+
ev: dict = {}
2727
_pick_list(ev, message, _MAC_TS_ROLE)
2828
_pick_list(ev, message, [
2929
('power', 'watts', True, 0),
@@ -32,7 +32,7 @@ def _make_average_power_event(message: dict):
3232
return ev
3333

3434
def _make_average_power_components_event(message: dict):
35-
ev = {}
35+
ev: dict = {}
3636
_pick_list(ev, message, _MAC_TS_ROLE)
3737
_pick_list(ev, message, [
3838
('current', 'apparent_current', True, 3),
@@ -43,7 +43,7 @@ def _make_average_power_components_event(message: dict):
4343
return ev
4444

4545
def _make_summation_energy_event(message: dict):
46-
ev = {}
46+
ev: dict = {}
4747
_pick_list(ev, message, _MAC_TS_ROLE)
4848
_pick_list(ev, message, [
4949
('summation', 'summation_joules', True, 0),
@@ -52,7 +52,7 @@ def _make_summation_energy_event(message: dict):
5252
return ev
5353

5454
def _make_average_flow_event(message: dict):
55-
ev = {}
55+
ev: dict = {}
5656
_pick_list(ev, message, _MAC_TS_ROLE)
5757
# Old firmware not providing averge_flow don't account for meter scaling,
5858
# so the reported flow is likely wrong. To avoid displaying incorrect data
@@ -64,7 +64,7 @@ def _make_average_flow_event(message: dict):
6464
return ev
6565

6666
def _make_summation_volume_event(message: dict):
67-
ev = {}
67+
ev: dict = {}
6868
_pick_list(ev, message, _MAC_TS_ROLE)
6969
# Old firmware not providing summation_volume don't account for meter
7070
# scaling, so the reported summation is likely wrong. To avoid displaying
@@ -76,7 +76,7 @@ def _make_summation_volume_event(message: dict):
7676
return ev
7777

7878
def _make_uncalibrated_event(message: dict):
79-
ev = {}
79+
ev: dict = {}
8080
_pick_list(ev, message, _MAC_TS_ROLE)
8181
_pick_list(ev, message, [
8282
('power', 'value', True, None),
@@ -85,13 +85,13 @@ def _make_uncalibrated_event(message: dict):
8585
return ev
8686

8787
def _make_battery_level_event(message: dict):
88-
ev = {}
88+
ev: dict = {}
8989
_pick_list(ev, message, _MAC_TS_ROLE)
9090
ev['volts'] = round(float(message['batteryMicrovolt'])/1000000.0, 6)
9191
return ev
9292

9393
def _make_rssi_event(message: dict):
94-
ev = {}
94+
ev: dict = {}
9595
_pick_list(ev, message, _MAC_TS_ROLE)
9696
_pick_list(ev, message, [
9797
('duration', 'duration_s', True, 3),
@@ -247,9 +247,9 @@ def translate_raw_message(message: dict, relay_mac: str):
247247
- "last_rssi": The most recent RSSI value.
248248
249249
"""
250-
evs = {}
251-
typ = message.get('type')
252-
dev = message.get('device') # plug/sensor/ble_sensor
250+
evs: dict = {}
251+
typ = message['type']
252+
dev = message['device'] # plug/sensor/ble_sensor
253253

254254
# Primary message type, overloaded like nothing 😅
255255
if typ == 'instant_power':

0 commit comments

Comments
 (0)