def validate_password()

in contrib/vm_builder/vm_builder.py [0:0]


def validate_password(password: str) -> bool:
    """ Checks that the password is valid.

    Args:
        password: password string

    Returns: True if valid, else false.
    """

    if len(password) < 12 or len(password) > 123:
        print_formatted_text(
            HTML(
                (
                    "<ansired>Input must be between 12 and 123 characters. "
                    "Please try again.</ansired>"
                )
            )
        )
        return False

    if (
        len([c for c in password if c.islower()]) <= 0
        or len([c for c in password if c.isupper()]) <= 0
    ):
        print_formatted_text(
            HTML(
                (
                    "<ansired>Input must contain a upper and a lower case "
                    "character. Please try again.</ansired>"
                )
            )
        )
        return False

    if len([c for c in password if c.isdigit()]) <= 0:
        print_formatted_text(
            HTML(
                "<ansired>Input must contain a digit. Please try again.</ansired>"
            )
        )
        return False

    if len(re.findall("[\W_]", password)) <= 0:
        print_formatted_text(
            HTML(
                (
                    "<ansired>Input must contain a special character. "
                    "Please try again.</ansired>"
                )
            )
        )
        return False

    return True