boolean-datetime / W1502#

Message emitted:

Using datetime.time in a boolean context.

Description:

Using datetime.time in a boolean context can hide subtle bugs when the time they represent matches midnight UTC. This behaviour was fixed in Python 3.5. See https://bugs.python.org/issue13936 for reference.

Problematic code:

import datetime

if datetime.time():  # [boolean-datetime]
    print("It is time.")


if datetime.datetime.now().time():  # [boolean-datetime]
    print("Now or never.")

Correct code:

import datetime

time_now_utc = datetime.datetime.now(tz=datetime.UTC).time()

if time_now_utc > datetime.time(6, 0):
    print("Daytime!")

if time_now_utc < datetime.time(6, 0):
    print("Nighttime!")

Configuration file:

[main]
py-version=3.4

Related links:

Created by the stdlib checker.