This patch implements filter-rewriting for "times()" and
"datetimes()": simple comparison filters such as
".filter(partial(operator.ge, bound))" are rewritten into efficient
bounds, as "dates()" already did. This includes strategies inferred
from annotated-types bounds like "Annotated[datetime, Gt(...)]", and
contradictory filters now give an empty strategy instead of failing
health checks.
The canonical version of these notes (with links) is on readthedocs.