mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-03-30 20:04:54 +03:00
use rasterized_mask as field
makes it easier to exclude from the schema with exclude=True prevents leaking of the field when using model_dump for profiles
This commit is contained in:
parent
80239a8017
commit
d41d328a9b
@ -12,7 +12,6 @@ from pydantic import (
|
|||||||
Field,
|
Field,
|
||||||
TypeAdapter,
|
TypeAdapter,
|
||||||
ValidationInfo,
|
ValidationInfo,
|
||||||
field_serializer,
|
|
||||||
field_validator,
|
field_validator,
|
||||||
model_validator,
|
model_validator,
|
||||||
)
|
)
|
||||||
@ -98,8 +97,7 @@ stream_info_retriever = StreamInfoRetriever()
|
|||||||
class RuntimeMotionConfig(MotionConfig):
|
class RuntimeMotionConfig(MotionConfig):
|
||||||
"""Runtime version of MotionConfig with rasterized masks."""
|
"""Runtime version of MotionConfig with rasterized masks."""
|
||||||
|
|
||||||
# The rasterized numpy mask (combination of all enabled masks)
|
rasterized_mask: np.ndarray = Field(default=None, exclude=True)
|
||||||
rasterized_mask: np.ndarray = None
|
|
||||||
|
|
||||||
def __init__(self, **config):
|
def __init__(self, **config):
|
||||||
frame_shape = config.get("frame_shape", (1, 1))
|
frame_shape = config.get("frame_shape", (1, 1))
|
||||||
@ -145,24 +143,13 @@ class RuntimeMotionConfig(MotionConfig):
|
|||||||
empty_mask[:] = 255
|
empty_mask[:] = 255
|
||||||
self.rasterized_mask = empty_mask
|
self.rasterized_mask = empty_mask
|
||||||
|
|
||||||
def dict(self, **kwargs):
|
|
||||||
ret = super().model_dump(**kwargs)
|
|
||||||
if "rasterized_mask" in ret:
|
|
||||||
ret.pop("rasterized_mask")
|
|
||||||
return ret
|
|
||||||
|
|
||||||
@field_serializer("rasterized_mask", when_used="json")
|
|
||||||
def serialize_rasterized_mask(self, value: Any, info):
|
|
||||||
return None
|
|
||||||
|
|
||||||
model_config = ConfigDict(arbitrary_types_allowed=True, extra="ignore")
|
model_config = ConfigDict(arbitrary_types_allowed=True, extra="ignore")
|
||||||
|
|
||||||
|
|
||||||
class RuntimeFilterConfig(FilterConfig):
|
class RuntimeFilterConfig(FilterConfig):
|
||||||
"""Runtime version of FilterConfig with rasterized masks."""
|
"""Runtime version of FilterConfig with rasterized masks."""
|
||||||
|
|
||||||
# The rasterized numpy mask (combination of all enabled masks)
|
rasterized_mask: Optional[np.ndarray] = Field(default=None, exclude=True)
|
||||||
rasterized_mask: Optional[np.ndarray] = None
|
|
||||||
|
|
||||||
def __init__(self, **config):
|
def __init__(self, **config):
|
||||||
frame_shape = config.get("frame_shape", (1, 1))
|
frame_shape = config.get("frame_shape", (1, 1))
|
||||||
@ -226,16 +213,6 @@ class RuntimeFilterConfig(FilterConfig):
|
|||||||
else:
|
else:
|
||||||
self.rasterized_mask = None
|
self.rasterized_mask = None
|
||||||
|
|
||||||
def dict(self, **kwargs):
|
|
||||||
ret = super().model_dump(**kwargs)
|
|
||||||
if "rasterized_mask" in ret:
|
|
||||||
ret.pop("rasterized_mask")
|
|
||||||
return ret
|
|
||||||
|
|
||||||
@field_serializer("rasterized_mask", when_used="json")
|
|
||||||
def serialize_rasterized_mask(self, value: Any, info):
|
|
||||||
return None
|
|
||||||
|
|
||||||
model_config = ConfigDict(arbitrary_types_allowed=True, extra="ignore")
|
model_config = ConfigDict(arbitrary_types_allowed=True, extra="ignore")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -717,7 +717,7 @@ def apply_section_update(camera_config, section: str, update: dict) -> Optional[
|
|||||||
|
|
||||||
if section == "motion":
|
if section == "motion":
|
||||||
merged = deep_merge(
|
merged = deep_merge(
|
||||||
current.model_dump(exclude_unset=True, exclude={"rasterized_mask"}),
|
current.model_dump(exclude_unset=True),
|
||||||
update,
|
update,
|
||||||
override=True,
|
override=True,
|
||||||
)
|
)
|
||||||
@ -727,9 +727,7 @@ def apply_section_update(camera_config, section: str, update: dict) -> Optional[
|
|||||||
|
|
||||||
elif section == "objects":
|
elif section == "objects":
|
||||||
merged = deep_merge(
|
merged = deep_merge(
|
||||||
current.model_dump(
|
current.model_dump(),
|
||||||
exclude={"filters": {"__all__": {"rasterized_mask"}}}
|
|
||||||
),
|
|
||||||
update,
|
update,
|
||||||
override=True,
|
override=True,
|
||||||
)
|
)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user