[python-package] fix mypy errors in Dataset construction #6106
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.
Contributes to #3756.
Contributes to #3867.
Fixes the following errors from
mypy
These errors all come from the fact that you can't use an expression like
To help
mypy
understand which type from a union likeUnion[List[np.ndarray], List[Sequence]]
a particular code block is working with.As described in https://mypy.readthedocs.io/en/stable/type_narrowing.html#typeguards-with-parameters, in Python 3.10
mypy
introduced a feature to do exactly that. If you set up a function likef(l) -> typing.TypeGuard[List[np.ndarray]]
, that tells the type checker:f()
returns abool
f(l)
returnsTrue
, thenl
must be aList[np.ndarray]
This PR proposes adding such guards to
lightgbm
. This will help type checkers (likemypy
in this project's CI and others in users' IDEs) to catch errors deeper in the code paths involving lists ofnumpy
arrays and lists ofSequence
objects.