Skip to main content

Zero-dependency Python library for Language Server Protocol types

Project description

LSP Types

PyPI version Python Tests License: MIT

Publish the excellent work of Sublime LSP as a PyPI package.

image

LSP Types is a Python package that aims to provide a fully typed interface to Language Server Protocol (LSP) interactions. It can be used to simply utilize the types, or to interact with an LSP server over stdio.

The library has minimal dependencies (tomli-w for TOML config serialization).

Installation

pip install lsp-types

Usage

Using the LSP types:

import lsp_types

# Use the types

Using an LSP process through stdio:

[!TIP] Recommend using basedpyright for extended features.

from lsp_types.process import LSPProcess, ProcessLaunchInfo

process_info = ProcessLaunchInfo(cmd=[
    "pyright-langserver", "--stdio"
])

async with LSPProcess(process_info) as process:
    # Initialize the process
    ...

    # Grab a typed listener
    diagnostics_listener = process.notify.on_publish_diagnostics(timeout=1.0)

    # Send a notification (`await` is optional. It ensures messages have been drained)
    await process.notify.did_open_text_document(...)

    # Wait for diagnostics to come in
    diagnostics = await diagnostics_listener

LSPs

The following LSPs are available out of the box:

Feature Support Matrix

Legend

Symbol Meaning
:white_check_mark: Fully supported
:warning: Partial support (see notes)
:x: Not supported
:grey_question: Not tested / Not exposed in API

Features by Backend

Last verified: basedpyright 1.36.2, Pyrefly 0.48.2, ty 0.0.12

Feature Pyright Pyrefly ty Notes
Diagnostics :white_check_mark: :white_check_mark: :warning: ty requires files on disk
Hover :white_check_mark: :white_check_mark: :white_check_mark: ty shows type only, not variable name
Completion :white_check_mark: :white_check_mark: :warning: ty requires files on disk
Completion Resolution :white_check_mark: :x: :white_check_mark: Pyrefly: not yet supported
Signature Help :white_check_mark: :white_check_mark: :white_check_mark:
Rename :white_check_mark: :warning: :warning: Pyrefly: disabled for external files; ty: requires files on disk
Semantic Tokens :white_check_mark:* :white_check_mark:** :white_check_mark: *basedpyright recommended; **Pyrefly: legend not advertised (see docs)
Go to Definition :grey_question: :grey_question: :grey_question: Not exposed in Session API
Find References :grey_question: :grey_question: :grey_question: Not exposed in Session API
Code Actions :grey_question: :grey_question: :grey_question: Not exposed in Session API
Formatting :grey_question: :grey_question: :grey_question: Not exposed in Session API

See Feature Verification Guide for methodology on maintaining this table.

For detailed documentation:

Pyright Example

from lsp_types import Session
from lsp_types.pyright.backend import PyrightBackend

async def test_pyright_session():
    code = """\
def greet(name: str) -> str:
    return 123
"""

    session = await Session.create(PyrightBackend(), initial_code=code)
    diagnostics = await session.get_diagnostics()

    assert diagnostics != []

    code = """\
def greet(name: str) -> str:
    return f"Hello, {name}"
"""

    await session.update_code(code)
    diagnostics = await session.get_diagnostics()
    assert diagnostics == []

    await session.shutdown()

Development

  • Requires Python 3.12+.
  • Requires uv for dev dependencies.

Generate latest types in one go:

make generate-latest-types

Download the latest json schema:

make download-schemas

Generate the types:

make generate-types

Copy the lsp_types/types.py file to your project.

NOTE: Do not import types that begin with __. These types are internal types and are not meant to be used.

TODOs

  • Support server request handlers.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lsp_types-0.14.1.tar.gz (73.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lsp_types-0.14.1-py3-none-any.whl (78.2 kB view details)

Uploaded Python 3

File details

Details for the file lsp_types-0.14.1.tar.gz.

File metadata

  • Download URL: lsp_types-0.14.1.tar.gz
  • Upload date:
  • Size: 73.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lsp_types-0.14.1.tar.gz
Algorithm Hash digest
SHA256 55c073ed5af1c0d1c61ed209e6649341c93a8f8c0040e6240b9ef433894b4f2a
MD5 1abc9a245afa46f22d6f5ec396afab27
BLAKE2b-256 7a36a95a2ef5d89beb8cac0fcb463cd720722fa40301dae9633924516a70bfcc

See more details on using hashes here.

Provenance

The following attestation bundles were made for lsp_types-0.14.1.tar.gz:

Publisher: publish.yml on Mazyod/lsp-python-types

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lsp_types-0.14.1-py3-none-any.whl.

File metadata

  • Download URL: lsp_types-0.14.1-py3-none-any.whl
  • Upload date:
  • Size: 78.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lsp_types-0.14.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6623461af8407dd72458f9de7472a5fef2f3e9b56dde47b389e021771982170f
MD5 43d752c0902ceb78f2f4f346754a5e0d
BLAKE2b-256 5598cd6b76eb51b4fb3c5b2f6d28e4fd4bc515881bf5d48c48f7e64260f22d7b

See more details on using hashes here.

Provenance

The following attestation bundles were made for lsp_types-0.14.1-py3-none-any.whl:

Publisher: publish.yml on Mazyod/lsp-python-types

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page