pylint-dev/pylint

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

Open

#10 281 ouverte le 17 mars 2025

Voir sur GitHub
 (24 commentaires) (0 réactions) (0 assignés)Python (1 059 forks)batch import
False Negative 🦋Good first issueHacktoberfestNeeds decision :lock:

Métriques du dépôt

Stars
 (4 978 stars)
Métriques de merge PR
 (Merge moyen 58j 21h) (63 PRs mergées en 30 j)

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.

Guide contributeur