pylint-dev/pylint

Expand to ``use-implicit-booleaness-not-len`` to catch `len(iterable) == 0` and `>0`

Open

#10,281 opened on Mar 17, 2025

View on GitHub
 (24 comments) (0 reactions) (0 assignees)Python (4,978 stars) (1,059 forks)batch import
False Negative 🦋Good first issueHacktoberfestNeeds decision :lock:

Description

Current problem

C1802 currently catches this

Examples 1&2 (currently caught by rule C1802)

fruits = ["orange", "apple"]
vegetables = []

if len(fruits):
    print(fruits)

if not len(vegetables):
    print(vegetables)

I come across the following sometimes as well (potentially in botched attempt to fix the the flagged violation above), which I think should be equally flagged as a violation.

Examples 3&4 (not caught by PLC1802)

fruits = ["orange", "apple"]
vegetables = []

if len(fruits) > 0:
    print(fruits)

if len(vegetables) == 0:
    print(vegetables)

Examples 5&6 (recommended formulation)

fruits = ["orange", "apple"]
vegetables = []

if fruits:
    print(fruits)

if not vegetables:
    print(vegetables)

Desired solution

Examples 3&4 to be flagged as well

Additional context

See our previous discussion on this issue.

Contributor guide