aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/prompt-toolkit/py2/prompt_toolkit/validation.py
diff options
context:
space:
mode:
authornkozlovskiy <nmk@ydb.tech>2023-09-29 12:24:06 +0300
committernkozlovskiy <nmk@ydb.tech>2023-09-29 12:41:34 +0300
commite0e3e1717e3d33762ce61950504f9637a6e669ed (patch)
treebca3ff6939b10ed60c3d5c12439963a1146b9711 /contrib/python/prompt-toolkit/py2/prompt_toolkit/validation.py
parent38f2c5852db84c7b4d83adfcb009eb61541d1ccd (diff)
downloadydb-e0e3e1717e3d33762ce61950504f9637a6e669ed.tar.gz
add ydb deps
Diffstat (limited to 'contrib/python/prompt-toolkit/py2/prompt_toolkit/validation.py')
-rw-r--r--contrib/python/prompt-toolkit/py2/prompt_toolkit/validation.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/contrib/python/prompt-toolkit/py2/prompt_toolkit/validation.py b/contrib/python/prompt-toolkit/py2/prompt_toolkit/validation.py
new file mode 100644
index 0000000000..0027873f88
--- /dev/null
+++ b/contrib/python/prompt-toolkit/py2/prompt_toolkit/validation.py
@@ -0,0 +1,64 @@
+"""
+Input validation for a `Buffer`.
+(Validators will be called before accepting input.)
+"""
+from __future__ import unicode_literals
+from .filters import to_simple_filter
+
+from abc import ABCMeta, abstractmethod
+from six import with_metaclass
+
+__all__ = (
+ 'ConditionalValidator',
+ 'ValidationError',
+ 'Validator',
+)
+
+
+class ValidationError(Exception):
+ """
+ Error raised by :meth:`.Validator.validate`.
+
+ :param cursor_position: The cursor position where the error occured.
+ :param message: Text.
+ """
+ def __init__(self, cursor_position=0, message=''):
+ super(ValidationError, self).__init__(message)
+ self.cursor_position = cursor_position
+ self.message = message
+
+ def __repr__(self):
+ return '%s(cursor_position=%r, message=%r)' % (
+ self.__class__.__name__, self.cursor_position, self.message)
+
+
+class Validator(with_metaclass(ABCMeta, object)):
+ """
+ Abstract base class for an input validator.
+ """
+ @abstractmethod
+ def validate(self, document):
+ """
+ Validate the input.
+ If invalid, this should raise a :class:`.ValidationError`.
+
+ :param document: :class:`~prompt_toolkit.document.Document` instance.
+ """
+ pass
+
+
+class ConditionalValidator(Validator):
+ """
+ Validator that can be switched on/off according to
+ a filter. (This wraps around another validator.)
+ """
+ def __init__(self, validator, filter):
+ assert isinstance(validator, Validator)
+
+ self.validator = validator
+ self.filter = to_simple_filter(filter)
+
+ def validate(self, document):
+ # Call the validator only if the filter is active.
+ if self.filter():
+ self.validator.validate(document)