"""Shippers for Mail and Packages.""" from __future__ import annotations from typing import TYPE_CHECKING from .amazon import AmazonShipper from .generic import GenericShipper from .post_de import PostDEShipper from .usps import USPSShipper if TYPE_CHECKING: from homeassistant.core import HomeAssistant from .base import Shipper SHIPPER_REGISTRY = { "amazon": AmazonShipper, "generic": GenericShipper, "post_de": PostDEShipper, "usps": USPSShipper, } def get_shipper_for_sensor( hass: HomeAssistant, config: dict, sensor_type: str, ) -> Shipper | None: """Return the appropriate shipper for the given sensor type.""" # Check specialized shippers first for name, shipper_class in SHIPPER_REGISTRY.items(): if name == "generic": continue if shipper_class.handles_sensor(sensor_type): return shipper_class(hass, config) # Fallback to generic if GenericShipper.handles_sensor(sensor_type): return GenericShipper(hass, config) return None