Make Not and NotIn namedtuples

This commit is contained in:
Paul Hooijenga 2017-10-27 13:30:36 +02:00
parent bc9344bb40
commit a0a8fc15ff
3 changed files with 7 additions and 10 deletions

View file

@ -124,7 +124,7 @@ CONFIG_REPO_DICT = schema.Map(
schema.Conditional(
'sha', schema.check_string,
condition_key='repo',
condition_value=schema.NotIn((_LOCAL_SENTINEL, _META_SENTINEL)),
condition_value=schema.NotIn(_LOCAL_SENTINEL, _META_SENTINEL),
ensure_absent=True,
),
)

View file

@ -201,17 +201,14 @@ class Array(collections.namedtuple('Array', ('of',))):
return [remove_defaults(val, self.of) for val in v]
class Not(object):
def __init__(self, val):
self.val = val
class Not(collections.namedtuple('Not', ('val',))):
def __eq__(self, other):
return other is not MISSING and other != self.val
class NotIn(object):
def __init__(self, values):
self.values = values
class NotIn(collections.namedtuple('NotIn', ('values',))):
def __new__(cls, *values):
return super(NotIn, cls).__new__(cls, values=values)
def __eq__(self, other):
return other is not MISSING and other not in self.values

View file

@ -113,7 +113,7 @@ def test_not(val, expected):
(('bar', True), ('foo', False), (MISSING, False)),
)
def test_not_in(values, expected):
compared = NotIn(('baz', 'foo'))
compared = NotIn('baz', 'foo')
assert (values == compared) is expected
assert (compared == values) is expected
@ -211,7 +211,7 @@ map_conditional_absent_not_in = Map(
'foo', 'key',
Conditional(
'key2', check_bool,
condition_key='key', condition_value=NotIn((1, 2)), ensure_absent=True,
condition_key='key', condition_value=NotIn(1, 2), ensure_absent=True,
),
)