def METHOD_NAME(username:str, password:str, email:str, full_name:str):
    """
    Given a parsed parameters, try register a new user
    knowing that it follows a public register flow.
    This can raise `exc.IntegrityError` exceptions in
    case of conflics found.
    :returns: User
    """
    is_registered, reason = is_user_already_registered(username=username, email=email)
    if is_registered:
        raise exc.WrongArguments(reason)
    user_model = get_user_model()
    user = user_model(username=username,
                      email=email,
                      email_token=str(uuid.uuid4()),
                      new_email=email,
                      verified_email=False,
                      full_name=full_name,
                      read_new_terms=True)
    user.set_password(password)
    try:
        user.save()
    except IntegrityError:
        raise exc.WrongArguments(_("User is already registered."))
    send_register_email(user)
    user_registered_signal.send(sender=user.__class__, user=user)
    return user