mirror of
https://github.com/home-assistant/core.git
synced 2026-05-08 09:38:58 +01:00
Adjust IntFlag handling in syrupy (#90223)
This commit is contained in:
+14
-3
@@ -111,10 +111,10 @@ class HomeAssistantSnapshotSerializer(AmberDataSerializer):
|
||||
serializable_data = cls._serializable_config_entry(data)
|
||||
elif dataclasses.is_dataclass(data):
|
||||
serializable_data = dataclasses.asdict(data)
|
||||
elif isinstance(data, IntFlag) and data == 0:
|
||||
elif isinstance(data, IntFlag):
|
||||
# The repr of an enum.IntFlag has changed between Python 3.10 and 3.11
|
||||
# This only concerns the 0 case, which we normalize here
|
||||
serializable_data = 0
|
||||
# so we normalize it here.
|
||||
serializable_data = _IntFlagWrapper(data)
|
||||
else:
|
||||
serializable_data = data
|
||||
with suppress(TypeError):
|
||||
@@ -201,6 +201,17 @@ class HomeAssistantSnapshotSerializer(AmberDataSerializer):
|
||||
)
|
||||
|
||||
|
||||
class _IntFlagWrapper:
|
||||
def __init__(self, flag: IntFlag) -> None:
|
||||
self._flag = flag
|
||||
|
||||
def __repr__(self) -> str:
|
||||
# 3.10: <ClimateEntityFeature.SWING_MODE|PRESET_MODE|FAN_MODE|TARGET_TEMPERATURE: 57>
|
||||
# 3.11: <ClimateEntityFeature.TARGET_TEMPERATURE|FAN_MODE|PRESET_MODE|SWING_MODE: 57>
|
||||
# Syrupy: <ClimateEntityFeature: 57>
|
||||
return f"<{self._flag.__class__.__name__}: {self._flag.value}>"
|
||||
|
||||
|
||||
class HomeAssistantSnapshotExtension(AmberSnapshotExtension):
|
||||
"""Home Assistant extension for Syrupy."""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user