Takes a list of timestamps and generates new list of timestamps according to ``resample_range``

        :param timestamp: list of timestamps
        :type timestamp: list(datetime.datetime)
        :return: new list of timestamps
        :rtype: list(datetime.datetime)

def get_resampled_timestamp(self, timestamp):
        """ Takes a list of timestamps and generates new list of timestamps according to ``resample_range``

        :param timestamp: list of timestamps
        :type timestamp: list(datetime.datetime)
        :return: new list of timestamps
        :rtype: list(datetime.datetime)
        """
        if self.resample_range is None:
            return timestamp

        if not isinstance(self.resample_range, (tuple, list)):
            raise ValueError('Invalid resample_range {}, expected tuple'.format(self.resample_range))

        if tuple(map(type, self.resample_range)) == (str, str, int):
            start_date = dateutil.parser.parse(self.resample_range[0])
            end_date = dateutil.parser.parse(self.resample_range[1])
            step = dt.timedelta(days=self.resample_range[2])
            days = [start_date]
            while days[-1] + step < end_date:
                days.append(days[-1] + step)

        elif self.resample_range and np.all([isinstance(date, str) for date in self.resample_range]):
            days = [dateutil.parser.parse(date) for date in self.resample_range]
        elif self.resample_range and np.all([isinstance(date, dt.datetime) for date in self.resample_range]):
            days = [date for date in self.resample_range]
        else:
            raise ValueError('Invalid format in {}, expected strings or datetimes'.format(self.resample_range))

        return days