Reorganize exceptions, centralize UnicodeMixin

This commit is contained in:
Adam Holmberg
2015-02-11 15:44:28 -06:00
parent 4e348952e8
commit e9702534bc
16 changed files with 65 additions and 88 deletions

View File

@@ -12,6 +12,9 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import six
# compaction # compaction
SizeTieredCompactionStrategy = "SizeTieredCompactionStrategy" SizeTieredCompactionStrategy = "SizeTieredCompactionStrategy"
LeveledCompactionStrategy = "LeveledCompactionStrategy" LeveledCompactionStrategy = "LeveledCompactionStrategy"
@@ -21,3 +24,18 @@ CACHING_ALL = "ALL"
CACHING_KEYS_ONLY = "KEYS_ONLY" CACHING_KEYS_ONLY = "KEYS_ONLY"
CACHING_ROWS_ONLY = "ROWS_ONLY" CACHING_ROWS_ONLY = "ROWS_ONLY"
CACHING_NONE = "NONE" CACHING_NONE = "NONE"
class CQLEngineException(Exception):
pass
class ValidationError(CQLEngineException):
pass
class UnicodeMixin(object):
if six.PY3:
__str__ = lambda x: x.__unicode__()
else:
__str__ = lambda x: six.text_type(x).encode('utf-8')

View File

@@ -17,24 +17,16 @@ from datetime import date, datetime
import logging import logging
import re import re
import six import six
import sys
import warnings import warnings
from cassandra.cqltypes import DateType from cassandra.cqltypes import DateType
from cassandra.encoder import cql_quote from cassandra.encoder import cql_quote
from cassandra.cqlengine.exceptions import ValidationError
from cassandra.cqlengine import ValidationError
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
# move to central spot
class UnicodeMixin(object):
if sys.version_info > (3, 0):
__str__ = lambda x: x.__unicode__()
else:
__str__ = lambda x: six.text_type(x).encode('utf-8')
class BaseValueManager(object): class BaseValueManager(object):
def __init__(self, instance, column, value): def __init__(self, instance, column, value):

View File

@@ -19,7 +19,8 @@ import six
from cassandra import ConsistencyLevel from cassandra import ConsistencyLevel
from cassandra.cluster import Cluster, _NOT_SET, NoHostAvailable from cassandra.cluster import Cluster, _NOT_SET, NoHostAvailable
from cassandra.query import SimpleStatement, Statement, dict_factory from cassandra.query import SimpleStatement, Statement, dict_factory
from cassandra.cqlengine.exceptions import CQLEngineException, UndefinedKeyspaceException
from cassandra.cqlengine import CQLEngineException
from cassandra.cqlengine.statements import BaseCQLStatement from cassandra.cqlengine.statements import BaseCQLStatement
@@ -27,10 +28,6 @@ log = logging.getLogger(__name__)
NOT_SET = _NOT_SET # required for passing timeout to Session.execute NOT_SET = _NOT_SET # required for passing timeout to Session.execute
class CQLConnectionError(CQLEngineException):
pass
Host = namedtuple('Host', ['name', 'port']) Host = namedtuple('Host', ['name', 'port'])
cluster = None cluster = None
@@ -39,6 +36,10 @@ lazy_connect_args = None
default_consistency_level = ConsistencyLevel.ONE default_consistency_level = ConsistencyLevel.ONE
class UndefinedKeyspaceException(CQLEngineException):
pass
def default(): def default():
""" """
Configures the global mapper connection to localhost, using the driver defaults Configures the global mapper connection to localhost, using the driver defaults

View File

@@ -12,26 +12,12 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import logging
import warnings
class CQLEngineException(Exception): import cassandra.cqlengine
pass
class ModelException(CQLEngineException): CQLEngineException = cassandra.cqlengine.CQLEngineException
pass
ValidationError = cassandra.cqlengine.ValidationError
class ValidationError(CQLEngineException):
pass
class UndefinedKeyspaceException(CQLEngineException):
pass
class LWTException(CQLEngineException):
pass
class IfNotExistsWithCounterColumn(CQLEngineException):
pass

View File

@@ -13,18 +13,8 @@
# limitations under the License. # limitations under the License.
from datetime import datetime from datetime import datetime
import six
import sys
from cassandra.cqlengine.exceptions import ValidationError from cassandra.cqlengine import UnicodeMixin, ValidationError
# move to central spot
class UnicodeMixin(object):
if sys.version_info > (3, 0):
__str__ = lambda x: x.__unicode__()
else:
__str__ = lambda x: six.text_type(x).encode('utf-8')
class QueryValue(UnicodeMixin): class QueryValue(UnicodeMixin):

View File

@@ -19,9 +19,8 @@ import six
import warnings import warnings
from cassandra.metadata import KeyspaceMetadata from cassandra.metadata import KeyspaceMetadata
from cassandra.cqlengine import SizeTieredCompactionStrategy, LeveledCompactionStrategy from cassandra.cqlengine import CQLEngineException, SizeTieredCompactionStrategy, LeveledCompactionStrategy
from cassandra.cqlengine.connection import execute, get_cluster from cassandra.cqlengine.connection import execute, get_cluster
from cassandra.cqlengine.exceptions import CQLEngineException
from cassandra.cqlengine.models import Model from cassandra.cqlengine.models import Model
from cassandra.cqlengine.named import NamedTable from cassandra.cqlengine.named import NamedTable

View File

@@ -17,8 +17,8 @@ import re
import six import six
import warnings import warnings
from cassandra.cqlengine import CQLEngineException, ValidationError
from cassandra.cqlengine import columns from cassandra.cqlengine import columns
from cassandra.cqlengine.exceptions import ModelException, CQLEngineException, ValidationError
from cassandra.cqlengine.query import ModelQuerySet, DMLQuery, AbstractQueryableColumn, NOT_SET from cassandra.cqlengine.query import ModelQuerySet, DMLQuery, AbstractQueryableColumn, NOT_SET
from cassandra.cqlengine.query import DoesNotExist as _DoesNotExist from cassandra.cqlengine.query import DoesNotExist as _DoesNotExist
from cassandra.cqlengine.query import MultipleObjectsReturned as _MultipleObjectsReturned from cassandra.cqlengine.query import MultipleObjectsReturned as _MultipleObjectsReturned
@@ -27,11 +27,15 @@ from cassandra.util import OrderedDict
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
class ModelException(CQLEngineException):
pass
class ModelDefinitionException(ModelException): class ModelDefinitionException(ModelException):
pass pass
class PolyMorphicModelException(ModelException): class PolymorphicModelException(ModelException):
pass pass
@@ -411,7 +415,7 @@ class BaseModel(object):
disc_key = field_dict.get(cls._discriminator_column_name) disc_key = field_dict.get(cls._discriminator_column_name)
if disc_key is None: if disc_key is None:
raise PolyMorphicModelException('discriminator value was not found in values') raise PolymorphicModelException('discriminator value was not found in values')
poly_base = cls if cls._is_polymorphic_base else cls._polymorphic_base poly_base = cls if cls._is_polymorphic_base else cls._polymorphic_base
@@ -420,12 +424,12 @@ class BaseModel(object):
poly_base._discover_polymorphic_submodels() poly_base._discover_polymorphic_submodels()
klass = poly_base._get_model_by_discriminator_value(disc_key) klass = poly_base._get_model_by_discriminator_value(disc_key)
if klass is None: if klass is None:
raise PolyMorphicModelException( raise PolymorphicModelException(
'unrecognized discriminator column {} for class {}'.format(disc_key, poly_base.__name__) 'unrecognized discriminator column {} for class {}'.format(disc_key, poly_base.__name__)
) )
if not issubclass(klass, cls): if not issubclass(klass, cls):
raise PolyMorphicModelException( raise PolymorphicModelException(
'{} is not a subclass of {}'.format(klass.__name__, cls.__name__) '{} is not a subclass of {}'.format(klass.__name__, cls.__name__)
) )
@@ -643,7 +647,7 @@ class BaseModel(object):
# handle polymorphic models # handle polymorphic models
if self._is_polymorphic: if self._is_polymorphic:
if self._is_polymorphic_base: if self._is_polymorphic_base:
raise PolyMorphicModelException('cannot save polymorphic base model') raise PolymorphicModelException('cannot save polymorphic base model')
else: else:
setattr(self, self._discriminator_column_name, self.__discriminator_value__) setattr(self, self._discriminator_column_name, self.__discriminator_value__)
@@ -693,7 +697,7 @@ class BaseModel(object):
# handle polymorphic models # handle polymorphic models
if self._is_polymorphic: if self._is_polymorphic:
if self._is_polymorphic_base: if self._is_polymorphic_base:
raise PolyMorphicModelException('cannot update polymorphic base model') raise PolymorphicModelException('cannot update polymorphic base model')
else: else:
setattr(self, self._discriminator_column_name, self.__disciminator_value__) setattr(self, self._discriminator_column_name, self.__disciminator_value__)

View File

@@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from cassandra.cqlengine.exceptions import CQLEngineException from cassandra.cqlengine import CQLEngineException
from cassandra.cqlengine.query import AbstractQueryableColumn, SimpleQuerySet from cassandra.cqlengine.query import AbstractQueryableColumn, SimpleQuerySet
from cassandra.cqlengine.query import DoesNotExist as _DoesNotExist from cassandra.cqlengine.query import DoesNotExist as _DoesNotExist
from cassandra.cqlengine.query import MultipleObjectsReturned as _MultipleObjectsReturned from cassandra.cqlengine.query import MultipleObjectsReturned as _MultipleObjectsReturned

View File

@@ -12,22 +12,13 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import six from cassandra.cqlengine import UnicodeMixin
import sys
class QueryOperatorException(Exception): class QueryOperatorException(Exception):
pass pass
# move to central spot
class UnicodeMixin(object):
if sys.version_info > (3, 0):
__str__ = lambda x: x.__unicode__()
else:
__str__ = lambda x: six.text_type(x).encode('utf-8')
class BaseQueryOperator(UnicodeMixin): class BaseQueryOperator(UnicodeMixin):
# The symbol that identifies this operator in kwargs # The symbol that identifies this operator in kwargs
# ie: colname__<symbol> # ie: colname__<symbol>

View File

@@ -17,10 +17,9 @@ from datetime import datetime, timedelta
import time import time
import six import six
from cassandra.cqlengine import columns from cassandra.cqlengine import columns, CQLEngineException, ValidationError, UnicodeMixin
from cassandra.cqlengine.connection import execute, NOT_SET from cassandra.cqlengine.connection import execute, NOT_SET
from cassandra.cqlengine.exceptions import CQLEngineException, ValidationError, LWTException, IfNotExistsWithCounterColumn from cassandra.cqlengine.functions import Token, BaseQueryFunction, QueryValue
from cassandra.cqlengine.functions import Token, BaseQueryFunction, QueryValue, UnicodeMixin
from cassandra.cqlengine.operators import (InOperator, EqualsOperator, GreaterThanOperator, from cassandra.cqlengine.operators import (InOperator, EqualsOperator, GreaterThanOperator,
GreaterThanOrEqualOperator, LessThanOperator, GreaterThanOrEqualOperator, LessThanOperator,
LessThanOrEqualOperator, BaseWhereOperator) LessThanOrEqualOperator, BaseWhereOperator)
@@ -36,6 +35,14 @@ class QueryException(CQLEngineException):
pass pass
class IfNotExistsWithCounterColumn(CQLEngineException):
pass
class LWTException(CQLEngineException):
pass
class DoesNotExist(QueryException): class DoesNotExist(QueryException):
pass pass

View File

@@ -15,8 +15,8 @@
from datetime import datetime, timedelta from datetime import datetime, timedelta
import time import time
import six import six
import sys
from cassandra.cqlengine import UnicodeMixin
from cassandra.cqlengine.functions import QueryValue from cassandra.cqlengine.functions import QueryValue
from cassandra.cqlengine.operators import BaseWhereOperator, InOperator from cassandra.cqlengine.operators import BaseWhereOperator, InOperator
@@ -25,13 +25,6 @@ class StatementException(Exception):
pass pass
class UnicodeMixin(object):
if sys.version_info > (3, 0):
__str__ = lambda x: x.__unicode__()
else:
__str__ = lambda x: six.text_type(x).encode('utf-8')
class ValueQuoter(UnicodeMixin): class ValueQuoter(UnicodeMixin):
def __init__(self, value): def __init__(self, value):

View File

@@ -15,9 +15,8 @@
from uuid import uuid4 from uuid import uuid4
import warnings import warnings
from cassandra.cqlengine import columns from cassandra.cqlengine import columns, CQLEngineException
from cassandra.cqlengine.exceptions import ModelException, CQLEngineException from cassandra.cqlengine.models import Model, ModelException, ModelDefinitionException, ColumnQueryEvaluator
from cassandra.cqlengine.models import Model, ModelDefinitionException, ColumnQueryEvaluator
from cassandra.cqlengine.query import ModelQuerySet, DMLQuery from cassandra.cqlengine.query import ModelQuerySet, DMLQuery
from tests.integration.cqlengine.base import BaseCassEngTestCase from tests.integration.cqlengine.base import BaseCassEngTestCase

View File

@@ -120,7 +120,7 @@ class TestPolymorphicModel(BaseCassEngTestCase):
management.drop_table(Poly2) management.drop_table(Poly2)
def test_saving_base_model_fails(self): def test_saving_base_model_fails(self):
with self.assertRaises(models.PolyMorphicModelException): with self.assertRaises(models.PolymorphicModelException):
PolyBase.create() PolyBase.create()
def test_saving_subclass_saves_poly_key(self): def test_saving_subclass_saves_poly_key(self):
@@ -208,9 +208,9 @@ class TestUnindexedPolymorphicQuery(BaseCassEngTestCase):
assert len(list(UnindexedPoly2.objects(partition=p1.partition, cluster__in=[p2.cluster, p3.cluster]))) == 2 assert len(list(UnindexedPoly2.objects(partition=p1.partition, cluster__in=[p2.cluster, p3.cluster]))) == 2
def test_conflicting_type_results(self): def test_conflicting_type_results(self):
with self.assertRaises(models.PolyMorphicModelException): with self.assertRaises(models.PolymorphicModelException):
list(UnindexedPoly1.objects(partition=self.p1.partition)) list(UnindexedPoly1.objects(partition=self.p1.partition))
with self.assertRaises(models.PolyMorphicModelException): with self.assertRaises(models.PolymorphicModelException):
list(UnindexedPoly2.objects(partition=self.p1.partition)) list(UnindexedPoly2.objects(partition=self.p1.partition))

View File

@@ -17,10 +17,9 @@ from uuid import uuid4
from tests.integration.cqlengine.base import BaseCassEngTestCase from tests.integration.cqlengine.base import BaseCassEngTestCase
from cassandra.cqlengine.exceptions import ModelException
from cassandra.cqlengine.management import sync_table from cassandra.cqlengine.management import sync_table
from cassandra.cqlengine.management import drop_table from cassandra.cqlengine.management import drop_table
from cassandra.cqlengine.models import Model from cassandra.cqlengine.models import Model, ModelException
from cassandra.cqlengine import columns from cassandra.cqlengine import columns
from cassandra.cqlengine import query from cassandra.cqlengine import query

View File

@@ -17,10 +17,9 @@ from unittest import skipUnless
from uuid import uuid4 from uuid import uuid4
from cassandra.cqlengine import columns from cassandra.cqlengine import columns
from cassandra.cqlengine.exceptions import LWTException, IfNotExistsWithCounterColumn
from cassandra.cqlengine.management import sync_table, drop_table from cassandra.cqlengine.management import sync_table, drop_table
from cassandra.cqlengine.models import Model from cassandra.cqlengine.models import Model
from cassandra.cqlengine.query import BatchQuery from cassandra.cqlengine.query import BatchQuery, LWTException, IfNotExistsWithCounterColumn
from tests.integration.cqlengine.base import BaseCassEngTestCase from tests.integration.cqlengine.base import BaseCassEngTestCase
from tests.integration import PROTOCOL_VERSION from tests.integration import PROTOCOL_VERSION

View File

@@ -20,8 +20,7 @@ from uuid import uuid4
from cassandra.cqlengine import columns from cassandra.cqlengine import columns
from cassandra.cqlengine.management import sync_table, drop_table from cassandra.cqlengine.management import sync_table, drop_table
from cassandra.cqlengine.models import Model from cassandra.cqlengine.models import Model
from cassandra.cqlengine.exceptions import LWTException from cassandra.cqlengine.query import BatchQuery, LWTException
from cassandra.cqlengine.query import BatchQuery
from cassandra.cqlengine.statements import TransactionClause from cassandra.cqlengine.statements import TransactionClause
from tests.integration.cqlengine.base import BaseCassEngTestCase from tests.integration.cqlengine.base import BaseCassEngTestCase