man 3 mktime
Anyone who ever did C knows the answer.
mktime automatically adds overflowing values to the next bigger unit. You just need to convert it back to a datetime.
For example you can feed it with 2019-07-40, which converts to 2019-08-09.
>>> datetime.fromtimestamp(mktime((2019, 7, 40, 0, 0, 0, 0, 0, 0)))
datetime.datetime(2019, 8, 9, 0, 0)
Or 2019-03-(-1) is converted to 2019-02-27:
>>> datetime.fromtimestamp(mktime((2019, 3, -1, 0, 0, 0, 0, 0, 0)))
datetime.datetime(2019, 2, 27, 0, 0)
So you just take your old date and add whatever you like:
now = datetime.datetime.now()
hundred_days_later = datetime.datetime.fromtimestamp(mktime((now.year, now.month, now.day + 100, now.hour, now.minute, now.second, 0, 0, 0)))