pygls:Python编写的通用语言服务器框架
pyglsA pythonic generic language server项目地址:https://gitcode.com/gh_mirrors/py/pygls
项目目录结构及介绍
pygls项目遵循Python项目的常见布局,其核心目录和文件大致如下:
-
src
: 包含项目的源代码,其中主要的模块和类定义在此。pygls
: 核心包,封装了Language Server Protocol(LSP)的相关实现。lsp
: 包含与LSP标准协议相关的类型和方法。server
: 实现语言服务器的核心逻辑和服务管理。
-
docs
: 文档目录,包含了项目的API参考、用户指南等文档资料。 -
tests
: 测试代码存放目录,确保项目的功能完整性和稳定性。 -
examples
: 示例代码目录,提供了快速上手pygls的示例服务器实现。 -
setup.py
和pyproject.toml
: 分别是Python传统安装脚本和现代依赖管理文件,用于项目的安装和环境配置。 -
.gitignore
,LICENSE
,CONTRIBUTING.md
,CODE_OF_CONDUCT.md
: 分别定义了Git忽略的文件模式、软件许可协议、贡献指导和行为准则。
项目的启动文件介绍
在开发或测试pygls为基础的语言服务器时,通常不需要直接编辑pygls
库本身来启动服务。开发者应该从创建自己的服务实例开始。一个基础的启动示例可以通过以下Python脚本来实现:
from pygls.lsp.server import LanguageServer
from lsprotocol.types import TEXT_DOCUMENT_COMPLETION
server = LanguageServer("example-server", "v0.1")
@server.feature(TEXT_DOCUMENT_COMPLETION)
def completions(params: TEXT_DOCUMENT_COMPLETION):
# 自定义完成项逻辑
...
server.start_io()
这个简单的脚本引入必要的模块,定义了一个处理文档完成请求的功能,并启动服务器。实际应用中,启动逻辑可能更复杂,包括配置监听端口、日志设置等。
项目的配置文件介绍
pygls自身不强制要求特定的全局配置文件。配置主要是通过编程方式在语言服务器初始化或特定功能定义时进行的。然而,对于开发者构建基于pygls的项目,常见的做法是利用如pyproject.toml
或.env
文件来管理项目级别的配置和依赖,特别是在使用Poetry作为包管理器时,pyproject.toml
将记录项目依赖和元数据。
例如,一个典型的pyproject.toml
可能会包含项目名称、版本、作者信息以及项目的依赖列表,如下所示:
[tool.poetry]
name = "my-language-server"
version = "0.1.0"
description = "A custom language server built with pygls."
authors = ["Your Name <your.email@example.com>"]
[tool.poetry.dependencies]
pygls = "^2.0.0"
[build-system]
requires = ["poetry>=1.0"]
build-backend = "poetry.core.masonry.api"
在进行具体的应用开发时,你可能还会在项目的根目录下添加其他配置文件,比如读取环境变量的.env
文件,或者针对特定编辑器的配置文件,但这些并不直接由pygls框架指定,而是根据你的应用程序需求来定。
pyglsA pythonic generic language server项目地址:https://gitcode.com/gh_mirrors/py/pygls