You need to exactly specify how your proposal would work, especially with leap days and leap years, and different length months. There are a lot of decisions to be made. Even then, I’m not sure it will be useful enough to be built in to datetime.
You might want to look on PyPI. In particular, dateutil has relativedelta.
I don’t think it’s possible to introduce variable length intervals such as months and years to timedelta in a backwards compatible way since that would invalidate the current API contract of timedelta.total_seconds() returning something well-defined, this also includes operations like dividing a timedelta by a number or a timdelta by a timedelta. Those operations would no longer make any sense with a variable length delta.
A timedelta is a fixed interval of time which makes sense independent of the time representation, whereas dateutil.relativedelta only makes sense in the context of date-like and datetime-like objects with separated time components.
Worth noting, in this context, that a timedelta(hours=24) and timedelta(days=1) are equal, and neither actually represents the time from X pm on one day to X pm the next day - both because of daylight savings time and because of leap seconds. But “day” as a span of time is neatly interpretable as exactly 24 times as long as “hour”, even if the Earth’s rotation and government decrees disagree.