def __call__()

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


    def __call__(self, join_doc, environment):
        history = self.get_history(environment)

        if self.join_field_parts:
            value = join_doc
            for part in self.join_field_parts:
                value = value[part]
            if self.cardinality:
                history[value] = None
            return {"value": value}

        if not self.cardinality or len(history) < self.cardinality:
            value = self.solve(self.max_attempts + 1, environment)
            if not value["left_attempts"]:
                raise ConflictError(f"attempts exausted: {self.max_attempts}", self.field)
            del value["left_attempts"]
            if self.cardinality:
                history[value["value"]] = None
        else:
            value = {"value": random.choice(list(history)[: self.cardinality])}

        return value