montydb/errors.py
def init_bson_err():
import sys
from .types import bson
this = sys.modules[__name__]
class DocumentTooLarge(bson.InvalidDocument):
"""Raised when an encoded document is too large.
"""
setattr(this, "BSONError", bson.BSONError)
setattr(this, "InvalidId", bson.InvalidId)
setattr(this, "InvalidDocument", bson.InvalidDocument)
setattr(this, "DocumentTooLarge", DocumentTooLarge)
class MontyError(Exception):
"""Base class for all Montydb exceptions."""
class ConfigurationError(MontyError):
"""Raised when something is incorrectly configured.
"""
class OperationFailure(MontyError):
"""Raised when a database operation fails.
"""
def __init__(self, error, code=None, details=None):
self.__code = code
self.__details = details
MontyError.__init__(self, error)
@property
def code(self):
return self.__code
@property
def details(self):
return self.__details
def has_label(self, label):
if label == "TemporaryTxnFailure":
# WriteConflict, TransactionAborted, and NoSuchTransaction.
return self.__code in (112, 244, 251)
return False
class InvalidOperation(MontyError):
"""Raised when a client attempts to perform an invalid operation."""
class InvalidName(MontyError):
"""Raised when an invalid name is used.
"""
class CollectionInvalid(MontyError):
"""Raised when collection validation fails.
"""
class WriteError(OperationFailure):
"""Base exception type for errors raised during write operations.
"""
class DuplicateKeyError(WriteError):
"""Raised when an insert or update fails due to a duplicate key error."""
class BulkWriteError(OperationFailure):
"""Exception class for bulk write errors.
.. versionadded:: 2.7
"""
def __init__(self, results):
OperationFailure.__init__(
self, "batch op errors occurred", 65, results)