Add container diarization configuration
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import os
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
@@ -26,6 +27,7 @@ class AppSettings:
|
||||
diarization_mode: str = "auto"
|
||||
diarization_runtime: str = "native"
|
||||
diarization_container_image: str | None = None
|
||||
diarization_container_args: tuple[str, ...] = ()
|
||||
|
||||
@classmethod
|
||||
def from_environment(cls) -> AppSettings:
|
||||
@@ -45,6 +47,9 @@ class AppSettings:
|
||||
diarization_mode=os.getenv("MKA_DIARIZATION_MODE", "auto"),
|
||||
diarization_runtime=os.getenv("MKA_DIARIZATION_RUNTIME", "native"),
|
||||
diarization_container_image=os.getenv("MKA_DIARIZATION_CONTAINER_IMAGE"),
|
||||
diarization_container_args=_parse_container_args(
|
||||
os.getenv("MKA_DIARIZATION_CONTAINER_ARGS")
|
||||
),
|
||||
)
|
||||
|
||||
def validate_for_processing(self) -> None:
|
||||
@@ -67,3 +72,29 @@ class AppSettings:
|
||||
raise ConfigurationError(
|
||||
"MKA_DIARIZATION_CONTAINER_IMAGE is required for container runtime."
|
||||
)
|
||||
if any(
|
||||
not isinstance(argument, str) or not argument
|
||||
for argument in self.diarization_container_args
|
||||
):
|
||||
raise ConfigurationError(
|
||||
"MKA_DIARIZATION_CONTAINER_ARGS must contain only non-empty strings."
|
||||
)
|
||||
|
||||
|
||||
def _parse_container_args(value: str | None) -> tuple[str, ...]:
|
||||
"""Parse an ordered JSON array of opaque container command arguments."""
|
||||
if value is None or not value.strip():
|
||||
return ()
|
||||
try:
|
||||
parsed = json.loads(value)
|
||||
except json.JSONDecodeError as exc:
|
||||
raise ConfigurationError(
|
||||
"MKA_DIARIZATION_CONTAINER_ARGS must be a JSON array of strings."
|
||||
) from exc
|
||||
if not isinstance(parsed, list) or any(
|
||||
not isinstance(argument, str) or not argument for argument in parsed
|
||||
):
|
||||
raise ConfigurationError(
|
||||
"MKA_DIARIZATION_CONTAINER_ARGS must be a JSON array of non-empty strings."
|
||||
)
|
||||
return tuple(parsed)
|
||||
|
||||
Reference in New Issue
Block a user