fix: address 10 full-codebase audit findings + lint
Correctness:
- jobs: cap auto-diversity limit for brand-new people (was never capped,
could exceed MAX_AUTO_IMAGES on first run)
- image_processing: separate None/0 guard for imageWidth/imageHeight so
missing field is explicit rather than silently aliased to img_w
- upload_tracker (_mark, update_frigate_count): copy-before-mutate so
exceptions between cache access and _save don't corrupt in-process state
- jobs: reject LIMIT=0 on no-embedding path (was silently empty run)
- jobs: add STRATEGY=skip to strategy_map so env var is honoured
- embeddings: convert to RGB before cvtColor so RGBA/grayscale thumbnails
don't raise cv2.error and silently drop from diversity selection
- config: use falsy guard for OUTPUT_DIR so blank env var falls through
to config file value
- reconcile: _ts() returns float("inf") on parse failure so unrecognised
filenames sort last instead of collapsing to 0.0 and corrupting FIFO mapping
- diversity: remove dead selected_set (never read; -np.inf sentinel already
prevents re-selection)
Lint (ruff):
- executor: sort upload_tracker import block (I001)
- executor: replace lambda is_better_than with operator.lt/gt (E731 x2)
- executor, upload_tracker: wrap long logger.warning calls (E501 x4)
This commit is contained in:
+20
-8
@@ -1,6 +1,7 @@
|
||||
"""Execution phase: image processing and Frigate upload."""
|
||||
|
||||
import logging
|
||||
import operator
|
||||
import os
|
||||
import shutil
|
||||
from io import BytesIO
|
||||
@@ -27,8 +28,10 @@ from .log_config import console
|
||||
from .quality import blur_score_from_image
|
||||
from .reconcile import enrich_asset_with_face_data, reconcile_frigate_mappings
|
||||
from .upload_tracker import (
|
||||
UPLOAD_TRACKER_FILE,
|
||||
REJECT_TRACKER_FILE,
|
||||
UPLOAD_TRACKER_FILE,
|
||||
begin_batch,
|
||||
flush_batch,
|
||||
get_lowest_quality_mapped_file,
|
||||
get_most_redundant_mapped_file,
|
||||
get_tracked_frigate_file_count,
|
||||
@@ -36,8 +39,6 @@ from .upload_tracker import (
|
||||
has_frigate_scores,
|
||||
mark_rejected,
|
||||
mark_uploaded,
|
||||
begin_batch,
|
||||
flush_batch,
|
||||
remove_frigate_file,
|
||||
remove_frigate_files_batch,
|
||||
)
|
||||
@@ -452,13 +453,13 @@ def upload_to_frigate(jobs: list[dict]) -> None:
|
||||
get_target = get_most_redundant_mapped_file
|
||||
score_label, better_note = "frigate", " (more novel)"
|
||||
no_score_msg = "Frigate recognize unavailable, skipping replacement"
|
||||
is_better_than = lambda c, t: c < t
|
||||
is_better_than = operator.lt
|
||||
else:
|
||||
candidate_score = score_map.get(fname)
|
||||
get_target = get_lowest_quality_mapped_file
|
||||
score_label, better_note = "blur", ""
|
||||
no_score_msg = "no quality score, skipping replacement"
|
||||
is_better_than = lambda c, t: c > t
|
||||
is_better_than = operator.gt
|
||||
|
||||
if candidate_score is None:
|
||||
progress.console.print(f" [dim]⏭ {fname}: {no_score_msg}[/dim]")
|
||||
@@ -489,7 +490,10 @@ def upload_to_frigate(jobs: list[dict]) -> None:
|
||||
effective_count -= 1
|
||||
min_quality_score_for_slot = None if using_fscore else target_score
|
||||
else:
|
||||
logger.warning("Failed to delete %s for %s, skipping replacement", target_frigate_file, name)
|
||||
logger.warning(
|
||||
"Failed to delete %s for %s, skipping replacement",
|
||||
target_frigate_file, name,
|
||||
)
|
||||
failed_deletes.add(target_frigate_file)
|
||||
progress.advance(upload_task)
|
||||
continue
|
||||
@@ -603,11 +607,19 @@ def upload_to_frigate(jobs: list[dict]) -> None:
|
||||
try:
|
||||
flush_batch(UPLOAD_TRACKER_FILE)
|
||||
except Exception as _flush_exc:
|
||||
logger.warning("flush_batch failed during cleanup — batch will be recovered on next begin_batch: %s", _flush_exc)
|
||||
logger.warning(
|
||||
"flush_batch failed during cleanup"
|
||||
" — batch will be recovered on next begin_batch: %s",
|
||||
_flush_exc,
|
||||
)
|
||||
try:
|
||||
flush_batch(REJECT_TRACKER_FILE)
|
||||
except Exception as _flush_exc:
|
||||
logger.warning("flush_batch failed during cleanup — batch will be recovered on next begin_batch: %s", _flush_exc)
|
||||
logger.warning(
|
||||
"flush_batch failed during cleanup"
|
||||
" — batch will be recovered on next begin_batch: %s",
|
||||
_flush_exc,
|
||||
)
|
||||
|
||||
# Batch-map Frigate filenames to asset IDs now that all uploads are done.
|
||||
if actually_uploaded and not _skip_reconcile:
|
||||
|
||||
Reference in New Issue
Block a user