import re
import unicodedata


def slugify(value: str) -> str:
    """
    Converts to lowercase, removes non-word characters (alphanumerics and underscores) \
    and converts spaces to hyphens. Also strips leading and trailing whitespace.
    """
    value = (
        unicodedata.normalize("NFKD", value).encode("ascii", "ignore").decode("ascii")
    )
    value = re.sub(r"[^\w\s-]", "", value).strip().lower()
    return re.sub(r"[-_\s]+", "-", value).strip("-")
