V4ldeLund's picture
Fix SAM3 optional import; upload full code
24113f1 verified
from segmenters.base_segmenter import BaseSegmenter
# SAM3 is optional; import lazily to avoid crashing when the model is unavailable
try:
from segmenters.sam3 import SAM3Segmenter # type: ignore
except Exception as _sam3_err: # pragma: no cover - best-effort optional import
SAM3Segmenter = None # type: ignore
_SAM3_IMPORT_ERROR = _sam3_err
from segmenters.pca_segmenter import PCASegmenter
"""
Model registry for segmenters
"""
_SEGMENTERS = {}
if SAM3Segmenter is not None:
_SEGMENTERS["sam3"] = SAM3Segmenter
if PCASegmenter is not None:
_SEGMENTERS["pca"] = PCASegmenter
def get_segmenter(name: str, **kwargs):
if name not in _SEGMENTERS:
available = list(_SEGMENTERS)
msg = f"Unknown segmenter '{name}'. Available: {available}"
if name == "sam3" and 'SAM3Segmenter' in globals() and SAM3Segmenter is None:
msg += f". SAM3 import error: {_SAM3_IMPORT_ERROR}"
raise ValueError(msg)
return _SEGMENTERS[name](**kwargs)