-
Notifications
You must be signed in to change notification settings - Fork 158
feat: error message return from api #235
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Nit: please drop the |
google/cloud/storage/blob.py
Outdated
if response.text: | ||
error_message = response.text + ": " + str(error) | ||
else: | ||
error_message = "unknown error: " + str(error) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd prefer not to add the prefix here. @frankyn WDYT?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you clarify the difference between response.text and error (add comments I suspect others will ask this question when reviewing the code in the future).
I also think repsonse.text could be added to the line below when constructing the message
value instead of this conditional.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@frankyn I have added condition here to match the method which is responsible for other http responses and errors declared in pytho-api-core.exceptions.from_http_response
you can find here https://github.com/googleapis/python-api-core/blob/622931721ce34839d630aa1e974c7d8f47b5d25e/google/api_core/exceptions.py#L390-L411
response.text:
gives the actual reason of error
str(error):
gives ('Request failed with status code', 404(Error Code), 'Expected one of', <HTTPStatus.OK: 200>, <HTTPStatus.PARTIAL_CONTENT: 206>)
I think here we can remove str(error)
as it's not meaning full for the users, also not included in other http methods from python-api-core as mention above.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think I need to pull in @andrewsg on this one when he has a moment.
Andrew do you have guidance on raising the actual error that occurred in this case?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If I understand correctly, the problem here is the same as I've observed elsewhere where the API responds with human-readable text which is not converted into a specific error message by our client library. Prepending this human-readable text does make sense though I'm neutral on whether we should include the "unknown error" prepending in the else
case.
We should make sure that the traceback still includes the original function call that caused the error.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @andrewsg.
I don't see the value of unknown error:
and could be confusing otherwise. Please only preppend response.text
when it's available. Remove unknown error:
.
google/cloud/storage/blob.py
Outdated
if response.text: | ||
error_message = response.text + ": " + str(error) | ||
else: | ||
error_message = "unknown error: " + str(error) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you clarify the difference between response.text and error (add comments I suspect others will ask this question when reviewing the code in the future).
I also think repsonse.text could be added to the line below when constructing the message
value instead of this conditional.
…into storage_issue_224
…into storage_issue_224
…into storage_issue_224
* feat(storage): error message retyrn from api * feat: add comment for clarification * fix: remove unknown error Co-authored-by: Tres Seaver <[email protected]> Co-authored-by: Frank Natividad <[email protected]>
* feat(storage): error message retyrn from api * feat: add comment for clarification * fix: remove unknown error Co-authored-by: Tres Seaver <[email protected]> Co-authored-by: Frank Natividad <[email protected]>
Fixes #224 🦕