DateType

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.

85
7
Python

DateType

A Workaround

DateType is a workaround for this
bug
to demonstrate that we could
have a type-checking-time wrapper for datetime that doesn’t change (or almost
doesn’t change) the implementation, but fixes up two very annoying behaviors of
the stdlib datetime module:

  1. a datetime now won’t type-check as a date - it still inherits at runtime
    (the implementation is, after all, not changed) but it doesn’t inherit at
    type-time.

  2. there are separate types for naive and aware datetimes.

There’s a very small bit of implementation glue (concrete @classmethods for
construction on the Naive and Aware types, and a few functions that do
runtime checks to convert to/from stdlib types).