Skip to content

Commit 3aaadf9

Browse files
committed
Specific import
1 parent fac75f6 commit 3aaadf9

File tree

1 file changed

+18
-20
lines changed

1 file changed

+18
-20
lines changed

plugwise_usb/messages/properties.py

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""Message property types."""
22

33
import binascii
4-
import datetime
4+
from datetime import UTC, date, datetime, time, timedelta
55
import struct
66
from typing import Any
77

@@ -161,10 +161,10 @@ def value(self) -> int:
161161
class UnixTimestamp(BaseType):
162162
"""Unix formatted timestamp property."""
163163

164-
def __init__(self, value: float, length: int = 8) -> None:
164+
def __init__(self, value: datetime | None, length: int = 8) -> None:
165165
"""Initialize Unix formatted timestamp property."""
166166
super().__init__(value, length)
167-
self._value: datetime.datetime | None = None
167+
self._value: datetime | None = None
168168

169169
def serialize(self) -> bytes:
170170
"""Return current string formatted value into an iterable list of bytes."""
@@ -173,10 +173,10 @@ def serialize(self) -> bytes:
173173

174174
def deserialize(self, val: bytes) -> None:
175175
"""Convert data into datetime based on Unix timestamp format."""
176-
self._value = datetime.datetime.fromtimestamp(int(val, 16), datetime.UTC)
176+
self._value = datetime.fromtimestamp(int(val, 16), UTC)
177177

178178
@property
179-
def value(self) -> datetime.datetime:
179+
def value(self) -> datetime:
180180
"""Return converted datetime value."""
181181
if self._value is None:
182182
raise MessageError("Unable to return value. Deserialize data first")
@@ -218,7 +218,7 @@ def __init__(self, year: int = 0, month: int = 1, minutes: int = 0) -> None:
218218
self.month = Int(month, 2, False)
219219
self.minutes = Int(minutes, 4, False)
220220
self.contents += [self.year, self.month, self.minutes]
221-
self._value: datetime.datetime | None = None
221+
self._value: datetime | None = None
222222
self._deserialized = False
223223

224224
def deserialize(self, val: bytes) -> None:
@@ -227,9 +227,9 @@ def deserialize(self, val: bytes) -> None:
227227
self._value = None
228228
else:
229229
CompositeType.deserialize(self, val)
230-
self._value = datetime.datetime(
230+
self._value = datetime(
231231
year=self.year.value, month=self.month.value, day=1
232-
) + datetime.timedelta(minutes=self.minutes.value)
232+
) + timedelta(minutes=self.minutes.value)
233233
self._deserialized = True
234234

235235
@property
@@ -240,7 +240,7 @@ def value_set(self) -> bool:
240240
return (self._value is not None)
241241

242242
@property
243-
def value(self) -> datetime.datetime:
243+
def value(self) -> datetime:
244244
"""Return converted datetime value."""
245245
if self._value is None:
246246
raise MessageError("Unable to return value. Deserialize data first")
@@ -257,17 +257,15 @@ def __init__(self, hour: int = 0, minute: int = 0, second: int = 0) -> None:
257257
self.minute = Int(minute, 2, False)
258258
self.second = Int(second, 2, False)
259259
self.contents += [self.hour, self.minute, self.second]
260-
self._value: datetime.time | None = None
260+
self._value: time | None = None
261261

262262
def deserialize(self, val: bytes) -> None:
263263
"""Convert data into time value."""
264264
CompositeType.deserialize(self, val)
265-
self._value = datetime.time(
266-
self.hour.value, self.minute.value, self.second.value
267-
)
265+
self._value = time(self.hour.value, self.minute.value, self.second.value)
268266

269267
@property
270-
def value(self) -> datetime.time:
268+
def value(self) -> time:
271269
"""Return converted time value."""
272270
if self._value is None:
273271
raise MessageError("Unable to return value. Deserialize data first")
@@ -309,19 +307,19 @@ def __init__(self, hour: int = 0, minute: int = 0, second: int = 0) -> None:
309307
self.minute = IntDec(minute, 2)
310308
self.second = IntDec(second, 2)
311309
self.contents += [self.second, self.minute, self.hour]
312-
self._value: datetime.time | None = None
310+
self._value: time | None = None
313311

314312
def deserialize(self, val: bytes) -> None:
315313
"""Convert data into time value based on integer formatted data."""
316314
CompositeType.deserialize(self, val)
317-
self._value = datetime.time(
315+
self._value = time(
318316
int(self.hour.value),
319317
int(self.minute.value),
320318
int(self.second.value),
321319
)
322320

323321
@property
324-
def value(self) -> datetime.time:
322+
def value(self) -> time:
325323
"""Return converted time value."""
326324
if self._value is None:
327325
raise MessageError("Unable to return value. Deserialize data first")
@@ -338,19 +336,19 @@ def __init__(self, day: int = 0, month: int = 0, year: int = 0) -> None:
338336
self.month = IntDec(month, 2)
339337
self.year = IntDec(year - PLUGWISE_EPOCH, 2)
340338
self.contents += [self.day, self.month, self.year]
341-
self._value: datetime.date | None = None
339+
self._value: date | None = None
342340

343341
def deserialize(self, val: bytes) -> None:
344342
"""Convert data into date value based on integer formatted data."""
345343
CompositeType.deserialize(self, val)
346-
self._value = datetime.date(
344+
self._value = date(
347345
int(self.year.value) + PLUGWISE_EPOCH,
348346
int(self.month.value),
349347
int(self.day.value),
350348
)
351349

352350
@property
353-
def value(self) -> datetime.date:
351+
def value(self) -> date:
354352
"""Return converted date value."""
355353
if self._value is None:
356354
raise MessageError("Unable to return value. Deserialize data first")

0 commit comments

Comments
 (0)