| from __future__ import annotations | |
| from collections.abc import Iterable | |
| from typing import Any | |
| def normalize_and_dedupe_strings(items: Iterable[Any] | None) -> list[str]: | |
| if items is None: | |
| return [] | |
| normalized: list[str] = [] | |
| seen: set[str] = set() | |
| for item in items: | |
| if not isinstance(item, str): | |
| continue | |
| cleaned = item.strip() | |
| if not cleaned or cleaned in seen: | |
| continue | |
| seen.add(cleaned) | |
| normalized.append(cleaned) | |
| return normalized | |