pygls:Python编写的通用语言服务器框架

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.pypyproject.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

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘童为Edmond

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值