Jedi 是一种 Python 静态分析工具,通常用于 IDE/编辑器插件。 Jedi 专注于自动完成和跳转功能。其他功能包括重构、代码搜索和查找参考。
Jedi 有一个简单的 API 可以使用。有一个作为 VIM 插件的参考实现。 REPL 中的自动补全也是可能的,IPython 原生使用它,对于 CPython REPL,您可以安装它。 Jedi 经过充分测试,错误应该很少见。
Jedi 目前可与以下编辑器/项目一起使用:
还有更多!
有一些使用 Jedi 的语言服务器:
以下是从 jedi-vim 拍摄的一些图片:
完成几乎所有事情:
文档:
从 github 获取最新版本(主分支应该始终稳定/工作)。
文档可在 https://jedi.readthedocs.org/en/latest/ 获取。具有增强功能和/或修复功能的拉取请求非常棒且最受欢迎。 Jedi 使用语义版本控制。
如果您想了解最新版本,请订阅此邮件列表:https://groups.google.com/g/jedi-announce。要订阅,您只需发送一封空电子邮件至[email protected]
。
您可以在问题跟踪器 <https://github.com/davidhalter/jedi/> 中提交问题和疑问。或者,您也可以在 Stack Overflow 上使用标签python-jedi
进行询问。
查看文档。
Jedi 的功能列于此处:功能。
您可以在 Python 3.6+ 上运行 Jedi,但它也应该理解早于这些版本的代码。此外,您应该能够很好地使用 Virtualenvs。
有关如何有效使用 Jedi 的提示可以在这里找到。
您可以在此处找到 API 的综合文档。
有以下命令:
jedi.Script.goto
jedi.Script.infer
jedi.Script.help
jedi.Script.complete
jedi.Script.get_references
jedi.Script.get_signatures
jedi.Script.get_context
返回的对象非常强大,并且确实是您可能需要的全部。
Jedi 是 IPython 的依赖项。因此,无需额外配置即可在 IPython 中使用 Jedi 自动完成。
以下是 REPL 完成的示例视频。对于python
shell,您可以在 REPL 中启用制表符补全。
对于很多形式的静态分析,您可以尝试使用jedi.Script(...).get_names
。它将返回一个名称列表,然后您可以过滤和使用该列表。还有一种方法可以列出文件中的语法错误: jedi.Script.get_syntax_errors
。
Jedi 支持以下重构:
jedi.Script.inline
jedi.Script.rename
jedi.Script.extract_function
jedi.Script.extract_variable
支持使用jedi.Script.search
进行模块搜索,以及使用jedi.Project.search
进行项目搜索。搜索的方法是提供名称(如foo
或使用点语法(如foo.bar
。此外,您还可以提供 API 类型,例如class foo.bar.Bar
。还有函数jedi.Script.complete_search
和jedi.Project.complete_search
。
有一个非常好的和广泛的开发文档。
测试套件使用pytest
:
pip安装pytest
如果您只想测试特定的 Python 版本(例如 Python 3.8),则很简单:
python3.8 -m pytest
有关更多详细信息,请访问测试文档。
非常感谢所有贡献者!