code: def _add_months(self, date, months):
          
          year = date.year + (date.month + months - 1) // 12
          month = (date.month + months - 1) % 12 + 1
          return datetime.date(year=year, month=month, day=1)
docs: Add ``months`` months to ``date``.
  
          Unfortunately we can't use timedeltas to add months because timedelta counts in days
          and there's no foolproof way to add N months in days without counting the number of
          days per month.