|
@@ -1,4 +1,5 @@
|
|
|
import re
|
|
|
+from numbers import Number
|
|
|
from src.errors.argument_exception import argument_exception
|
|
|
|
|
|
class validator:
|
|
@@ -9,7 +10,7 @@ class validator:
|
|
|
value (any): Передаваемый аргумент
|
|
|
type(Type): Ожидаемый тип
|
|
|
Raises:
|
|
|
- TypeError: Некорректный тип аргумента
|
|
|
+ argument_exception: Некорректный тип аргумента
|
|
|
"""
|
|
|
|
|
|
if not isinstance(value, exp_type):
|
|
@@ -24,7 +25,7 @@ class validator:
|
|
|
value (any): Передаваемый аргумент
|
|
|
length (int): Ожидаемая длина
|
|
|
Raises:
|
|
|
- ValueError: Несоответствующая длина аргумента
|
|
|
+ argument_exception: Несоответствующая длина аргумента
|
|
|
"""
|
|
|
|
|
|
if isinstance(value, int):
|
|
@@ -43,7 +44,7 @@ class validator:
|
|
|
length (int): Максимальная допустимая длина
|
|
|
inclusive (bool): Сравнивать включительно? default=True
|
|
|
Raises:
|
|
|
- ValueError: Превышена длина аргумента
|
|
|
+ argument_exception: Превышена длина аргумента
|
|
|
"""
|
|
|
|
|
|
if value is int:
|
|
@@ -63,7 +64,7 @@ class validator:
|
|
|
length (int): Максимальная допустимая длина
|
|
|
inclusive (bool): Сравнивать включительно? default=True
|
|
|
Raises:
|
|
|
- ValueError: Недостаточная длина аргумента
|
|
|
+ argument_exception: Недостаточная длина аргумента
|
|
|
"""
|
|
|
|
|
|
if value is int:
|
|
@@ -85,8 +86,8 @@ class validator:
|
|
|
inclusive_min (bool): Сравнимать минимальную длину включительно? default=True
|
|
|
inclusive_max (bool): Сравнивать максимальную длину включительно? default=True
|
|
|
Raises:
|
|
|
- ValueError: Недостаточная длина аргумента
|
|
|
- ValueError: Превышена длина аргумента
|
|
|
+ argument_exception: Недостаточная длина аргумента
|
|
|
+ argument_exception: Превышена длина аргумента
|
|
|
"""
|
|
|
|
|
|
self.check_length_less(value, max_length, inclusive_max)
|
|
@@ -102,8 +103,8 @@ class validator:
|
|
|
exp_type (Type): Ожидаемый тип
|
|
|
length (int): Ожидаемая длина
|
|
|
Raises:
|
|
|
- TypeError: Несоответствие типа аргумента
|
|
|
- ValueError: Несоответствие длины аргумента
|
|
|
+ argument_exception: Несоответствие типа аргумента
|
|
|
+ argument_exception: Несоответствие длины аргумента
|
|
|
"""
|
|
|
|
|
|
self.check_type(value, exp_type)
|
|
@@ -118,10 +119,24 @@ class validator:
|
|
|
value (any): Передаваемый аргумент
|
|
|
expression (str): Регулярное выражение
|
|
|
Raises:
|
|
|
- ValueError: Аргумент не соответствует регулярному выражению
|
|
|
+ argument_exception: Аргумент не соответствует регулярному выражению
|
|
|
"""
|
|
|
|
|
|
if re.match(expression, value) is None:
|
|
|
raise argument_exception(f"Аргумент не соответствует регулярному выражению ({str(value)}, regex: {expression})")
|
|
|
|
|
|
return True
|
|
|
+
|
|
|
+ def check_number(self, value):
|
|
|
+ """
|
|
|
+ Валидация аргумента по соответствию типу Число
|
|
|
+ Args:
|
|
|
+ value: Передаваемый аргумент
|
|
|
+ Raises:
|
|
|
+ argument_exception: Аргумент не является числом
|
|
|
+ """
|
|
|
+
|
|
|
+ if not isinstance(value, Number):
|
|
|
+ raise argument_exception(f"Аргумент не является числом (type={type(value)})")
|
|
|
+
|
|
|
+ return True
|