@staticmethod
    def _range(validators):
        """
            Introspect range constraints, convert to string for binding

            @param validators: a sequence of validators
            @return: a string with the range constraints
        """

        constraints = []

        for validator in validators:
            if hasattr(validator, "other"):
                v = validator.other
            else:
                v = validator
            if isinstance(v, (IS_INT_IN_RANGE, IS_FLOAT_IN_RANGE)):
                maximum = v.maximum
                if maximum is not None:
                    constraints.append(". < %s" % maximum)
                minimum = v.minimum
                if minimum is not None:
                    constraints.append(". > %s" % minimum)
        if constraints:
            return "(%s)" % " and ".join(constraints)
        return None

    # -------------------------------------------------------------------------
dataset/ETHPy150Open sahana/eden/modules/s3/s3xforms.py/S3XFormsField._range/original