implicit-optional (RUF013)
Fix is sometimes available.
What it does
Checks for the use of implicit Optional
in type annotations when the
default parameter value is None
.
Why is this bad?
Implicit Optional
is prohibited by PEP 484. It is confusing and
inconsistent with the rest of the type system.
It's recommended to use Optional[T]
instead. For Python 3.10 and later,
you can also use T | None
.
Example
Use instead:
Or, for Python 3.10 and later:
If you want to use the |
operator in Python 3.9 and earlier, you can
use future imports:
Limitations
Type aliases are not supported and could result in false negatives. For example, the following code will not be flagged:
Options
Fix safety
This fix is always marked as unsafe because it can change the behavior of code that relies on type hints, and it assumes the default value is always appropriate—which might not be the case.