54 lines
1.5 KiB
Plaintext
54 lines
1.5 KiB
Plaintext
This rule raises an issue when trying to perform comparison or arithmetic operations between `datetime.date` and `datetime.datetime` objects.
|
|
|
|
== Why is this an issue?
|
|
Despite the fact that the `datetime.datetime` is inherited from the `datetime.date` they are not compatible from comparison and arithmetical operations perspective.
|
|
Trying to compare a `datetime.datetime` with a `datetime.date` objects leads to a `TypeError`.
|
|
|
|
== How to fix it
|
|
Make sure that comparison or arithmetic operations are performed between compatible types e.g. convert `datetime.datetime` to `datetime.date` or vice versa.
|
|
|
|
=== Code examples
|
|
|
|
==== Noncompliant code example
|
|
|
|
[source,python,diff-id=1,diff-type=noncompliant]
|
|
----
|
|
from datetime import datetime, date
|
|
|
|
dt = datetime.now()
|
|
d = date.today()
|
|
|
|
if dt < d: # Noncompliant: TypeError: can't compare datetime.datetime to datetime.date
|
|
...
|
|
----
|
|
|
|
==== Compliant solution
|
|
|
|
[source,python,diff-id=1,diff-type=compliant]
|
|
----
|
|
from datetime import datetime, date
|
|
|
|
dt = datetime.now()
|
|
d = date.today()
|
|
|
|
if dt.date() < d: # OK
|
|
...
|
|
----
|
|
|
|
//=== How does this work?
|
|
|
|
//=== Pitfalls
|
|
|
|
//=== Going the extra mile
|
|
|
|
|
|
== Resources
|
|
=== Documentation
|
|
* Python documentation - https://docs.python.org/3/library/datetime.html#datetime-objects[Datetime Objects]
|
|
* Python documentation - https://docs.python.org/3/library/datetime.html#date-objects[Date Objects]
|
|
//=== Articles & blog posts
|
|
//=== Conference presentations
|
|
//=== Standards
|
|
//=== External coding guidelines
|
|
//=== Benchmarks
|