from collections.abc import Mapping CHAT_MESSAGE_MAX_LENGTH_KEY = "chat.message.max_length" CHAT_MESSAGE_TRANSPORT_MAX_LENGTH = 10_000 def validate_chat_settings(values: Mapping[str, str]) -> None: raw = values.get(CHAT_MESSAGE_MAX_LENGTH_KEY) if raw is None: return try: value = int(raw) except (TypeError, ValueError) as error: raise ValueError(f"{CHAT_MESSAGE_MAX_LENGTH_KEY}: integer value expected") from error if str(value) != raw: raise ValueError(f"{CHAT_MESSAGE_MAX_LENGTH_KEY}: canonical integer value expected") if not 1 <= value <= CHAT_MESSAGE_TRANSPORT_MAX_LENGTH: raise ValueError( f"{CHAT_MESSAGE_MAX_LENGTH_KEY}: value must be between 1 " f"and {CHAT_MESSAGE_TRANSPORT_MAX_LENGTH}" )