"""This module defines Maestral's error classes. It should be kept free of memory heavyimports.All errors inherit from :exc:`MaestralApiError` which has title and message attributesto display the error to the user. Errors which are related to syncing a specificfile or folder inherit from :exc:`SyncError`, a subclass of :exc:`MaestralApiError`."""from__future__importannotations
[docs]classMaestralApiError(Exception):"""Base class for Maestral errors MaestralApiError provides attributes that can be used to generate human-readable error messages and metadata regarding affected file paths (if any). Errors originating from the Dropbox API or the 'local API' both inherit from MaestralApiError. :param title: A short description of the error type. This can be used in a CLI or GUI to give a short error summary. :param message: A more verbose description which can include instructions on how to proceed to fix the error. :param dbx_path: Dropbox path of the item that caused the error. :param dbx_path_from: Dropbox origin path of the item that caused the error. This should be set for instance when error occurs when moving an item. :param local_path: Local path of the item that caused the error. :param local_path_from: Local origin path of the item that caused the error. This should be set for instance when error occurs when moving an item. """def__init__(self,title:str,message:str="",dbx_path:str|None=None,dbx_path_from:str|None=None,local_path:str|None=None,local_path_from:str|None=None,)->None:super().__init__(f"{title}. {message}")self.title=titleself.message=messageself.dbx_path=dbx_pathself.dbx_path_from=dbx_path_fromself.local_path=local_pathself.local_path_from=local_path_fromdef__str__(self)->str:returnf"{self.title}. {self.message}"
[docs]classSyncError(MaestralApiError):"""Base class for recoverable sync issues."""
[docs]classDataCorruptionError(SyncError):"""Raised when data is corrupted in transit during upload or download."""
[docs]classDataChangedError(SyncError):"""Raised when file changes during upload."""
[docs]classInsufficientPermissionsError(SyncError):"""Raised when accessing a file or folder fails due to insufficient permissions, both locally and on Dropbox servers."""
[docs]classInsufficientSpaceError(SyncError):"""Raised when the Dropbox account or local drive has insufficient storage space."""
[docs]classPathError(SyncError):"""Raised when there is an issue with the provided file or folder path such as invalid characters or a too long file name."""
[docs]classNotFoundError(SyncError):"""Raised when a file or folder is requested but does not exist."""
[docs]classConflictError(SyncError):"""Raised when trying to create a file or folder which already exists."""
[docs]classFileConflictError(ConflictError):"""Raised when trying to create a file which already exists."""
[docs]classFolderConflictError(SyncError):"""Raised when trying to create or folder which already exists."""
[docs]classIsAFolderError(SyncError):"""Raised when a file is required but a folder is provided."""
[docs]classNotAFolderError(SyncError):"""Raised when a folder is required but a file is provided."""
[docs]classDropboxServerError(SyncError):"""Raised in case of internal Dropbox errors."""
[docs]classRestrictedContentError(SyncError):"""Raised when trying to sync restricted content, for instance when adding a file with a DMCA takedown notice to a public folder."""
[docs]classUnsupportedFileError(SyncError):"""Raised when this file type cannot be downloaded but only exported. This is the case for G-suite files."""
[docs]classFileSizeError(SyncError):"""Raised when attempting to upload a file larger than 350 GB in an upload session or larger than 150 MB in a single upload. Also raised when attempting to download a file with a size that exceeds file system's limit."""
[docs]classFileReadError(SyncError):"""Raised when reading a local file failed."""
[docs]classSymlinkError(SyncError):"""Raised when we cannot sync a symlink."""
# ==== errors which are not related to a specific sync event ===========================
[docs]classDropboxConnectionError(MaestralApiError):"""Raised when the connection to Dropbox fails"""
[docs]classCancelledError(MaestralApiError):"""Raised when syncing is cancelled by the user."""
[docs]classNotLinkedError(MaestralApiError):"""Raised when no Dropbox account is linked."""
[docs]classInvalidDbidError(MaestralApiError):"""Raised when the given Dropbox ID does not correspond to an existing account."""
[docs]classKeyringAccessError(MaestralApiError):"""Raised when retrieving a saved auth token from the user keyring fails."""
[docs]classNoDropboxDirError(MaestralApiError):"""Raised when the local Dropbox folder cannot be found."""
[docs]classCacheDirError(MaestralApiError):"""Raised when creating the cache directory fails."""
[docs]classInotifyError(MaestralApiError):"""Raised when the local Dropbox folder is too large to monitor with inotify."""
[docs]classOutOfMemoryError(MaestralApiError):"""Raised when there is insufficient memory to complete an operation."""
[docs]classDatabaseError(MaestralApiError):"""Raised when reading or writing to the database fails."""
[docs]classDropboxAuthError(MaestralApiError):"""Raised when authentication fails."""
[docs]classTokenExpiredError(DropboxAuthError):"""Raised when authentication fails because the user's token has expired."""
[docs]classTokenRevokedError(DropboxAuthError):"""Raised when authentication fails because the user's token has been revoked."""
[docs]classCursorResetError(MaestralApiError):"""Raised when the cursor used for a longpoll or list-folder request has been invalidated. Dropbox will very rarely invalidate a cursor. If this happens, a new cursor for the respective folder has to be obtained through files_list_folder. This may require re-syncing the entire Dropbox."""
[docs]classBadInputError(MaestralApiError):"""Raised when an API request is made with bad input. This should not happen during syncing but only in case of manual API calls."""
[docs]classBusyError(MaestralApiError):"""Raised when trying to perform an action which is only possible in the idle state and we cannot block or queue the job."""
[docs]classUnsupportedFileTypeForDiff(MaestralApiError):"""Raised when a diff for an unsupported file type was issued."""
[docs]classSharedLinkError(MaestralApiError):"""Raised when creating a shared link fails."""
[docs]classPathRootError(MaestralApiError):"""Raised when making an API call with an invalid path root header."""
[docs]classUpdateCheckError(MaestralApiError):"""Raised when checking for updates fails."""