Skip to content

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

@DaniBodor

Description

@DaniBodor

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    False Negative πŸ¦‹No message is emitted but something is wrong with the codeGood first issueFriendly and approachable by new contributorsHelp wanted πŸ™Outside help would be appreciated, good for new contributorsNeeds PRThis issue is accepted, sufficiently specified and now needs an implementation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions