typing: fix dataclass_with_properties for static type checkers #821
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.
Purpose of this PR:
Currently, all
model
in the codebase are implemented asdataclass
with additional functionality provided bydataclass_with_properties
. However, this approach causes static type checkers to fail in recognizing thedataclass
structure.To resolve this, I've introduced typing.dataclass_transform, which allows static type checkers to properly recognize and work with the enhanced
dataclasses
. This should improve type safety and make the code more robust from a type-checking perspective.Demonstration:
Content of
test.py
:Without this fix:
tools-python ❯ .venv/bin/pyright test.py tools-python/test.py tools-python/test.py:6:15 - error: Expected class but received "(type[_T@dataclass]) -> type[_T@dataclass]" (reportGeneralTypeIssues) tools-python/test.py:8:22 - error: Expected 1 more positional argument (reportCallIssue) 2 errors, 0 warnings, 0 informations
With this fix: