ValueErrors now wrapped in RangeExceptions
This commit is contained in:
@@ -4,6 +4,12 @@ Changelog
|
||||
Here you can see the full list of changes between each SQLAlchemy-Utils release.
|
||||
|
||||
|
||||
0.7.6 (2013-03-26)
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
- NumberRange now wraps ValueErrors as NumberRangeExceptions
|
||||
|
||||
|
||||
0.7.5 (2013-03-26)
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
2
setup.py
2
setup.py
@@ -24,7 +24,7 @@ class PyTest(Command):
|
||||
|
||||
setup(
|
||||
name='SQLAlchemy-Utils',
|
||||
version='0.7.5',
|
||||
version='0.7.6',
|
||||
url='https://github.com/kvesteri/sqlalchemy-utils',
|
||||
license='BSD',
|
||||
author='Konsta Vesterinen',
|
||||
|
@@ -96,6 +96,10 @@ class NumberRangeType(types.TypeDecorator):
|
||||
|
||||
|
||||
class NumberRangeException(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class RangeBoundsException(NumberRangeException):
|
||||
def __init__(self, min_value, max_value):
|
||||
self.message = 'Min value %d is bigger than max value %d.' % (
|
||||
min_value,
|
||||
@@ -106,7 +110,7 @@ class NumberRangeException(Exception):
|
||||
class NumberRange(object):
|
||||
def __init__(self, min_value, max_value):
|
||||
if min_value > max_value:
|
||||
raise NumberRangeException(min_value, max_value)
|
||||
raise RangeBoundsException(min_value, max_value)
|
||||
self.min_value = min_value
|
||||
self.max_value = max_value
|
||||
|
||||
@@ -131,9 +135,12 @@ class NumberRange(object):
|
||||
"""
|
||||
if value is not None:
|
||||
values = value[1:-1].split(',')
|
||||
min_value, max_value = map(
|
||||
lambda a: int(a.strip()), values
|
||||
)
|
||||
try:
|
||||
min_value, max_value = map(
|
||||
lambda a: int(a.strip()), values
|
||||
)
|
||||
except ValueError, e:
|
||||
raise NumberRangeException(e.message)
|
||||
|
||||
if value[0] == '(':
|
||||
min_value += 1
|
||||
@@ -150,9 +157,12 @@ class NumberRange(object):
|
||||
if len(values) == 1:
|
||||
min_value = max_value = int(value.strip())
|
||||
else:
|
||||
min_value, max_value = map(
|
||||
lambda a: int(a.strip()), values
|
||||
)
|
||||
try:
|
||||
min_value, max_value = map(
|
||||
lambda a: int(a.strip()), values
|
||||
)
|
||||
except ValueError, e:
|
||||
raise NumberRangeException(e.message)
|
||||
return cls(min_value, max_value)
|
||||
|
||||
@property
|
||||
|
@@ -46,6 +46,10 @@ class TestNumberRange(object):
|
||||
assert number_range.min_value == 1
|
||||
assert number_range.max_value == 1
|
||||
|
||||
def test_from_str_exception_handling(self):
|
||||
with raises(NumberRangeException):
|
||||
NumberRange.from_str('1 - ')
|
||||
|
||||
def test_from_normalized_str(self):
|
||||
assert str(NumberRange.from_normalized_str('[1,2]')) == '1 - 2'
|
||||
assert str(NumberRange.from_normalized_str('[1,3)')) == '1 - 2'
|
||||
|
Reference in New Issue
Block a user