Enforce CameraEntityFeature (#82325)
parent
7df711f1f3
commit
8b54a0679f
|
@ -429,7 +429,7 @@ class Camera(Entity):
|
|||
_attr_motion_detection_enabled: bool = False
|
||||
_attr_should_poll: bool = False # No need to poll cameras
|
||||
_attr_state: None = None # State is determined by is_on
|
||||
_attr_supported_features: CameraEntityFeature | int = 0
|
||||
_attr_supported_features: CameraEntityFeature = CameraEntityFeature(0)
|
||||
|
||||
def __init__(self) -> None:
|
||||
"""Initialize a camera."""
|
||||
|
@ -450,7 +450,7 @@ class Camera(Entity):
|
|||
return ENTITY_IMAGE_URL.format(self.entity_id, self.access_tokens[-1])
|
||||
|
||||
@property
|
||||
def supported_features(self) -> CameraEntityFeature | int:
|
||||
def supported_features(self) -> CameraEntityFeature:
|
||||
"""Flag supported features."""
|
||||
return self._attr_supported_features
|
||||
|
||||
|
|
|
@ -95,9 +95,9 @@ class NestCamera(Camera):
|
|||
return self._device_info.device_model
|
||||
|
||||
@property
|
||||
def supported_features(self) -> int:
|
||||
def supported_features(self) -> CameraEntityFeature:
|
||||
"""Flag supported features."""
|
||||
supported_features = 0
|
||||
supported_features = CameraEntityFeature(0)
|
||||
if CameraLiveStreamTrait.NAME in self._device.traits:
|
||||
supported_features |= CameraEntityFeature.STREAM
|
||||
return supported_features
|
||||
|
|
|
@ -175,9 +175,10 @@ class ProtectCamera(ProtectDeviceEntity, Camera):
|
|||
self._stream_source = ( # pylint: disable=attribute-defined-outside-init
|
||||
None if disable_stream else rtsp_url
|
||||
)
|
||||
self._attr_supported_features = (
|
||||
CameraEntityFeature.STREAM if self._stream_source else 0
|
||||
)
|
||||
if self._stream_source:
|
||||
self._attr_supported_features = CameraEntityFeature.STREAM
|
||||
else:
|
||||
self._attr_supported_features = CameraEntityFeature(0)
|
||||
|
||||
@callback
|
||||
def _async_update_device_from_protect(self, device: ProtectModelWithId) -> None:
|
||||
|
|
|
@ -107,14 +107,14 @@ class UnifiVideoCamera(Camera):
|
|||
return self._name
|
||||
|
||||
@property
|
||||
def supported_features(self) -> CameraEntityFeature | int:
|
||||
def supported_features(self) -> CameraEntityFeature:
|
||||
"""Return supported features."""
|
||||
channels = self._caminfo["channels"]
|
||||
for channel in channels:
|
||||
if channel["isRtspEnabled"]:
|
||||
return CameraEntityFeature.STREAM
|
||||
|
||||
return 0
|
||||
return CameraEntityFeature(0)
|
||||
|
||||
@property
|
||||
def extra_state_attributes(self):
|
||||
|
|
|
@ -803,7 +803,7 @@ _INHERITANCE_MATCH: dict[str, list[ClassTypeHintMatch]] = {
|
|||
),
|
||||
TypeHintMatch(
|
||||
function_name="supported_features",
|
||||
return_type=["CameraEntityFeature", "int"],
|
||||
return_type="CameraEntityFeature",
|
||||
),
|
||||
TypeHintMatch(
|
||||
function_name="is_recording",
|
||||
|
|
Loading…
Reference in New Issue