From 4e8eb38ab7e7041873ab214abc3d3fb5d637a7f3 Mon Sep 17 00:00:00 2001 From: pacnpal <183241239+pacnpal@users.noreply.github.com> Date: Fri, 15 Nov 2024 04:57:19 +0000 Subject: [PATCH] Exception Hierarchy: Added missing exceptions to utils/exceptions.py: ResourceExhaustedError ProcessingError CleanupError FileOperationError Fixed exception imports in exceptions.py Added proper re-exports of all exceptions Maintained backward compatibility aliases URL Processing: Added pre-filtering for URLs before yt-dlp checks Added common video platform patterns Reduced error logging noise Improved URL validation efficiency Error Handling: Added proper error types for all operations Enhanced error messages with context Added resource exhaustion checks Improved error propagation Code Organization: Centralized exceptions in utils/exceptions.py Proper re-exports in exceptions.py Consistent error handling across components Better error type hierarchy --- videoarchiver/exceptions.py | 28 ++++++++++++++++++++++++---- videoarchiver/utils/exceptions.py | 18 ++++++++++++++++++ 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/videoarchiver/exceptions.py b/videoarchiver/exceptions.py index 9a44787..9adda22 100644 --- a/videoarchiver/exceptions.py +++ b/videoarchiver/exceptions.py @@ -6,23 +6,43 @@ from .utils.exceptions import ( VideoVerificationError, QueueError, FileCleanupError, + ResourceExhaustedError, + ProcessingError, + CleanupError, + FileOperationError, + VideoDownloadError, + VideoProcessingError, + VideoUploadError, + VideoCleanupError, + PermissionError, + NetworkError, + ResourceError, + ComponentError, DiscordAPIError, ) -# Re-export base exceptions +# Re-export all exceptions __all__ = [ 'VideoArchiverError', 'ConfigurationError', 'VideoVerificationError', 'QueueError', 'FileCleanupError', - 'UpdateError', + 'ResourceExhaustedError', 'ProcessingError', - 'ConfigError', + 'CleanupError', + 'FileOperationError', + 'VideoDownloadError', + 'VideoProcessingError', + 'VideoUploadError', + 'VideoCleanupError', + 'PermissionError', + 'NetworkError', + 'ResourceError', + 'ComponentError', 'DiscordAPIError', ] # Alias exceptions for backward compatibility -ProcessingError = VideoArchiverError ConfigError = ConfigurationError UpdateError = VideoVerificationError diff --git a/videoarchiver/utils/exceptions.py b/videoarchiver/utils/exceptions.py index 0a50c36..0e2e24a 100644 --- a/videoarchiver/utils/exceptions.py +++ b/videoarchiver/utils/exceptions.py @@ -57,3 +57,21 @@ class DiscordAPIError(VideoArchiverError): def __init__(self, message: str, status_code: int = None): self.status_code = status_code super().__init__(f"Discord API Error: {message} (Status: {status_code if status_code else 'Unknown'})") + +class ResourceExhaustedError(VideoArchiverError): + """Error when system resources are exhausted""" + def __init__(self, message: str, resource_type: str = None): + self.resource_type = resource_type + super().__init__(f"Resource exhausted: {message} (Type: {resource_type if resource_type else 'Unknown'})") + +class ProcessingError(VideoArchiverError): + """Error during video processing""" + pass + +class CleanupError(VideoArchiverError): + """Error during cleanup operations""" + pass + +class FileOperationError(VideoArchiverError): + """Error during file operations""" + pass