If you have a value: Optional[X], a common way to check if it is None is by by using the pattern:
from typing import Optional
def some_function(value: Optional[str]):
if not value:
print("oopsie! value is either None or the empty string")
return
... # now you know that value is not empty
The gotcha with this pattern is other values that evaluate to False, e.g.:
X == str:""X == int:0X == float:0.0... interestingly,bool(float('nan')) is TrueX == list:[](similar for sets, tuples, dicts, or other iterables)
My question is: Does any datetime.datetime object evaluate to False? Any datetime.time / datetime.date?