import re _PASSWORD_RULES: tuple[tuple[re.Pattern[str], str], ...] = ( (re.compile(r".{10,}"), "Mindestens 10 Zeichen."), (re.compile(r"[A-Z]"), "Mindestens ein Großbuchstabe."), (re.compile(r"[a-z]"), "Mindestens ein Kleinbuchstabe."), (re.compile(r"\d"), "Mindestens eine Ziffer."), ) def password_policy_errors(password: str) -> list[str]: return [msg for pattern, msg in _PASSWORD_RULES if not pattern.search(password)] def validate_password_strength(password: str) -> None: errors = password_policy_errors(password) if errors: raise ValueError(errors[0])