From 68db312e27716b7a1012466da7a7a78ba439689d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 27 Jan 2026 23:43:17 +0000 Subject: [PATCH 1/5] Initial plan From 67aced29ec283559e52514623bd8e57c6c09a37d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 27 Jan 2026 23:49:43 +0000 Subject: [PATCH 2/5] Fix import pollution and remove redundant enum conversion - Replace wildcard imports with explicit enum re-exports in __init__.py - Remove redundant enum conversion logic in create_server_config (ServerConfig.__init__ already handles it) - Add type: ignore comments for mypy limitations with attrs constructors Co-authored-by: iMicknl <1424596+iMicknl@users.noreply.github.com> --- pyoverkiz/enums/__init__.py | 79 +++++++++++++++++-------------------- pyoverkiz/utils.py | 9 ++--- 2 files changed, 39 insertions(+), 49 deletions(-) diff --git a/pyoverkiz/enums/__init__.py b/pyoverkiz/enums/__init__.py index bd55212f..0e0704c1 100644 --- a/pyoverkiz/enums/__init__.py +++ b/pyoverkiz/enums/__init__.py @@ -1,46 +1,39 @@ """Convenience re-exports for the enums package.""" -# flake8: noqa: F403 - -from enum import Enum - -from pyoverkiz.enums import command as _command -from pyoverkiz.enums import execution as _execution -from pyoverkiz.enums import gateway as _gateway -from pyoverkiz.enums import general as _general -from pyoverkiz.enums import measured_value_type as _measured_value_type -from pyoverkiz.enums import protocol as _protocol -from pyoverkiz.enums import server as _server -from pyoverkiz.enums import state as _state -from pyoverkiz.enums import ui as _ui -from pyoverkiz.enums import ui_profile as _ui_profile -from pyoverkiz.enums.command import * -from pyoverkiz.enums.execution import * -from pyoverkiz.enums.gateway import * -from pyoverkiz.enums.general import * -from pyoverkiz.enums.measured_value_type import * -from pyoverkiz.enums.protocol import * -from pyoverkiz.enums.server import * -from pyoverkiz.enums.state import * -from pyoverkiz.enums.ui import * -from pyoverkiz.enums.ui_profile import * - -__all__ = sorted( - { - name - for module in ( - _command, - _execution, - _gateway, - _general, - _measured_value_type, - _protocol, - _server, - _state, - _ui, - _ui_profile, - ) - for name, obj in vars(module).items() - if isinstance(obj, type) and issubclass(obj, Enum) - } +# Explicitly re-export all Enum subclasses to avoid wildcard import issues +from pyoverkiz.enums.command import CommandMode, OverkizCommand, OverkizCommandParam +from pyoverkiz.enums.execution import ( + ExecutionState, + ExecutionSubType, + ExecutionType, ) +from pyoverkiz.enums.gateway import GatewaySubType, GatewayType, UpdateBoxStatus +from pyoverkiz.enums.general import DataType, EventName, FailureType, ProductType +from pyoverkiz.enums.measured_value_type import MeasuredValueType +from pyoverkiz.enums.protocol import Protocol +from pyoverkiz.enums.server import APIType, Server +from pyoverkiz.enums.ui import UIClass, UIWidget +from pyoverkiz.enums.ui_profile import UIProfile + +__all__ = [ + "APIType", + "CommandMode", + "DataType", + "EventName", + "ExecutionState", + "ExecutionSubType", + "ExecutionType", + "FailureType", + "GatewaySubType", + "GatewayType", + "MeasuredValueType", + "OverkizCommand", + "OverkizCommandParam", + "ProductType", + "Protocol", + "Server", + "UIClass", + "UIProfile", + "UIWidget", + "UpdateBoxStatus", +] diff --git a/pyoverkiz/utils.py b/pyoverkiz/utils.py index 06fcd34a..23313ed9 100644 --- a/pyoverkiz/utils.py +++ b/pyoverkiz/utils.py @@ -37,17 +37,14 @@ def create_server_config( configuration_url: str | None = None, ) -> ServerConfig: """Generate server configuration with the provided endpoint and metadata.""" - resolved_server = ( - server if isinstance(server, Server) or server is None else Server(server) - ) - resolved_type = type if isinstance(type, APIType) else APIType(type) + # ServerConfig.__init__ accepts str | enum types and converts them internally return ServerConfig( - server=resolved_server, + server=server, # type: ignore[arg-type] name=name, endpoint=endpoint, manufacturer=manufacturer, configuration_url=configuration_url, - type=resolved_type, + type=type, # type: ignore[arg-type] ) From 0fdaa29085638af4a1e4d51d8c7d699dd01adce4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 27 Jan 2026 23:52:54 +0000 Subject: [PATCH 3/5] Add missing OverkizState and OverkizAttribute to enum exports Co-authored-by: iMicknl <1424596+iMicknl@users.noreply.github.com> --- pyoverkiz/enums/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyoverkiz/enums/__init__.py b/pyoverkiz/enums/__init__.py index 0e0704c1..7d25db5a 100644 --- a/pyoverkiz/enums/__init__.py +++ b/pyoverkiz/enums/__init__.py @@ -12,6 +12,7 @@ from pyoverkiz.enums.measured_value_type import MeasuredValueType from pyoverkiz.enums.protocol import Protocol from pyoverkiz.enums.server import APIType, Server +from pyoverkiz.enums.state import OverkizAttribute, OverkizState from pyoverkiz.enums.ui import UIClass, UIWidget from pyoverkiz.enums.ui_profile import UIProfile @@ -27,8 +28,10 @@ "GatewaySubType", "GatewayType", "MeasuredValueType", + "OverkizAttribute", "OverkizCommand", "OverkizCommandParam", + "OverkizState", "ProductType", "Protocol", "Server", From ca56bea4545d6b62eb6db813a9ce1655d126f5ab Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 28 Jan 2026 00:13:10 +0000 Subject: [PATCH 4/5] Add missing UIClassifier enum and restore explicit enum conversion - Add UIClassifier to enum exports (was accidentally omitted) - Restore explicit enum conversion in create_server_config for type safety - While ServerConfig.__init__ does convert, explicit conversion is safer and clearer Co-authored-by: iMicknl <1424596+iMicknl@users.noreply.github.com> --- pyoverkiz/enums/__init__.py | 3 ++- pyoverkiz/utils.py | 11 ++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/pyoverkiz/enums/__init__.py b/pyoverkiz/enums/__init__.py index 7d25db5a..bf6080d1 100644 --- a/pyoverkiz/enums/__init__.py +++ b/pyoverkiz/enums/__init__.py @@ -13,7 +13,7 @@ from pyoverkiz.enums.protocol import Protocol from pyoverkiz.enums.server import APIType, Server from pyoverkiz.enums.state import OverkizAttribute, OverkizState -from pyoverkiz.enums.ui import UIClass, UIWidget +from pyoverkiz.enums.ui import UIClass, UIClassifier, UIWidget from pyoverkiz.enums.ui_profile import UIProfile __all__ = [ @@ -36,6 +36,7 @@ "Protocol", "Server", "UIClass", + "UIClassifier", "UIProfile", "UIWidget", "UpdateBoxStatus", diff --git a/pyoverkiz/utils.py b/pyoverkiz/utils.py index 23313ed9..34194f50 100644 --- a/pyoverkiz/utils.py +++ b/pyoverkiz/utils.py @@ -37,14 +37,19 @@ def create_server_config( configuration_url: str | None = None, ) -> ServerConfig: """Generate server configuration with the provided endpoint and metadata.""" - # ServerConfig.__init__ accepts str | enum types and converts them internally + # Explicitly convert string values to enums to ensure type safety + # even though ServerConfig.__init__ also handles this conversion + resolved_server = ( + server if isinstance(server, Server) or server is None else Server(server) + ) + resolved_type = type if isinstance(type, APIType) else APIType(type) return ServerConfig( - server=server, # type: ignore[arg-type] + server=resolved_server, name=name, endpoint=endpoint, manufacturer=manufacturer, configuration_url=configuration_url, - type=type, # type: ignore[arg-type] + type=resolved_type, ) From 70e35416dadf2bef9ef488423774afd9258bbb26 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 28 Jan 2026 08:41:51 +0000 Subject: [PATCH 5/5] Revert to simpler approach without explicit enum conversion Remove the explicit enum conversion in create_server_config and rely on ServerConfig.__init__ to handle the conversion. This is the cleaner approach preferred by the maintainer. Co-authored-by: iMicknl <1424596+iMicknl@users.noreply.github.com> --- pyoverkiz/utils.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/pyoverkiz/utils.py b/pyoverkiz/utils.py index 34194f50..23313ed9 100644 --- a/pyoverkiz/utils.py +++ b/pyoverkiz/utils.py @@ -37,19 +37,14 @@ def create_server_config( configuration_url: str | None = None, ) -> ServerConfig: """Generate server configuration with the provided endpoint and metadata.""" - # Explicitly convert string values to enums to ensure type safety - # even though ServerConfig.__init__ also handles this conversion - resolved_server = ( - server if isinstance(server, Server) or server is None else Server(server) - ) - resolved_type = type if isinstance(type, APIType) else APIType(type) + # ServerConfig.__init__ accepts str | enum types and converts them internally return ServerConfig( - server=resolved_server, + server=server, # type: ignore[arg-type] name=name, endpoint=endpoint, manufacturer=manufacturer, configuration_url=configuration_url, - type=resolved_type, + type=type, # type: ignore[arg-type] )