Source code for storm.exceptions
#
# Copyright (c) 2006, 2007 Canonical
#
# Written by Gustavo Niemeyer <gustavo@niemeyer.net>
#
# This file is part of Storm Object Relational Mapper.
#
# Storm is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as
# published by the Free Software Foundation; either version 2.1 of
# the License, or (at your option) any later version.
#
# Storm is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
from abc import ABCMeta
import types
from storm.compat import add_metaclass
[docs]@add_metaclass(ABCMeta)
class StormError(Exception):
pass
[docs]class CompileError(StormError):
pass
[docs]class NoTableError(CompileError):
pass
[docs]class ExprError(StormError):
pass
[docs]class NoneError(StormError):
pass
[docs]class PropertyPathError(StormError):
pass
[docs]class ClassInfoError(StormError):
pass
[docs]class URIError(StormError):
pass
[docs]class ClosedError(StormError):
pass
[docs]class FeatureError(StormError):
pass
[docs]class DatabaseModuleError(StormError):
pass
[docs]class StoreError(StormError):
pass
[docs]class NoStoreError(StormError):
pass
[docs]class WrongStoreError(StoreError):
pass
[docs]class NotFlushedError(StoreError):
pass
[docs]class OrderLoopError(StoreError):
pass
[docs]class NotOneError(StoreError):
pass
[docs]class UnorderedError(StoreError):
pass
[docs]class LostObjectError(StoreError):
pass
[docs]class Error(StormError):
pass
[docs]class Warning(StormError):
pass
[docs]class InterfaceError(Error):
pass
[docs]class DatabaseError(Error):
pass
[docs]class InternalError(DatabaseError):
pass
[docs]class OperationalError(DatabaseError):
pass
[docs]class ProgrammingError(DatabaseError):
pass
[docs]class IntegrityError(DatabaseError):
pass
[docs]class DataError(DatabaseError):
pass
[docs]class NotSupportedError(DatabaseError):
pass
[docs]class DisconnectionError(OperationalError):
pass
[docs]class TimeoutError(StormError):
"""Raised by timeout tracers when remining time is over."""
def __init__(self, statement, params, message=None):
self.statement = statement
self.params = params
self.message = message
def __str__(self):
return ', '.join(
[repr(element) for element in
(self.message, self.statement, self.params)
if element is not None])
[docs]class ConnectionBlockedError(StormError):
"""Raised when an attempt is made to use a blocked connection."""
[docs]def install_exceptions(module):
for exception in (Error, Warning, DatabaseError, InternalError,
OperationalError, ProgrammingError, IntegrityError,
DataError, NotSupportedError, InterfaceError):
module_exception = getattr(module, exception.__name__, None)
if (module_exception is not None and
isinstance(module_exception, type)):
# XXX This may need to be revisited when porting to Python 3 if
# virtual subclasses are still ignored for exception handling
# (https://bugs.python.org/issue12029).
exception.register(module_exception)