feat: add BlaxelAPIError base exception for unified error handling#138
Open
devin-ai-integration[bot] wants to merge 1 commit into
Open
feat: add BlaxelAPIError base exception for unified error handling#138devin-ai-integration[bot] wants to merge 1 commit into
devin-ai-integration[bot] wants to merge 1 commit into
Conversation
- Create BlaxelAPIError base class in client/errors.py - Make UnexpectedStatus extend BlaxelAPIError - Make SandboxAPIError, DriveAPIError, VolumeAPIError extend BlaxelAPIError - Make ResponseError extend BlaxelAPIError - Add error_to_exception() utility to convert Error data model - Export BlaxelAPIError and error_to_exception from blaxel.core Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Contributor
Author
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
Contributor
There was a problem hiding this comment.
LGTM
Clean, focused change with no security issues, correctness bugs, or data loss risks. Backward compatibility is preserved — subclass code attributes are retained and existing except SandboxAPIError etc. still work. The error_to_exception() message fallback (error.message → error.error) is correct given error.error is a required str field.
Tag @mendral-app with feedback or questions. View session
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Introduces a common
BlaxelAPIErrorbase exception so users can catch all Blaxel API errors with a singleexceptclause:Changes
BlaxelAPIErrorbase class insrc/blaxel/core/client/errors.pywithstatus_code,error_code, andresponsefields.UnexpectedStatusnow extendsBlaxelAPIError(mapsstatus_code).SandboxAPIErrornow extendsBlaxelAPIError(mapscode→error_code).DriveAPIErrornow extendsBlaxelAPIError(mapscode→error_code).VolumeAPIErrornow extendsBlaxelAPIError(mapscode→error_code).ResponseErrornow extendsBlaxelAPIError(extractsstatus_codefromresponse).error_to_exception()utility function to convert the auto-generatedErrordata model to aBlaxelAPIError(avoids editing generated code).BlaxelAPIErroranderror_to_exceptionare exported fromblaxel.core.Backward compatibility
All existing subclass names and signatures are preserved. The only change is their parent class (
Exception→BlaxelAPIError→Exception), so existingexcept SandboxAPIErroretc. still work.Review & Testing Checklist for Human
except BlaxelAPIErrorcatchesSandboxAPIError,DriveAPIError,VolumeAPIError,UnexpectedStatus, andResponseErroras expectedcodeattribute is still accessible (backward compat) alongside the newerror_codeon the baseuv run pytest tests/integration/ -v -s) to validate no regressionsNotes
Errordata model inclient/models/error.pyis auto-generated and was not modified. Instead, a free functionerror_to_exception()converts it to aBlaxelAPIError.UnexpectedStatus(sandbox/client/errors.py) is also auto-generated and was left unchanged.Link to Devin session: https://app.devin.ai/sessions/7413077191c34b82b10658a946cc1918
Requested by: @Joffref
Note
Introduces
BlaxelAPIErroras a common base exception for all Blaxel API error types (UnexpectedStatus,SandboxAPIError,DriveAPIError,VolumeAPIError,ResponseError), plus anerror_to_exception()utility to convert the auto-generatedErrormodel. Both are exported fromblaxel.core.Written by Mendral for commit 62a3e67.