def parse(self, string):
        fields = string.split()
        if len(fields) != 5:
            raise ValueError("unknown format {0!r}".format(string))

        results = {}
        for unit, field in zip(self._units, fields):
            ranges = empty()

            for part in [x.strip() for x in field.split(",")]:
                if not part:
                    raise ValueError("empty " + unit + " value")

                if "/" not in part:
                    step = 1
                else:
                    part, step = part.rsplit("/", 1)
                    if not step.isdigit():
                        raise ValueError("step value {0!r} should be an integer".format(step))
                    step = int(step)

                if part.strip() == "*":
                    first = None
                    last = None
                else:
                    if part in "-":
                        first, last = part.rsplit("-", 1)
                    else:
                        first = part
                        last = part

                    if first.isdigit():
                        first = int(first)
                    if last.isdigit():
                        last = int(last)

                ranges = ranges.or_range(first, last, step)

            results[unit] = ranges
        return Cron(results)
dataset/ETHPy150Open abusesa/abusehelper/abusehelper/core/cron.py/CronParser.parse/swapped operands of `in`