chore: make pyright
run in strict
mode and add mypy
#78
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.
Summary
This PR upgrade pyright
typeCheckingMode
fromstandard
tostrict
, and it also addsmypy
typechecking to the pre-commit hooks and to CI.This is an attempt to make sure our type definitions are very sound, and will hopefully catch some bugs in the future.
There were some exceptions where I had to resort to
# type: ignore
.Most of them are due to incomplete type annotations on third party libraries, which triggers the
reportUnknownArgumentType
orreportUnknownVariable
checks from pyright (cough coughpyarrow
).Some other exceptions are due to there being to way to type things like
Unpack[T]
whereT
is not a concreteTypedDict
and is instead aTypeVar
that is bound to aTypedDict
. In such cases, I added comments explaining why the ignore is necessary. Yes, I could rewrite the whole API to make it fully type-able, but that would also make the code a lot more verbose probably.You can review commit by commit.