Skip to content

Commit f585f80

Browse files
authored
Make ApiResourceResponse mandatory and mark library as typed (#464)
* Cleanup, mark library typed * Add package data * Fixes * Move file
1 parent 9fda7b2 commit f585f80

File tree

3 files changed

+10
-28
lines changed

3 files changed

+10
-28
lines changed

pytradfri/py.typed

Whitespace-only changes.

pytradfri/resource.py

Lines changed: 9 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -31,41 +31,27 @@ class ApiResourceResponse(BaseResponse):
3131
class ApiResource:
3232
"""Base object for resources returned from the gateway."""
3333

34-
_model_class: type[ApiResourceResponse] | None = None
35-
raw: TypeRaw | ApiResourceResponse
34+
_model_class: type[ApiResourceResponse] = ApiResourceResponse
35+
raw: ApiResourceResponse
3636

3737
def __init__(self, raw: TypeRaw) -> None:
3838
"""Initialize base object."""
39-
if self._model_class:
40-
self.raw = self._model_class(**raw)
41-
else:
42-
self.raw = raw
39+
self.raw = self._model_class(**raw)
4340

4441
@property
4542
def id(self) -> int:
4643
"""Id."""
47-
if self._model_class:
48-
resource_id = self.raw.id # type: ignore[union-attr]
49-
else:
50-
resource_id = self.raw[ATTR_ID] # type: ignore[index]
51-
return resource_id
44+
return self.raw.id
5245

5346
@property
5447
def name(self) -> str | None:
5548
"""Name."""
56-
if self._model_class:
57-
name = self.raw.name # type: ignore[union-attr]
58-
else:
59-
name = self.raw[ATTR_NAME] # type: ignore[index]
60-
return name
49+
return self.raw.name
6150

6251
@property
6352
def created_at(self) -> datetime | None:
6453
"""Return timestamp of creation."""
65-
if self._model_class:
66-
created_at = self.raw.created_at # type: ignore[union-attr]
67-
else:
68-
created_at = self.raw[ATTR_CREATED_AT] # type: ignore[index]
54+
created_at = self.raw.created_at
6955

7056
if created_at is None:
7157
return None
@@ -89,10 +75,8 @@ def observe_callback(value: TypeRaw) -> None:
8975
9076
Returns a Command.
9177
"""
92-
if self._model_class:
93-
self.raw = self._model_class(**value)
94-
else:
95-
self.raw = value
78+
self.raw = self._model_class(**value)
79+
9680
if callback:
9781
callback(self)
9882

@@ -125,9 +109,6 @@ def update(self) -> Command[None]:
125109
"""
126110

127111
def process_result(result: TypeRaw) -> None:
128-
if self._model_class:
129-
self.raw = self._model_class(**result)
130-
else:
131-
self.raw = result
112+
self.raw = self._model_class(**result)
132113

133114
return Command("get", self.path, process_result=process_result)

setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
author_email="no@email.com",
3030
long_description_content_type="text/markdown",
3131
url=GITHUB_URL,
32+
package_data={"pytradfri": ["py.typed"]},
3233
include_package_data=True,
3334
license="MIT",
3435
keywords="ikea tradfri api iot light homeautomation",

0 commit comments

Comments
 (0)