-
Notifications
You must be signed in to change notification settings - Fork 108
Open
Description
When passing configurations to functions, it is quite annoying to have to do the whole Optional[Mapping[str, Any]] = None
dance. It would be nice if it was possible to allow mutable defaults, when the type hints indicate immutability. (possibly via some --strict
/--non-strict
flag.)
from collections.abc import *
def foo(
configA: Mapping[str, Any] = {}, # needn't raise B006
configB: MutableMapping[str, Any] = {}, # should raise B006
configC: dict[str, Any] = {}, # should raise B006
seqA: Sequence[str] = [], # needn't raise B006
seqB: MutableSequence[str] = [], # should raise B006
seqC: list[str] = [], # should raise B006
setA: Set[str] = set(), # needn't raise B006
setB: MutableSet[str] = set(), # should raise B006
setB: set[str] = set(), # should raise B006
): ...
The reasoning is that the type checker should catch mutable behavior, and the benefit is obviously shorter function bodies that avoid the configA = {} if configA is None else configA
boilerplate.
Metadata
Metadata
Assignees
Labels
No labels