You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently mypy does optimistic checking of *args -- we don't generate error if it could be valid. This seems like a reasonable default, since it avoids false positive errors. However, some users might prefer stricter checking as an option. When this option is enabled, mypy would only allow variable-length (non-Any) *args in a call if the callee also accepts *args.
Example:
deff(a: int) ->None: passx= [1, 2]
f(*x) # Currently accepted, since mypy doesn't know the length of x
PR #7392 relaxed the rules so that we assume that any list *args argument could be empty and thus we don't complain about even if a caller *args argument is only valid when it's empty.
Similarly this option (or a similar option) could reject variable-length rvalues in multiple assignment like this:
x= [1, 2]
a, b, c=x# Currently accepted
If we'd have support for enabling/disabling specific error codes, these checks could easily be implemented through error codes that are disabled by default.
Refactoring code such as the above (if correct) to pass mypy could be somewhat painful, however. It could be written like this:
Currently mypy does optimistic checking of
*args
-- we don't generate error if it could be valid. This seems like a reasonable default, since it avoids false positive errors. However, some users might prefer stricter checking as an option. When this option is enabled, mypy would only allow variable-length (non-Any
)*args
in a call if the callee also accepts*args
.Example:
PR #7392 relaxed the rules so that we assume that any list
*args
argument could be empty and thus we don't complain about even if a caller*args
argument is only valid when it's empty.Similarly this option (or a similar option) could reject variable-length rvalues in multiple assignment like this:
If we'd have support for enabling/disabling specific error codes, these checks could easily be implemented through error codes that are disabled by default.
Refactoring code such as the above (if correct) to pass mypy could be somewhat painful, however. It could be written like this:
(Of course, a
# type: ignore
would also work.)The text was updated successfully, but these errors were encountered: