在Arch中安装python-language-server时,如何确保它使用YAPF进行代码格式化?

在Arch中安装python-language-server时,如何确保它使用YAPF进行代码格式化?

该软件包python-language-server(Python LSP 支持)是 Arch Linux 中 Kate 编辑器的新可选依赖项。

以下是为什么这可能很有趣的一些背景:

Langserver.org

为什么选择LSP?LSP 创造了机会,将在任何编辑器、IDE 或客户端端点中为任何编程语言提供高水平支持的 m 倍 n 复杂性问题降低为更简单的 m 加 n 问题。

我决定尝试一下。所以我在这里检查了更多信息:

palantir/python-language-server:Python 语言服务器协议的实现

我想用亚普夫,所以我记下了这个信息:

可以使用 extras 语法安装可选提供程序。例如要安装 YAPF 格式:

pip install 'python-language-server[yapf]'

我想使用 Arch 存储库而不是 pip 来安装它。我的问题是,从 Arch 存储库安装“python-language-server”时如何获得相同的结果?这可以等价吗?

pacman -Syu python-language-server yapf

可选背景:为什么我要使用YAPF:

大多数当前的 Python 格式化程序(例如 autopep8 和 pep8ify)都是为了消除代码中的 lint 错误。这有一些明显的局限性。例如,符合 PEP 8 准则的代码可能不会重新格式化。但这并不意味着代码看起来不错。

YAPF 采用了不同的方法。它基于 Daniel Jasper 开发的“clang-format”。本质上,该算法会获取代码并将其重新格式化为符合样式指南的最佳格式,即使原始代码没有违反样式指南。这个想法也类似于 Go 编程语言的“gofmt”工具:结束所有关于格式化的圣战 - 如果每当进行修改时,项目的整个代码库都通过 YAPF 简单地传输,则整个项目的风格保持一致,并且有没有必要在每次代码审查中争论风格。

最终目标是 YAPF 生成的代码与程序员遵循风格指南所编写的代码一样好。它消除了维护代码的一些苦差事。

答案1

是的

pacman -S python-language-server yapf将获得与 相同的结果pip install 'python-language-server[yapf]'。您甚至可以通过安装 pacman 来证明这一点,然后尝试该pip命令,它会告诉您要求已经满足。

$ pip install 'python-language-server[yapf]'
Requirement already satisfied: python-language-server[yapf] in /usr/lib/python3.8/site-packages (0.31.7)
Requirement already satisfied: jedi<0.16,>=0.14.1 in /usr/lib/python3.8/site-packages (from python-language-server[yapf]) (0.15.1)
Requirement already satisfied: python-jsonrpc-server>=0.3.2 in /usr/lib/python3.8/site-packages (from python-language-server[yapf]) (0.3.4)
Requirement already satisfied: pluggy in /usr/lib/python3.8/site-packages (from python-language-server[yapf]) (0.13.1)
Requirement already satisfied: ujson<=1.35 in /usr/lib/python3.8/site-packages (from python-language-server[yapf]) (1.35)
Requirement already satisfied: yapf in /usr/lib/python3.8/site-packages (from python-language-server[yapf]) (0.29.0)
Requirement already satisfied: parso>=0.5.0 in /usr/lib/python3.8/site-packages (from jedi<0.16,>=0.14.1->python-language-server[yapf]) (0.6.1)

相关内容