in geneve/solver/type_keyword.py [0:0]
def __init__(self, field, constraints, field_constraints, schema):
super().__init__(field, constraints, field_constraints, schema)
self.templ = get_templ(field, field_constraints)
self.value = []
for k, v, *_ in constraints:
if k in ("==", "wildcard"):
if not isinstance(v, (list, tuple)):
v = [v]
if self.is_array or not self.value:
self.value.append(self.templ & v)
else:
new_value = self.value[0] & v
if not new_value:
v = "', '".join(sorted(v))
raise ConflictError(f"not in {self.value[0]}: ('{v}')", field)
self.value[0] = new_value
elif k in ("!=", "not wildcard"):
if not isinstance(v, (list, tuple)):
v = [v]
if not self.value:
self.value.append(copy(self.templ))
for i, value in enumerate(self.value):
new_value = value - v
if not new_value:
v = "', '".join(sorted(v))
raise ConflictError(f"excluded by {value}: ('{v}')", field)
value -= v
if not self.value:
self.value.append(copy(self.templ))