def within_one_year(d1, d2): """ includes leap years """ year_range = list(range(d1.year, d2.year + 1)) if len(year_range) > 2: return False days_diff = abs((d2 - d1).days) for leap_year in [year for year in year_range if isleap(year)]: leap_date = datetime.datetime(leap_year, 2, 29) if d1 <= leap_date <= d2: days_diff -= 1 return days_diff <= 365