瀏覽代碼

move Backup*Error to errors module

Thomas Waldmann 1 年之前
父節點
當前提交
c2e8bb0468
共有 2 個文件被更改,包括 37 次插入36 次删除
  1. 1 36
      src/borg/archive.py
  2. 36 0
      src/borg/helpers/errors.py

+ 1 - 36
src/borg/archive.py

@@ -25,6 +25,7 @@ from .crypto.key import key_factory, UnsupportedPayloadError
 from .compress import Compressor, CompressionSpec
 from .constants import *  # NOQA
 from .crypto.low_level import IntegrityError as IntegrityErrorBase
+from .helpers import BackupError, BackupOSError, BackupRaceConditionError
 from .hashindex import ChunkIndex, ChunkIndexEntry, CacheSynchronizer
 from .helpers import Manifest
 from .helpers import hardlinkable
@@ -177,42 +178,6 @@ def is_special(mode):
     return stat.S_ISBLK(mode) or stat.S_ISCHR(mode) or stat.S_ISFIFO(mode)
 
 
-class BackupError(Exception):
-    """
-    Exception raised for non-OSError-based exceptions while accessing backup files.
-    """
-
-
-class BackupRaceConditionError(BackupError):
-    """
-    Exception raised when encountering a critical race condition while trying to back up a file.
-    """
-
-
-class BackupOSError(Exception):
-    """
-    Wrapper for OSError raised while accessing backup files.
-
-    Borg does different kinds of IO, and IO failures have different consequences.
-    This wrapper represents failures of input file or extraction IO.
-    These are non-critical and are only reported (exit code = 1, warning).
-
-    Any unwrapped IO error is critical and aborts execution (for example repository IO failure).
-    """
-    def __init__(self, op, os_error):
-        self.op = op
-        self.os_error = os_error
-        self.errno = os_error.errno
-        self.strerror = os_error.strerror
-        self.filename = os_error.filename
-
-    def __str__(self):
-        if self.op:
-            return f'{self.op}: {self.os_error}'
-        else:
-            return str(self.os_error)
-
-
 class BackupIO:
     op = ''
 

+ 36 - 0
src/borg/helpers/errors.py

@@ -104,3 +104,39 @@ class BackupExcWarning(BorgWarning):
     exit_mcode = 102
 
     # TODO: override exit_code and compute the exit code based on the wrapped exception.
+
+
+class BackupError(Exception):
+    """
+    Exception raised for non-OSError-based exceptions while accessing backup files.
+    """
+
+
+class BackupRaceConditionError(BackupError):
+    """
+    Exception raised when encountering a critical race condition while trying to back up a file.
+    """
+
+
+class BackupOSError(Exception):
+    """
+    Wrapper for OSError raised while accessing backup files.
+
+    Borg does different kinds of IO, and IO failures have different consequences.
+    This wrapper represents failures of input file or extraction IO.
+    These are non-critical and are only reported (exit code = 1, warning).
+
+    Any unwrapped IO error is critical and aborts execution (for example repository IO failure).
+    """
+    def __init__(self, op, os_error):
+        self.op = op
+        self.os_error = os_error
+        self.errno = os_error.errno
+        self.strerror = os_error.strerror
+        self.filename = os_error.filename
+
+    def __str__(self):
+        if self.op:
+            return f'{self.op}: {self.os_error}'
+        else:
+            return str(self.os_error)