A type wrapper for the standard library `datetime` that supplies stricter checks, such as making 'datetime' not substitutable for 'date', and separating out Naive and Aware datetimes into separate, mutually-incompatible types.
It would be useful to be able to express, for example, that you have a datetime whose tzinfo is a zoneinfo.ZoneInfo so you can access its key attribute for serialization purposes.
It would be useful to be able to express, for example, that you have a
datetime
whosetzinfo
is azoneinfo.ZoneInfo
so you can access itskey
attribute for serialization purposes.