This commit is contained in:
Daniel 2026-06-20 09:57:22 -04:00 committed by GitHub
commit b0fb7f2091
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 17 additions and 0 deletions

View File

@ -3,6 +3,21 @@ import unittest
from frigate.track.tracked_object import TrackedObjectAttribute from frigate.track.tracked_object import TrackedObjectAttribute
class TestAttributeSlots(unittest.TestCase):
def test_attribute_uses_slots(self) -> None:
attribute = TrackedObjectAttribute(
("amazon", 0.8, (847, 242, 883, 255), 468, 2.77, (702, 134, 1050, 482))
)
# __slots__ means no per-instance __dict__
self.assertFalse(hasattr(attribute, "__dict__"))
# all declared fields are still populated and readable
self.assertEqual(attribute.label, "amazon")
self.assertEqual(attribute.region, (702, 134, 1050, 482))
# setting an undeclared attribute must raise (catches accidental drift)
with self.assertRaises(AttributeError):
attribute.unexpected = 1
class TestAttribute(unittest.TestCase): class TestAttribute(unittest.TestCase):
def test_overlapping_object_selection(self) -> None: def test_overlapping_object_selection(self) -> None:
attribute = TrackedObjectAttribute( attribute = TrackedObjectAttribute(

View File

@ -574,6 +574,8 @@ def zone_filtered(obj: TrackedObject, object_config: dict[str, FilterConfig]) ->
class TrackedObjectAttribute: class TrackedObjectAttribute:
__slots__ = ("label", "score", "box", "area", "ratio", "region")
def __init__(self, raw_data: tuple) -> None: def __init__(self, raw_data: tuple) -> None:
self.label = raw_data[0] self.label = raw_data[0]
self.score = raw_data[1] self.score = raw_data[1]