Skip to content

verbose-decimal-constructor (FURB157)

Derived from the refurb linter.

Fix is always available.

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

What it does

Checks for unnecessary string literal or float casts in Decimal constructors.

Why is this bad?

The Decimal constructor accepts a variety of arguments, including integers, floats, and strings. However, it's not necessary to cast integer literals to strings when passing them to the Decimal.

Similarly, Decimal accepts inf, -inf, and nan as string literals, so there's no need to wrap those values in a float call when passing them to the Decimal constructor.

Prefer the more concise form of argument passing for Decimal constructors, as it's more readable and idiomatic.

Example

Decimal("0")
Decimal(float("Infinity"))

Use instead:

Decimal(0)
Decimal("Infinity")

References