def pushes_within_changes()

in mozregression/json_pushes.py [0:0]


    def pushes_within_changes(self, fromchange, tochange, verbose=True, **kwargs):
        """
        Returns a list of Push objects, including fromchange and tochange.

        This will return at least one Push. In case of error it will raise
        a MozRegressionError.
        """
        from_is_date = is_date_or_datetime(fromchange)
        to_is_date = is_date_or_datetime(tochange)

        kwargs = {}
        if not from_is_date:
            # the first changeset is not taken into account in the result.
            # let's add it directly with this request
            chsets = self.pushes(changeset=fromchange)
            kwargs["fromchange"] = fromchange
        else:
            chsets = []
            kwargs["startdate"] = fromchange.strftime("%Y-%m-%d")

        if not to_is_date:
            kwargs["tochange"] = tochange
        else:
            # add one day to take the last day in account
            kwargs["enddate"] = (tochange + datetime.timedelta(days=1)).strftime("%Y-%m-%d")

        # now fetch all remaining changesets
        chsets.extend(self.pushes(**kwargs))

        log = LOG.info if verbose else LOG.debug
        if from_is_date:
            first = chsets[0]
            log(
                "Using {} (pushed on {}) for date {}".format(
                    first.changeset, first.utc_date, fromchange
                )
            )
        if to_is_date:
            last = chsets[-1]
            log(
                "Using {} (pushed on {}) for date {}".format(
                    last.changeset, last.utc_date, tochange
                )
            )

        return chsets