跳转到主要内容

用于文本编辑器的Python自动完成工具。

项目描述

The percentage of open issues and pull requests The resolution time is the median time an issue or pull request stays open. Tests PyPI Downloads

Jedi是一个用于Python的静态分析工具,通常用于IDEs/编辑器插件。Jedi专注于自动完成和goto功能。其他功能包括重构、代码搜索和查找引用。

Jedi有一个简单的API来工作。有一个作为VIM插件的参考实现。在您的REPL中进行自动完成也是可能的,IPython原生支持它,对于CPython REPL,您可以安装它。Jedi经过良好的测试,错误应该很少。

Jedi目前可以与以下编辑器/项目一起使用

还有更多!

有一些语言服务器使用Jedi

以下是一些来自jedi-vim的截图

https://github.com/davidhalter/jedi/raw/master/docs/_screenshots/screenshot_complete.png

几乎所有的补全

https://github.com/davidhalter/jedi/raw/master/docs/_screenshots/screenshot_function.png

文档

https://github.com/davidhalter/jedi/raw/master/docs/_screenshots/screenshot_pydoc.png

github获取最新版本(master分支应该始终是某种稳定/工作状态)。

文档在https://jedi.readthedocs.org/en/latest/。带有增强和/或修复的pull requests非常棒,也最受欢迎。Jedi使用语义版本控制

如果您想保持最新状态,请订阅此邮件列表:https://groups.google.com/g/jedi-announce。订阅只需发送一封空邮件到jedi-announce+subscribe@googlegroups.com

问题和疑问

您可以在python-jediStack Overflow上提问。

安装

查看文档.

功能和限制

Jedi的功能在此处列出:功能

您可以在Python 3.6+上运行Jedi,但它也应该能够理解比这些版本更旧的代码。此外,您应该能够很好地使用Virtualenvs

如何高效使用Jedi的技巧可以在这里找到。

API

您可以在这里找到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

返回的对象非常强大,实际上可能需要的一切。

在您的REPL(IPython等)中进行自动补全

Jedi是IPython的依赖项。因此,无需额外配置即可在IPython中使用Jedi进行自动补全。

这里是一个示例视频,展示了REPL补全的样子。对于Python shell,你可以在REPL中启用Tab补全,请参考这里

静态分析

对于许多静态分析形式,你可以尝试使用jedi.Script(...).get_names。它将返回一个你可以过滤和处理的名称列表。还有一种列出文件中语法错误的方法:jedi.Script.get_syntax_errors

重构

Jedi支持以下重构

  • jedi.Script.inline

  • jedi.Script.rename

  • jedi.Script.extract_function

  • jedi.Script.extract_variable

开发

有一个相当全面且详尽的开发文档

测试

测试套件使用pytest

pip install pytest

如果你只想测试特定的Python版本(例如Python 3.8),这很简单,就像

python3.8 -m pytest

更多详细信息请访问测试文档

致谢

非常感谢所有的贡献者

变更日志

未发布

0.19.1 (2023-10-02)

  • Python 3.12支持(感谢Peter!)

0.19.0 (2023-07-29)

  • Python 3.11支持

  • 对于(例如IPython)用户,性能有大幅提升。这尤其影响了拥有大量数据集的用户。

  • 添加jedi.settings.allow_unsafe_interpreter_executions以使IPython用户更容易避免不安全的执行。

0.18.2 (2022-11-21)

  • 添加了与attrs.define等效的数据类

  • 从Pytest入口点查找固定设置;例如,这样安装的pytest插件有pytest-django、pytest-sugar和Faker。

  • 修复了涉及venv的Project.search,因此例如在某些情况下,jedi-vim中的:Pyimport django.db无法正常工作。

  • 以及许多较小的错误修复

0.18.1 (2021-11-17)

  • 隐式命名空间现在在Name().type中是单独的类型

  • Python 3.10支持

  • 主要是错误修复

0.18.0 (2020-12-25)

  • 弃用了Python 2和Python 3.5

  • 在大多数地方使用pathlib.Path()作为输出而不是str:- Project.path - Script.path - Definition.module_path - Refactoring.get_renames - Refactoring.get_changed_files

  • 现在在Name().type中,具有@property的函数返回property而不是function

  • 开始使用注解

  • 更好地支持walrus运算符

  • 现在可以读取项目属性

  • 移除了所有弃用项

这可能是1.0之前最后一个次要版本。

0.17.2 (2020-07-17)

  • 添加了一个选项,可以将环境变量传递给Environment

  • Project(...).path现在存在

  • 支持Python 3.9

  • 一些错误修复

这将是不再支持Python 2和Python 3.5的最后一个版本。0.18.0将是Python 3.6+。

0.17.1 (2020-06-20)

  • Django 元类支持

  • 支持 Django 管理器(在管理器/查询集上完成)

  • 将 Django Stubs 添加到 Jedi,感谢 Django Stubs 项目的所有贡献者

  • 添加了 SyntaxError.get_message

  • 支持 Python 3.9

  • 修复了错误(主要针对泛型)

0.17.0 (2020-04-14)

  • 添加了对 Project 的支持。这允许用户指定 Jedi 应该与之一起工作的文件夹。

  • 添加了对重构的支持。已实现以下重构:Script.renameScript.inlineScript.extract_variableScript.extract_function

  • 添加了 Script.get_syntax_errors 以显示当前脚本中的语法错误。

  • 添加了对单个文件和项目的代码搜索功能。新函数是 Project.searchProject.complete_searchScript.searchScript.complete_search

  • 添加了 Script.help 以便于显示帮助窗口。现在返回 Python 关键词/操作符的 pydoc 信息。这意味着在类关键词上现在将返回 Python 内置函数 help('class') 的文档字符串。

  • API 文档现在更加易读且完整。请查看 https://jedi.readthedocs.io。其中大部分已经重写。

  • 移除了 Python 3.4 支持

  • 许多错误修复

这可能是最后一个支持 Python 2 和 Python 3.5 的小版本。在 0.17.1+ 中将提供错误修复。下一个小版本/大版本可能是 Jedi 1.0.0。

0.16.0 (2020-01-26)

  • 添加了 Script.get_context 以获取当前所在信息。

  • 支持对 Pytest 修复件的补全/类型推断。

  • 在第一次使用后,Tensorflow、Numpy 和 Pandas 的补全应该现在大约快 4-10倍

  • 字典键补全现在可以工作。例如,d = {1000: 3}; d[10 将展开为 1000

  • “代理”的补全现在可以工作。这些是在加载后具有 __getattr__(self, name) 方法的类,该方法执行 return getattr(x, name)

  • 在类中的函数/属性上的“转到”现在会转到其超类中的定义。

  • 重要的 Script API 变更
    • jedi.Script 的行和列参数现在已弃用

    • completions 已弃用,请使用 complete 代替

    • goto_assignments 已弃用,请使用 goto 代替

    • goto_definitions 已弃用,请使用 infer 代替

    • call_signatures 已弃用,请使用 get_signatures 代替

    • usages 已弃用,请使用 get_references 代替

    • jedi.names 已弃用,请使用 jedi.Script(...).get_names()

  • BaseName.goto_assignments 已重命名为 BaseName.goto

  • 将 follow_imports 添加到 Name.goto。现在其签名与 Script.goto 相匹配。

  • Python 2 支持 已弃用。对于此版本,将尽力而为。Python 2 已达到生命的尽头,现在只是关于平稳过渡。Python 2 的错误将不再修复,并且已经有三分之一的测试被跳过。

  • 已移除 settings.no_completion_duplicates。它未经过测试,而且可能没有人使用它。

  • 已删除 settings.use_filesystem_cachesettings.additional_dynamic_modules,它们现在不再被使用。可能几乎没有人使用它们。

0.15.2 (2019-12-20)

  • 签名检测现在更好

  • 添加模糊补全功能,使用 Script(...).completions(fuzzy=True)

  • 超过1MB(约20kLOC)的文件将被裁剪以避免完全卡住。

  • 许多小错误修复

  • 关于上下文/值的重大重构

0.15.1 (2019-08-13)

  • 小的错误修复和删除了一个打印语句

0.15.0 (2019-08-11)

  • 添加了文件路径补全,现在有一个新的 Completion.typepath。例如: '/ho -> '/home/

  • *args/**kwargs 解析。如果可能,Jedi 将用实际替代方案替换参数。

  • 对枚举和数据类的更好支持

  • 在使用解释器时,现在将执行属性,因为很多人对此表示不满。讨论在 #1299,#1347。

新API

  • Name.get_signatures() -> List[Signature]。签名类似于 CallSignature。因此,Name.params 已弃用。

  • Signature.to_string() 用于格式化签名。

  • Signature.params -> List[ParamName],ParamName 具有以下附加属性 infer_default()infer_annotation()to_string()kind

  • Name.execute() -> List[Name],使得推断函数的返回值成为可能。

0.14.1 (2019-07-13)

  • CallSignature.index 现在应该工作得更好

  • 一些较小的错误修复

0.14.0 (2019-06-20)

  • 添加了 goto_*(prefer_stubs=True) 以及 goto_*(prefer_stubs=True)

  • 现在使用存根进行类型推断

  • 使用 Typeshed 进行更好的类型推断

  • 重构了 Name.full_name,应该有更正确的返回值

0.13.3 (2019-02-24)

0.13.2 (2018-12-15)

  • 修复了导致 Jedi 启动大量子进程的错误。

0.13.1 (2018-10-02)

  • 错误修复,因为 tensorflow 补全仍然很慢。

0.13.0 (2018-10-02)

  • 一个小版本。一些错误修复。

  • 移除 Python 3.3 支持。Python 基金会已经停止支持 Python 3.3。

  • 默认环境现在使用与 Python 进程相同的 Python 版本。在 0.12.x 中,我们曾经使用系统上最新的 Python 版本。

  • include_builtins 添加为 usages 的参数。

  • goto_assignments 有一个新的 follow_builtin_imports 参数,它略微改变了先前的行为。

0.12.1 (2018-06-30)

  • 此版本强制您升级 parso。如果不这样做,则将无法使用任何功能。否则,更改应仅限于错误修复。不幸的是,Jedi 仍然使用一些 parso 的内部功能,这使得在多个版本之间保持兼容性变得困难。需要 Parso >=0.3.0。

0.12.0 (2018-04-15)

  • 虚拟环境/环境支持

  • F-String 补全/转到支持

  • 不再因段错误而崩溃

  • 清理了导入逻辑

  • 理解 async/await 并自动补全它(包括异步生成器)

  • 更好的命名空间补全

  • Windows 测试通过(包括 Windows 的 CI)

  • 移除 Python 2.6 支持

0.11.1 (2017-12-14)

  • Parso 更新 - 缓存层已损坏

  • 更好的 usages - 大量内部代码被移除并改进。

0.11.0 (2017-09-20)

  • 将 Jedi 的解析器拆分为一个名为 parso 的独立项目。

  • 避免在REPL完成时产生副作用。

  • Numpy文档字符串支持应该会更好。

  • 移除了settings.*recursion*,它们现在不可用。

0.10.2 (2017-04-05)

  • Python打包很糟糕。某些文件没有包含在0.10.1中。

0.10.1 (2017-04-05)

  • 修复了一些非常烦人的bug。

  • 准备将解析器从Jedi中提取出来。

0.10.0 (2017-02-03)

  • 为完整的Python语法提供实际语义完成。

  • yield from PEP 380提供基本类型推断。

  • 支持PEP 484(其中大部分重要功能)。感谢Claude!(@reinhrst)

  • get_line_code添加到NameCompletion对象中。

  • 完全重写了类型推断引擎。

  • 为(快速)解析Python代码的差异提供了一种新的、更好的解析器。

0.9.0 (2015-04-10)

  • 将导入逻辑重写得更像Python的。现在有一个InferState.modules导入缓存,类似于sys.modules

  • 集成了2to3的解析器。这将使重构成为可能。将来也可以检查错误消息(例如编译AST会产生的错误)。

  • 使用新的解析器,类型推断也完全改变。现在它更简单、更易读。

  • 完全重写了REPL完成。

  • 添加了jedi.names,一个执行静态分析的命令。感谢sourcegraph团队赞助此功能!

  • Alpha版本的linter。

0.8.1 (2014-07-23)

  • 错误修复版本,最后一个版本忘记包含改进内置库自动完成的文件。已修复。

0.8.0 (2014-05-05)

  • 编译模块(例如内置的、sys)的内存消耗已大幅减少。加载时间也有所下降(基本上与导入一样长)。

  • REPL完成开始变得可用。

  • 各种小的API更改。总的来说,这个版本侧重于稳定性和内部API的重构。

  • 引入了运算符优先级,这使得计算正确的数组索引和__getattr__字符串成为可能。

0.7.0 (2013-08-09)

  • 从LGPL切换到MIT许可。

  • 将解释器类添加到API中,以使REPL中的自动完成成为可能。

  • 添加了对命名空间包的自动完成支持。

  • 添加了sith.py,一种新的随机测试方法。

0.6.0 (2013-05-14)

  • 具有内置部分缓存的更快解析器。

  • 测试套件,感谢@tkf。

0.5版本(2012)

  • 初始开发。

项目详情


下载文件

下载适用于您平台文件的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

jedi-0.19.1.tar.gz (1.2 MB 查看哈希值)

上传时间:

构建分发

jedi-0.19.1-py2.py3-none-any.whl (1.6 MB 查看哈希值)

上传时间: Python 2 Python 3

由以下组织支持

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF赞助商 PingdomPingdom 监控 SentrySentry 错误记录 StatusPageStatusPage 状态页面