From afc63cafd4388310f865fb0fba3165a228796049 Mon Sep 17 00:00:00 2001 From: Angie Wang Date: Mon, 28 May 2018 20:12:43 -0400 Subject: [PATCH 1/1] add NotIn validation --- voluptuous.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/voluptuous.py b/voluptuous.py index 5b561b1..b4ed666 100644 --- a/voluptuous.py +++ b/voluptuous.py @@ -1584,6 +1584,30 @@ def In(container, msg=None): return validator +class NotInInvalid(Invalid): + pass + + +class NotIn(object): + """Validate that a value is not in a collection.""" + + def __init__(self, container, msg=None): + self.container = container + self.msg = msg + + def __call__(self, v): + try: + check = v in self.container + except TypeError: + check = True + if check: + raise NotInInvalid(self.msg or 'value is not allowed') + return v + + def __repr__(self): + return 'NotIn(%s)' % (self.container,) + + def Lower(v): """Transform a string to lower case. -- 1.8.3.1