mirror of
https://github.com/blakeblackshear/frigate.git
synced 2024-10-15 20:07:23 +02:00
2797a60d4f
* Don't fail if openvino fails to import * Ensure all modules are imported safely * Undo * Fix list append
43 lines
1.0 KiB
Python
43 lines
1.0 KiB
Python
import logging
|
|
import importlib
|
|
import pkgutil
|
|
from typing import Union
|
|
from typing_extensions import Annotated
|
|
from enum import Enum
|
|
from pydantic import Field
|
|
|
|
from . import plugins
|
|
from .detection_api import DetectionApi
|
|
from .detector_config import BaseDetectorConfig
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
_included_modules = pkgutil.iter_modules(plugins.__path__, plugins.__name__ + ".")
|
|
|
|
plugin_modules = []
|
|
|
|
for _, name, _ in _included_modules:
|
|
try:
|
|
# currently openvino may fail when importing
|
|
# on an arm device with 64 KiB page size.
|
|
plugin_modules.append(importlib.import_module(name))
|
|
except ImportError as e:
|
|
logger.error(f"Error importing detector runtime: {e}")
|
|
|
|
|
|
api_types = {det.type_key: det for det in DetectionApi.__subclasses__()}
|
|
|
|
|
|
class StrEnum(str, Enum):
|
|
pass
|
|
|
|
|
|
DetectorTypeEnum = StrEnum("DetectorTypeEnum", {k: k for k in api_types})
|
|
|
|
DetectorConfig = Annotated[
|
|
Union[tuple(BaseDetectorConfig.__subclasses__())],
|
|
Field(discriminator="type"),
|
|
]
|