Setup Python type stubs for reclass_rs
#199
Merged
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.
We switch to managing the Python package contents ourselves, so we can include the type stubs in a way which makes mypy's
stubtesthappy.Notably
stubtestwill complain about missing type stubs if we don't provide both__init__.pyiandreclass_rs.pyi. Note that we provide__init__.pyias a symlink toreclass_rs.pyisince the__init__.pyonly re-exports the API of the nativereclass_rssubmodule.The PR also switches the Python module definition in rust from
fn reclass_rs()tomod reclass_rs(in anticipation of PyO3's WIP introspection & type stub generation tooling) and we add a CI step which runs mypy and mypy's stubtest to provide basic validation for our type stubs.Unfortunately, from some limited testing,
stubtestdoesn't necessarily catch incorrect type stubs, since some of the PyO3 generated functions apparently have very limited metadata (especially for return types).Checklist
bug,enhancement,documentation,change,breaking,dependency,internalas they show up in the changelog