Publish the excellent work of Sublime LSP as a PyPI package.
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.
It is a goal to maintain zero-dependency status for as long as possible.
pip install lsp-types
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
The following LSPs are available out of the box:
async def test_pyright_session():
code = """\
def greet(name: str) -> str:
return 123
"""
pyright_session = await PyrightSession.create(initial_code=code)
diagnostics = await pyright_session.get_diagnostics()
assert diagnostics["diagnostics"] != []
code = """\
def greet(name: str) -> str:
return f"Hello, {name}"
"""
assert await pyright_session.update_code(code) == 2
diagnostics = await pyright_session.get_diagnostics()
assert diagnostics["diagnostics"] == []
- Requires Python 3.11+.
- Requires
poetry
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-schemas
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.
- Automate package releases on Github.
- Support server request handlers.