Skip to content

delete-full-slice (FURB131)

Derived from the refurb linter.

Fix is sometimes available.

This rule is unstable and in preview. The --preview flag is required for use.

What it does

Checks for del statements that delete the entire slice of a list or dictionary.

Why is this bad?

It is faster and more succinct to remove all items via the clear() method.

Known problems

This rule is prone to false negatives due to type inference limitations, as it will only detect lists and dictionaries that are instantiated as literals or annotated with a type annotation.

Example

names = {"key": "value"}
nums = [1, 2, 3]

del names[:]
del nums[:]

Use instead:

names = {"key": "value"}
nums = [1, 2, 3]

names.clear()
nums.clear()

References