import datetime DATETIME_UNITS = { 'second': datetime.timedelta(seconds=1), 'seconds': datetime.timedelta(seconds=1), 'minute': datetime.timedelta(minutes=1), 'minutes': datetime.timedelta(minutes=1), 'hour': datetime.timedelta(hours=1), 'hours': datetime.timedelta(hours=1), 'day': datetime.timedelta(days=1), 'days': datetime.timedelta(days=1), 'week': datetime.timedelta(days=7), 'weeks': datetime.timedelta(days=7), 'month': datetime.timedelta(days=30), 'months': datetime.timedelta(days=30), 'year': datetime.timedelta(days=365), 'years': datetime.timedelta(days=365), } FORMAT_DATE_HEADER = '%a, %d %b %Y %H:%M:%S GMT' def parse_duration(text: str) -> datetime.timedelta: (num, unit) = text.split(' ') num = int(num) unit = DATETIME_UNITS[unit] return unit * num def response_datetime(response) -> datetime.datetime: return datetime.datetime.strptime(response.headers['Date'], FORMAT_DATE_HEADER)