From 318fb419f5aeac7f03db490073a68bc448f6861b Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Wed, 28 Feb 2024 16:36:39 -0700 Subject: [PATCH] Fix config checks --- frigate/config.py | 4 ++-- frigate/detectors/detector_config.py | 2 +- frigate/test/test_config.py | 8 +++++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/frigate/config.py b/frigate/config.py index 66599f762..b0532b9af 100644 --- a/frigate/config.py +++ b/frigate/config.py @@ -1139,7 +1139,7 @@ class FrigateConfig(FrigateBaseModel): def runtime_config(self, plus_api: PlusApi = None) -> FrigateConfig: """Merge camera config with globals.""" - config = self.copy(deep=True) + config = self.model_copy(deep=True) # MQTT user/password substitutions if config.mqtt.user or config.mqtt.password: @@ -1330,7 +1330,7 @@ class FrigateConfig(FrigateBaseModel): for key, detector in config.detectors.items(): adapter = TypeAdapter(DetectorConfig) - detector_config: DetectorConfig = adapter.validate_python(detector) + detector_config: DetectorConfig = adapter.validate_python(detector.model_dump()) if detector_config.model is None: detector_config.model = config.model else: diff --git a/frigate/detectors/detector_config.py b/frigate/detectors/detector_config.py index 4958827d1..c56b7fb8f 100644 --- a/frigate/detectors/detector_config.py +++ b/frigate/detectors/detector_config.py @@ -140,7 +140,7 @@ class ModelConfig(BaseModel): class BaseDetectorConfig(BaseModel): # the type field must be defined in all subclasses type: str = Field(default="cpu", title="Detector Type") - model: ModelConfig = Field( + model: Optional[ModelConfig] = Field( default=None, title="Detector specific model configuration." ) model_config = ConfigDict(extra="allow", arbitrary_types_allowed=True) diff --git a/frigate/test/test_config.py b/frigate/test/test_config.py index 1f25488cc..949438540 100644 --- a/frigate/test/test_config.py +++ b/frigate/test/test_config.py @@ -1,6 +1,7 @@ import json import os import unittest +from unittest.mock import patch import numpy as np from pydantic import ValidationError @@ -70,7 +71,9 @@ class TestConfig(unittest.TestCase): assert runtime_config.detectors["cpu"].type == DetectorTypeEnum.cpu assert runtime_config.detectors["cpu"].model.width == 320 - def test_detector_custom_model_path(self): + @patch("frigate.detectors.detector_config.load_labels") + def test_detector_custom_model_path(self, mock_labels): + mock_labels.return_value = {} config = { "detectors": { "cpu": { @@ -83,7 +86,6 @@ class TestConfig(unittest.TestCase): }, "openvino": { "type": "openvino", - "model": {"path": "/openvino_model.xml"} }, }, # needs to be a file that will exist, doesnt matter what @@ -111,7 +113,7 @@ class TestConfig(unittest.TestCase): assert runtime_config.detectors["openvino"].model.path == "/etc/hosts" assert runtime_config.model.width == 512 - assert runtime_config.detectors["cpu"].model.width == 512 + assert runtime_config.detectors["cpu"].model.width == 320 assert runtime_config.detectors["edgetpu"].model.width == 160 assert runtime_config.detectors["openvino"].model.width == 512