def test_replace(self): w = Week(2011, 20) self.assertEqual(w.replace(), w) self.assertEqual(w.replace(year=2010), Week(2010, 20)) self.assertEqual(w.replace(week=2), Week(2011, 2)) self.assertEqual(w.replace(week=99), Week(2012, 47)) self.assertEqual(w.replace(year=1, week=1), Week(1, 1))
def get_year_ago(self, dia=None, yearsago=None): if not dia: dia = self.day_present years_ago = self.years_ago if yearsago: years_ago = int(yearsago) logger.debug("Calculating {} year ago for {}".format(years_ago, dia)) current = dia.isocalendar() # 0 year, 1 week, 2, weekday year = current[0] week = current[1] weekday = current[2] - 1 # Isocalendar uses american weekdays week_current = Week(year, week) week_past = week_current.replace(year - years_ago, week) past_new = self.ensure_same_day_scenario( week_current, week_past, weekday) if past_new: self.day_year_ago = datetime.combine(past_new, datetime.min.time()) else: self.day_year_ago = datetime.combine( week_past.day(weekday), datetime.min.time()) logger.debug("SUMMARY") logger.debug(" - Present day: {}".format(week_current.day(weekday))) logger.debug(" - Past day ini: {}".format(week_past.day(weekday))) logger.debug( " - Past day correction: {}".format(self.day_year_ago.strftime("%Y-%m-%d"))) logger.info("{} year ago from {} was {}" .format(years_ago, self.day_present.strftime( "%Y-%m-%d"), self.day_year_ago.strftime("%Y-%m-%d"))) return self.day_year_ago