From 2e2851dc13d73352530dd4495c7e05603b2e520d Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 10 Apr 2024 23:38:38 +0200 Subject: Adding upstream version 2.1.2~dev0+20240219. Signed-off-by: Daniel Baumann --- deluge/error.py | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 deluge/error.py (limited to 'deluge/error.py') diff --git a/deluge/error.py b/deluge/error.py new file mode 100644 index 0000000..d542dc2 --- /dev/null +++ b/deluge/error.py @@ -0,0 +1,96 @@ +# +# Copyright (C) 2008 Andrew Resch +# Copyright (C) 2011 Pedro Algarvio +# +# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with +# the additional special exception to link portions of this program with the OpenSSL library. +# See LICENSE for more details. +# + + +class DelugeError(Exception): + def __new__(cls, *args, **kwargs): + inst = super().__new__(cls, *args, **kwargs) + inst._args = args + inst._kwargs = kwargs + return inst + + def __init__(self, message=None): + super().__init__(message) + self.message = message + + def __str__(self): + return self.message + + +class DaemonRunningError(DelugeError): + pass + + +class InvalidTorrentError(DelugeError): + pass + + +class AddTorrentError(DelugeError): + pass + + +class InvalidPathError(DelugeError): + pass + + +class WrappedException(DelugeError): + def __init__(self, message, exception_type, traceback): + super().__init__(message) + self.type = exception_type + self.traceback = traceback + + def __str__(self): + return f'{self.message}\n{self.traceback}' + + +class _ClientSideRecreateError(DelugeError): + pass + + +class IncompatibleClient(_ClientSideRecreateError): + def __init__(self, daemon_version): + self.daemon_version = daemon_version + msg = ( + 'Your deluge client is not compatible with the daemon. ' + 'Please upgrade your client to %(daemon_version)s' + ) % {'daemon_version': self.daemon_version} + super().__init__(message=msg) + + +class NotAuthorizedError(_ClientSideRecreateError): + def __init__(self, current_level, required_level): + msg = ('Auth level too low: %(current_level)s < %(required_level)s') % { + 'current_level': current_level, + 'required_level': required_level, + } + super().__init__(message=msg) + self.current_level = current_level + self.required_level = required_level + + +class _UsernameBasedPasstroughError(_ClientSideRecreateError): + def __init__(self, message, username): + super().__init__(message) + self.username = username + + +class BadLoginError(_UsernameBasedPasstroughError): + pass + + +class AuthenticationRequired(_UsernameBasedPasstroughError): + pass + + +class AuthManagerError(_UsernameBasedPasstroughError): + pass + + +class LibtorrentImportError(ImportError): + pass -- cgit v1.2.3