refactor: unify env var helpers and remove magic slice in cache
- Add _getenv_num as shared core for _getenv_int/_getenv_float
- Add _getenv_optional_float for FRIGATE_SCORE_CEILING (replaces 9-line inline block)
- Add _getenv_bool; replace 11 inline .lower()-in-("true","1","yes") sites
across config.py, jobs.py, and cli.py with single call site
- _resolve_strategy no-embedding branch: inline try/except → _getenv_int("LIMIT", 30)
- cache.py: final[:-4] → final.removesuffix(".npy") — assumption is now explicit
This commit is contained in:
+29
-22
@@ -12,26 +12,41 @@ from rich.prompt import Prompt
|
||||
_LEGACY_CONFIG_FILE = Path(".immich_config.json") # pre-v0.6: lived in process CWD, not on a volume
|
||||
|
||||
|
||||
def _getenv_int(name: str, default: int) -> int:
|
||||
def _getenv_num(name: str, default, cast):
|
||||
raw = os.getenv(name)
|
||||
if raw is None:
|
||||
return default
|
||||
try:
|
||||
return int(raw)
|
||||
return cast(raw)
|
||||
except ValueError:
|
||||
logging.warning("%s=%r is not a valid integer — using default %s", name, raw, default)
|
||||
logging.warning("%s=%r is not a valid %s — using default %s", name, raw, cast.__name__, default)
|
||||
return default
|
||||
|
||||
|
||||
def _getenv_int(name: str, default: int) -> int:
|
||||
return _getenv_num(name, default, int)
|
||||
|
||||
|
||||
def _getenv_float(name: str, default: float) -> float:
|
||||
raw = os.getenv(name)
|
||||
if raw is None:
|
||||
return default
|
||||
return _getenv_num(name, default, float)
|
||||
|
||||
|
||||
def _getenv_optional_float(name: str) -> float | None:
|
||||
raw = os.getenv(name, "").strip()
|
||||
if not raw:
|
||||
return None
|
||||
try:
|
||||
return float(raw)
|
||||
except ValueError:
|
||||
logging.warning("%s=%r is not a valid float — using default %s", name, raw, default)
|
||||
logging.warning("%s=%r is not a valid float — ignoring", name, raw)
|
||||
return None
|
||||
|
||||
|
||||
def _getenv_bool(name: str, default: bool) -> bool:
|
||||
raw = os.getenv(name)
|
||||
if raw is None:
|
||||
return default
|
||||
return raw.lower() in ("true", "1", "yes")
|
||||
|
||||
|
||||
class _Config:
|
||||
@@ -109,25 +124,17 @@ class _Config:
|
||||
self.YEARS_FILTER = _getenv_int("YEARS_FILTER", 10)
|
||||
self.MIN_FACE_WIDTH = _getenv_int("MIN_FACE_WIDTH", 90)
|
||||
self.MIN_FACE_COUNT = _getenv_int("MIN_FACE_COUNT", 3)
|
||||
self.MERGE_DUPLICATE_PEOPLE = os.getenv("MERGE_DUPLICATE_PEOPLE", "false").lower() in ("true", "1", "yes")
|
||||
self.MERGE_DUPLICATE_PEOPLE = _getenv_bool("MERGE_DUPLICATE_PEOPLE", False)
|
||||
self.BLUR_THRESHOLD = _getenv_float("BLUR_THRESHOLD", 120.0)
|
||||
self.MIN_CONFIDENCE = _getenv_float("MIN_CONFIDENCE", 0.7)
|
||||
self.MAX_AUTO_IMAGES = _getenv_int("MAX_AUTO_IMAGES", 20)
|
||||
self.QUALITY_REPLACEMENT = os.getenv("QUALITY_REPLACEMENT", "true").lower() in ("true", "1", "yes")
|
||||
_ceiling_env = os.getenv("FRIGATE_SCORE_CEILING", "").strip()
|
||||
if _ceiling_env:
|
||||
try:
|
||||
self.FRIGATE_SCORE_CEILING = float(_ceiling_env)
|
||||
except ValueError:
|
||||
logging.warning("FRIGATE_SCORE_CEILING=%r is not a valid float — ignoring", _ceiling_env)
|
||||
self.FRIGATE_SCORE_CEILING = None
|
||||
else:
|
||||
self.FRIGATE_SCORE_CEILING = None
|
||||
self.ENABLE_FRIGATE_SCORES = os.getenv("ENABLE_FRIGATE_SCORES", "true").lower() in ("true", "1", "yes")
|
||||
self.QUALITY_REPLACEMENT = _getenv_bool("QUALITY_REPLACEMENT", True)
|
||||
self.FRIGATE_SCORE_CEILING = _getenv_optional_float("FRIGATE_SCORE_CEILING")
|
||||
self.ENABLE_FRIGATE_SCORES = _getenv_bool("ENABLE_FRIGATE_SCORES", True)
|
||||
self.FACE_MARGIN = _getenv_float("FACE_MARGIN", 0.15)
|
||||
self.USE_FULL_RESOLUTION = os.getenv("USE_FULL_RESOLUTION", "true").lower() in ("true", "1", "yes")
|
||||
self.ENABLE_FACE_ALIGNMENT = os.getenv("ENABLE_FACE_ALIGNMENT", "true").lower() in ("true", "1", "yes")
|
||||
self.ENABLE_CACHE = os.getenv("ENABLE_CACHE", "true").lower() in ("true", "1", "yes")
|
||||
self.USE_FULL_RESOLUTION = _getenv_bool("USE_FULL_RESOLUTION", True)
|
||||
self.ENABLE_FACE_ALIGNMENT = _getenv_bool("ENABLE_FACE_ALIGNMENT", True)
|
||||
self.ENABLE_CACHE = _getenv_bool("ENABLE_CACHE", True)
|
||||
_data_dir = os.getenv("DATA_DIR")
|
||||
_cache_dir_legacy = os.getenv("CACHE_DIR")
|
||||
if _data_dir:
|
||||
|
||||
Reference in New Issue
Block a user