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