fix(core): remove 5 unnecessary type: ignore comments in ai.py#36968
Closed
Yvan Wang (BootstrapperSBL) wants to merge 1 commit intolangchain-ai:masterfrom
Closed
fix(core): remove 5 unnecessary type: ignore comments in ai.py#36968Yvan Wang (BootstrapperSBL) wants to merge 1 commit intolangchain-ai:masterfrom
Yvan Wang (BootstrapperSBL) wants to merge 1 commit intolangchain-ai:masterfrom
Conversation
Swap five silencing `# type: ignore` comments in `AIMessage` and
`AIMessageChunk` for `cast("dict[str, Any]", ...)` at the point
where mypy needs the narrowing. Runtime semantics are unchanged; the
two intentional ignores on the `AIMessageChunk.type` assignment and
the `__add__` overload remain in place.
|
This PR has been automatically closed because you are not assigned to the linked issue. External contributors must be assigned to an issue before opening a PR for it. Please:
Maintainers: reopen this PR or remove the |
29 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #36931
Five
# type: ignorecomments inAIMessage.content_blocks,AIMessageChunk.init_tool_calls, andAIMessageChunk.init_server_tool_callswere silencing mypy rather than addressing what it was complaining about. Swap each one for acast("dict[str, Any]", ...)placed at the site where narrowing is actually needed.For the
typeddict-itemsites the sourceToolCallTypedDict inmessages.tooldoes not declareindexorextras, even though they exist at runtime — casting the sourcetool_calltodict[str, Any]lets mypy read those keys without silencing the diagnostic. For the threeindexsites,self.content[idx]is typedstr | dict[str, Any]and mypy cannot narrow it from the outerisinstance(block, dict)check on a separate loop variable — casting the target todict[str, Any]at the assignment point expresses the intent directly.Runtime behavior is identical. The two load-bearing ignores called out in the issue (the
typefield override onAIMessageChunkand the__add__overload) are left in place — they encode real architectural choices, not suppressed bugs.Before:
After:
mypy langchain_coreandmypy testsboth still come back clean, and the fulllibs/coreunit test suite passes locally.