Just remembered where the sign_algorithm and sign_version are checked and raised. See line 173 in the canonicalize_request method.