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)