arcade-mcp/toolkits/google/arcade_google/exceptions.py

70 lines
1.9 KiB
Python

from zoneinfo import available_timezones
from arcade.sdk.errors import RetryableToolError
class GoogleToolError(Exception):
"""Base exception for Google tool errors."""
def __init__(self, message: str, developer_message: str | None = None):
self.message = message
self.developer_message = developer_message
super().__init__(self.message)
def __str__(self) -> str:
base_message = self.message
if self.developer_message:
return f"{base_message} (Developer: {self.developer_message})"
return base_message
class RetryableGoogleToolError(RetryableToolError):
"""Raised when there's an error in a Google tool that can be retried."""
pass
class GoogleServiceError(GoogleToolError):
"""Raised when there's an error building or using the Google service."""
pass
class GmailToolError(GoogleToolError):
"""Raised when there's an error in the Gmail tools."""
pass
class GoogleCalendarToolError(GoogleToolError):
"""Raised when there's an error in the Google Calendar tools."""
pass
class InvalidTimezoneError(RetryableGoogleToolError):
"""Raised when a timezone is provided that is not supported by Python's zoneinfo."""
def __init__(self, timezone_str: str):
self.timezone_str = timezone_str
available_timezones_msg = (
"Here is a list of valid timezones (from Python's zoneinfo.available_timezones()): "
f"{available_timezones()}"
)
super().__init__(
f"Invalid timezone: '{timezone_str}'",
developer_message=available_timezones_msg,
additional_prompt_content=available_timezones_msg,
)
class GoogleDriveToolError(GoogleToolError):
"""Raised when there's an error in the Google Drive tools."""
pass
class GoogleDocsToolError(GoogleToolError):
"""Raised when there's an error in the Google Docs tools."""
pass