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
Since 1.16, structlog's package type check fails with:
src/structlog/stdlib.py:1160: error: Redundant cast to "MutableMapping[str, Any]" [redundant-cast]
ed = p(logger, meth_name, cast(EventDict, ed))
^
Found 1 error in 1 file (checked 1 source file)
If I remove the cast, I get:
src/structlog/stdlib.py:1160: error: Argument 3 has incompatible type "Mapping[str, Any] | str | bytes | bytearray | tuple[Any, ...]"; expected
"MutableMapping[str, Any]" [arg-type]
ed = p(logger, meth_name, ed)
^~
Found 1 error in 1 file (checked 1 source file)
If I add a reveal_type, I get on both 1.15 & 1.16:
src/structlog/stdlib.py:1160: note: Revealed type is "typing.MutableMapping[builtins.str, Any]"
src/structlog/stdlib.py:1160: note: Revealed type is "Union[typing.Mapping[builtins.str, Any], builtins.str, builtins.bytes, builtins.bytearray, builtins.tuple[Any, ...]]"
So I guess Mypy got somehow smarter/confused about that?
To Reproduce
git clone git@github.com:hynek/structlog.git
git checkout d948027
run tox -e mypy-pkg
I really tried to create a minimal reproducer, but given that I don't quite understand what's going on, I've failed.
Yes, I hope we just have to handle codes.REDUNDANT_CAST the same way as codes.REDUNDANT_EXPR in #19118. Maybe there are more such candidates? (UNUSED_IGNORE or so)
Uh oh!
There was an error while loading. Please reload this page.
Bug Report
Since 1.16, structlog's package type check fails with:
If I remove the cast, I get:
If I add a reveal_type, I get on both 1.15 & 1.16:
So I guess Mypy got somehow smarter/confused about that?
To Reproduce
git clone git@github.com:hynek/structlog.git
git checkout d948027
tox -e mypy-pkg
I really tried to create a minimal reproducer, but given that I don't quite understand what's going on, I've failed.
The relevant code is here: https://github.com/hynek/structlog/blob/e941e337d312eaf256595d9d09da4542c5e94d0b/src/structlog/stdlib.py#L1160
The types are defined here: https://github.com/hynek/structlog/blob/e941e337d312eaf256595d9d09da4542c5e94d0b/src/structlog/typing.py#L61-L76
Expected Behavior
I would expect it to keep working, or at least decide whether or not I need the cast. 🤓
Actual Behavior
I don't seem to find a way to make the code pass except using Any all over the place I guess.
Your Environment
mypy.ini
(and other config files): https://github.com/hynek/structlog/blob/e941e337d312eaf256595d9d09da4542c5e94d0b/pyproject.toml#L175-L191edit I managed to work around it with the help of @Tinche but it still looks like I managed to break poor little Mypy.
The text was updated successfully, but these errors were encountered: