def __init__()

in geneve/solver/type_long.py [0:0]


    def __init__(self, field, constraints, field_constraints, schema):
        super().__init__(field, constraints, field_constraints, schema)

        self.min_value = LongLimits.MIN
        self.max_value = LongLimits.MAX
        self.exclude_values = set()

        for k, v, *_ in constraints + field_constraints:
            if k == ">=":
                v = int(v)
                if self.min_value < v:
                    self.min_value = v
            elif k == "<=":
                v = int(v)
                if self.max_value > v:
                    self.max_value = v
            elif k == ">":
                v = int(v)
                if self.min_value < v + 1:
                    self.min_value = v + 1
            elif k == "<":
                v = int(v)
                if self.max_value > v - 1:
                    self.max_value = v - 1
        for k, v, *_ in constraints:
            if k == "==":
                v = int(v)
                if self.value is None or self.value == v:
                    self.value = v
                else:
                    raise ConflictError(f"is already {self.value}, cannot set to {v}", field, k)
            elif k == "!=":
                self.exclude_values.add(int(v))

        while self.min_value in self.exclude_values:
            self.min_value += 1
        while self.max_value in self.exclude_values:
            self.max_value -= 1
        if self.min_value > self.max_value:
            raise ConflictError(f"empty solution space, {self.min_value} <= x <= {self.max_value}", field)
        self.exclude_values = {v for v in self.exclude_values if v >= self.min_value and v <= self.max_value}
        if self.value is not None and self.value in self.exclude_values:
            if len(self.exclude_values) == 1:
                raise ConflictError(f"cannot be {self.exclude_values.pop()}", field)
            else:
                raise ConflictError(f"cannot be any of ({', '.join(str(v) for v in sorted(self.exclude_values))})", field)
        if self.value is not None and (self.value < self.min_value or self.value > self.max_value):
            raise ConflictError(f"out of boundary, {self.min_value} <= {self.value} <= {self.max_value}", field)