diff options
author | Stella Laurenzo <stellaraccident@gmail.com> | 2021-11-28 14:08:06 -0800 |
---|---|---|
committer | Stella Laurenzo <stellaraccident@gmail.com> | 2021-11-29 19:58:58 -0800 |
commit | a6e7d024a9ebda1564fd78b829c45169add80864 (patch) | |
tree | 1751e974b174494ef9fcbb10604c9fc767a244c0 /lldb/source/Plugins/ScriptInterpreter/Python/lldb-python.h | |
parent | 0150645bf5ae0d55866e77d2bec5aad4e5226b7c (diff) | |
download | llvm-a6e7d024a9ebda1564fd78b829c45169add80864.zip llvm-a6e7d024a9ebda1564fd78b829c45169add80864.tar.gz llvm-a6e7d024a9ebda1564fd78b829c45169add80864.tar.bz2 |
[mlir][python] Add pyi stub files to enable auto completion.
There is no completely automated facility for generating stubs that are both accurate and comprehensive for native modules. After some experimentation, I found that MyPy's stubgen does the best at generating correct stubs with a few caveats that are relatively easy to fix:
* Some types resolve to cross module symbols incorrectly.
* staticmethod and classmethod signatures seem to always be completely generic and need to be manually provided.
* It does not generate an __all__ which, from testing, causes namespace pollution to be visible to IDE code completion.
As a first step, I did the following:
* Ran `stubgen` for `_mlir.ir`, `_mlir.passmanager`, and `_mlirExecutionEngine`.
* Manually looked for all instances where unnamed arguments were being emitted (i.e. as 'arg0', etc) and updated the C++ side to include names (and re-ran stubgen to get a good initial state).
* Made/noted a few structural changes to each `pyi` file to make it minimally functional.
* Added the `pyi` files to the CMake rules so they are installed and visible.
To test, I added a `.env` file to the root of the project with `PYTHONPATH=...` set as per instructions. Then reload the developer window (in VsCode) and verify that completion works for various changes to test cases.
There are still a number of overly generic signatures, but I want to check in this low-touch baseline before iterating on more ambiguous changes. This is already a big improvement.
Differential Revision: https://reviews.llvm.org/D114679
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/lldb-python.h')
0 files changed, 0 insertions, 0 deletions