I have this function below;
def time_in_range(start, end, x):
    """Return true if x is in the range [start, end]"""
    if start <= end:
        return start <= x <= end
    else:
        return start <= x or x <= end
The function parameters are all datetime type. I want to add typing hint to the function. This is what I did;
def time_in_range(start: datetime, end: datetime, x: datetime) -> bool:
    """Return true if x is in the range [start, end]"""
    if start <= end:
        return start <= x <= end
    else:
        return start <= x or x <= end
I get the error NameError: name 'datetime' is not defined. What is the proper way to add typing for this function?
I am using python v3.7
You need to import datetime, or use a string (remember, it is just an hint).
>>> def f(x: datetime):
...     pass
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'datetime' is not defined
>>> def f(x: 'datetime'):
...     pass
...
>>>
>>> from datetime import datetime
>>> def f(x: datetime):
...     pass
...
>>>
Python 3.7.4
Either import datetime and use datetime.datetime as hint, or from datetime import datetime and use datetime as hint.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With