From f585f80c5cf8fc9b6d19a72dbb6e910c09e68f85 Mon Sep 17 00:00:00 2001 From: Patrik Lindgren <21142447+ggravlingen@users.noreply.github.com> Date: Sat, 19 Mar 2022 12:12:04 +0100 Subject: [PATCH] Make ApiResourceResponse mandatory and mark library as typed (#464) * Cleanup, mark library typed * Add package data * Fixes * Move file --- pytradfri/py.typed | 0 pytradfri/resource.py | 37 +++++++++---------------------------- setup.py | 1 + 3 files changed, 10 insertions(+), 28 deletions(-) create mode 100644 pytradfri/py.typed diff --git a/pytradfri/py.typed b/pytradfri/py.typed new file mode 100644 index 00000000..e69de29b diff --git a/pytradfri/resource.py b/pytradfri/resource.py index 96d9c14d..b63c2b4e 100644 --- a/pytradfri/resource.py +++ b/pytradfri/resource.py @@ -31,41 +31,27 @@ class ApiResourceResponse(BaseResponse): class ApiResource: """Base object for resources returned from the gateway.""" - _model_class: type[ApiResourceResponse] | None = None - raw: TypeRaw | ApiResourceResponse + _model_class: type[ApiResourceResponse] = ApiResourceResponse + raw: ApiResourceResponse def __init__(self, raw: TypeRaw) -> None: """Initialize base object.""" - if self._model_class: - self.raw = self._model_class(**raw) - else: - self.raw = raw + self.raw = self._model_class(**raw) @property def id(self) -> int: """Id.""" - if self._model_class: - resource_id = self.raw.id # type: ignore[union-attr] - else: - resource_id = self.raw[ATTR_ID] # type: ignore[index] - return resource_id + return self.raw.id @property def name(self) -> str | None: """Name.""" - if self._model_class: - name = self.raw.name # type: ignore[union-attr] - else: - name = self.raw[ATTR_NAME] # type: ignore[index] - return name + return self.raw.name @property def created_at(self) -> datetime | None: """Return timestamp of creation.""" - if self._model_class: - created_at = self.raw.created_at # type: ignore[union-attr] - else: - created_at = self.raw[ATTR_CREATED_AT] # type: ignore[index] + created_at = self.raw.created_at if created_at is None: return None @@ -89,10 +75,8 @@ def observe_callback(value: TypeRaw) -> None: Returns a Command. """ - if self._model_class: - self.raw = self._model_class(**value) - else: - self.raw = value + self.raw = self._model_class(**value) + if callback: callback(self) @@ -125,9 +109,6 @@ def update(self) -> Command[None]: """ def process_result(result: TypeRaw) -> None: - if self._model_class: - self.raw = self._model_class(**result) - else: - self.raw = result + self.raw = self._model_class(**result) return Command("get", self.path, process_result=process_result) diff --git a/setup.py b/setup.py index 35d9cfac..dcd05c0d 100755 --- a/setup.py +++ b/setup.py @@ -29,6 +29,7 @@ author_email="no@email.com", long_description_content_type="text/markdown", url=GITHUB_URL, + package_data={"pytradfri": ["py.typed"]}, include_package_data=True, license="MIT", keywords="ikea tradfri api iot light homeautomation",