|
@@ -8,13 +8,28 @@ class validator:
|
|
|
if not hasattr(cls, "instance"):
|
|
|
cls.instance = super(validator, cls).__new__(cls)
|
|
|
return cls.instance
|
|
|
+
|
|
|
+ def check(self, value, method):
|
|
|
+ """
|
|
|
+ Валидация аргумента по лямбде
|
|
|
+ Args:
|
|
|
+ value (any): Передаваемый аргумент
|
|
|
+ method (lambda): Лямбда-функция для проверки
|
|
|
+ Raises:
|
|
|
+ argument_exception: Аргумент не прошел валидацию по лямбде
|
|
|
+ """
|
|
|
+
|
|
|
+ if not method(value):
|
|
|
+ raise argument_exception("Аргумент не прошел валидацию по лямбде")
|
|
|
+
|
|
|
+ return True
|
|
|
|
|
|
def check_type(self, value, exp_type):
|
|
|
"""
|
|
|
Валидация аргумента по типу
|
|
|
Args:
|
|
|
value (any): Передаваемый аргумент
|
|
|
- type(Type): Ожидаемый тип
|
|
|
+ type (Type): Ожидаемый тип
|
|
|
Raises:
|
|
|
argument_exception: Некорректный тип аргумента
|
|
|
"""
|
|
@@ -161,7 +176,7 @@ class validator:
|
|
|
"""
|
|
|
Валидация аргумента по соответствию типу Число
|
|
|
Args:
|
|
|
- value: Передаваемый аргумент
|
|
|
+ value (any): Передаваемый аргумент
|
|
|
Raises:
|
|
|
argument_exception: Аргумент не является числом
|
|
|
"""
|
|
@@ -175,8 +190,8 @@ class validator:
|
|
|
"""
|
|
|
Валидация коллекции по соответствию лямбде
|
|
|
Args:
|
|
|
- value: Передаваемая коллекция
|
|
|
- method: Лямбда-функция валидации
|
|
|
+ value (any): Передаваемая коллекция
|
|
|
+ method (lambda): Лямбда-функция валидации
|
|
|
Raises:
|
|
|
argument_exception: Один из членов коллекции не прошел валидацию
|
|
|
"""
|
|
@@ -189,4 +204,23 @@ class validator:
|
|
|
raise argument_exception(f"Один из членов коллекции не прошел валидацию \
|
|
|
({exc.error.error_text} on item #{num})")
|
|
|
|
|
|
- return True
|
|
|
+ return True
|
|
|
+
|
|
|
+ def check_collection_types_all(self, value, exp_type):
|
|
|
+ """
|
|
|
+ Валидация коллекции по соответствию типа
|
|
|
+ Args:
|
|
|
+ value (any): Передаваемая коллекция
|
|
|
+ type (Type): Ожидаемый тип элементов
|
|
|
+ Raises:
|
|
|
+ argument_exception: Один из членов коллекции не соответствует типу
|
|
|
+ """
|
|
|
+
|
|
|
+ for num, val in enumerate(value):
|
|
|
+ try:
|
|
|
+ self.check_type(val, exp_type)
|
|
|
+ except argument_exception as exc:
|
|
|
+ raise argument_exception(f"Один из членов коллекции не соответствует типу {exp_type} \
|
|
|
+ (excepted {exp_type}, got {type(val)} on element #{num})")
|
|
|
+
|
|
|
+ return True
|