class VaultError(Exception): pass class DuplicateNameError(ValueError, VaultError): def __init__(self, cls, name): self.msg = f"Duplicate name {name!r} in class {cls.__name__!r}" super().__init__(self.msg) self.cls = cls self.name = name class InvalidCipherStringError(VaultError, ValueError): pass class Base64DecodeError(VaultError, ValueError): def __init__(self, name, value): self.msg = f"Cannot decode {value!r} for {name!r}" super().__init__(self.msg) self.name = name self.value = value class EncryptionTypeNotImplementedError(VaultError, ValueError): pass