NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3219 most downloaded on PyPI
A pythonic generic language server (pronounced like 'pie glass')
Last release 6 months ago
25 Mar 2026
Ships fairly regularly
a new release about every 2 months
Some releases are documented
notes for 13 of 38 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
48 releases · first in 2018
feat(ServerTextPosition): implement comparison operators by @lheckemann in #597
license field to pyproject.toml by @tombh in #601Full Changelog: v2.1.0...v2.1.1
More details: https://github.com/openlawlibrary/pygls/releases/tag/v2.1.1
One column per quarter.
Normalize percent-encoded URIs used as workspace dict keys by @edvilme in #594
Full Changelog: v2.0.1...v2.1.0
More details: https://github.com/openlawlibrary/pygls/releases/tag/v2.1.0
docs: drop pre-release banner by @alcarney in #580
Full Changelog: v2.0.0...v2.0.1
More details: https://github.com/openlawlibrary/pygls/releases/tag/v2.0.1
chore: remove deprecated code by @alcarney in #492
textDocument/rename and textDocument/prepareRename by @alcarney in #452pygls-playground extension a workspace local extension by @alcarney in #458server.py by @Viicos in #471lsprotocol v2024.0.0a2 by @karthiknadig in #487lsprotocol type definitions by @alcarney in #489BinaryIO not TextIO in start_io() by @tombh in #497multiprocessing.pool.ThreadPool by @alcarney in #498None for non file: URIs by @alcarney in #500start_ws method to pygls' LanguageClient by @alcarney in #503JsonRPCServer.start_io to high-level asyncio API by @alcarney in #506JsonRPCServer.start_tcp and JsonRPCServer.start_ws to high level asyncio APIs by @alcarney in #507issubclass when checking the client/server instance to inject by @alcarney in #524@server.command(...) handlers by @alcarney in #527workspace/executeCommand with async handlers by @alcarney in #535TextDocument.lines be a Sequence[str] rather than List[str] by @nthykier in #553poetry to uv by @tombh in #561pythonPath to pythonCommand in the pygls-playground extension by @alcarney in #575Full Changelog: v1.3.1...v2.0.0
More details: https://github.com/openlawlibrary/pygls/releases/tag/v2.0.0
pythonPath to pythonCommandfix: 🐛 fix conversion of client_position into offset_at_position by @wolfskaempf in #567
Full Changelog: v2.0.0a5...v2.0.0a6
More details: https://github.com/openlawlibrary/pygls/releases/tag/v2.0.0a6
Typing tweaks by @dimbleby in #547
TextDocument.lines be a Sequence[str] rather than List[str] by @nthykier in #553poetry to uv by @tombh in #561Full Changelog: v2.0.0a4...v2.0.0a5
More details: https://github.com/openlawlibrary/pygls/releases/tag/v2.0.0a5
poetry to uvTextDocument.lines be a Sequence[str]Update the hello world example to the v2.0 syntax by @itsmeknt in #533
workspace/executeCommand with async handlers by @alcarney in #535Full Changelog: v2.0.0a3...v2.0.0a4
More details: https://github.com/openlawlibrary/pygls/releases/tag/v2.0.0a4
workspace/executeCommand with async handlerschore: fix migration guide link by @alcarney in #513
issubclass when checking the client/server instance to inject by @alcarney in #524@server.command(...) handlers by @alcarney in #527Full Changelog: v2.0.0a2...v2.0.0a3
More details: https://github.com/openlawlibrary/pygls/releases/tag/v2.0.0a3
issubclass to check client/server instance} in examples/hello-world/README.md (#523)pytest-asyncio deprecation warningsinitializedocs: add RELEASING.md doc by @tombh in #488
BinaryIO not TextIO in start_io() by @tombh in #497multiprocessing.pool.ThreadPool by @alcarney in #498None for non file: URIs by @alcarney in #500start_ws method to pygls' LanguageClient by @alcarney in #503JsonRPCServer.start_io to high-level asyncio API by @alcarney in #506JsonRPCServer.start_tcp and JsonRPCServer.start_ws to high level asyncio APIs by @alcarney in #507Full Changelog: v2.0.0a1...v2.0.0a2
More details: https://github.com/openlawlibrary/pygls/releases/tag/v2.0.0a2
BinaryIO not TextIO in start_io()None for non file: URIsstart_tcp method to JsonRPCClientpygls.cli.start_serverstart_ws method to pygls' LangugageClientmultiprocessing.pool.ThreadPoolaio_readline function to a run_async methodstart_iopygls.io_ module for pygls' clientserver.start_tcpserver.start_wsasyncio.Protocolchore: remove deprecated code by @alcarney in #492
textDocument/rename and textDocument/prepareRename by @alcarney in #452pygls-playground extension a workspace local extension by @alcarney in #458server.py by @Viicos in #471lsprotocol v2024.0.0a2 by @karthiknadig in #487lsprotocol type definitions by @alcarney in #489Full Changelog: v1.3.1...v2.0.0a1
More details: https://github.com/openlawlibrary/pygls/releases/tag/v2.0.0a1
resolve_provider value for CodeLensOptionsprepare_provider for RenameOptionsresolve_provider for DocumentLinkOptionssphinx-design pluginpygls-playgroundserver.pypathMappingsgenerate_codepygls.server.cwd settingBaseLanguageServerServer to JsonRPCServertextDocument/hover requeststextDocument/codeLensget_client_for to accept custom capabilitiesTypo: Apache License missing dash: Affects PyPI License Declaration by @WilliamRoyNelson in https://github.com/openlawlibrary/pygls/pull/435
Full Changelog: https://github.com/openlawlibrary/pygls/compare/v1.3.0...v1.3.1
More details: https://github.com/openlawlibrary/pygls/releases/tag/v1.3.1
ci: don't let Pyodide test fail the whole build by @tombh in https://github.com/openlawlibrary/pygls/pull/420
pytest-lsp and lsp-devtools to Implementations.md by @alcarney in https://github.com/openlawlibrary/pygls/pull/426lsprotocol to 2023.0.1 by @karthiknadig in https://github.com/openlawlibrary/pygls/pull/432Full Changelog: https://github.com/openlawlibrary/pygls/compare/v1.2.1...v1.3.0
More details: https://github.com/openlawlibrary/pygls/releases/tag/v1.3.0
pygls.trace.serverchore: clean CHANGELOG by @tombh in https://github.com/openlawlibrary/pygls/pull/415
Full Changelog: https://github.com/openlawlibrary/pygls/compare/v1.2.0...v1.2.1
More details: https://github.com/openlawlibrary/pygls/releases/tag/v1.2.1
Remove dependency on typeguard by @karthiknadig in https://github.com/openlawlibrary/pygls/pull/411
typeguard by @karthiknadig in https://github.com/openlawlibrary/pygls/pull/411Full Changelog: https://github.com/openlawlibrary/pygls/compare/v1.1.2...v1.2.0
More details: https://github.com/openlawlibrary/pygls/releases/tag/v1.2.0
poetry.lock after removing typeguardchore: split protocol.py into own folder/files by @tombh in https://github.com/openlawlibrary/pygls/pull/398
Full Changelog: https://github.com/openlawlibrary/pygls/compare/v1.1.1...v1.1.2
More details: https://github.com/openlawlibrary/pygls/releases/tag/v1.1.2
chore: manual changes for v1.1.0 release by @tombh in https://github.com/openlawlibrary/pygls/pull/390
Full Changelog: https://github.com/openlawlibrary/pygls/compare/v1.1.0...v1.1.1
More details: https://github.com/openlawlibrary/pygls/releases/tag/v1.1.1
chore: fix use of deprecated methods in tests/test_language_server.py by @RossBencina in https://github.com/openlawlibrary/pygls/pull/384
https://pypi.org/project/pygls/1.1.0
pygls.Server uses the event loop it is given by @alcarney in https://github.com/openlawlibrary/pygls/pull/336LanguageClient autogenerated from lsprotocol type definitions by @alcarney in https://github.com/openlawlibrary/pygls/pull/328MethodTypeNotRegisteredError by @alcarney in https://github.com/openlawlibrary/pygls/pull/339pygls.Client by @alcarney in https://github.com/openlawlibrary/pygls/pull/340LanguageServer type annotation when future annotations are used by @zanieb in https://github.com/openlawlibrary/pygls/pull/352black formatting by @tombh in https://github.com/openlawlibrary/pygls/pull/354await syntax support for sending edit request to client by @oliversen in https://github.com/openlawlibrary/pygls/pull/350Full Changelog: https://github.com/openlawlibrary/pygls/compare/v1.0.2...v1.1.0
More details: https://github.com/openlawlibrary/pygls/releases/tag/v1.1.0
Fix broken link and outdated comment
Correctly cast from UTF16 positions
Ensure server commands can be executed
Mypy lints
Error code of JsonRpcInternalError
Only show code action when there's no sum
Don't include trailing whitespace in code action title
'bool' object has no attribute 'resolve_provider'
Computation of formatting and diagnostic provider capabilities
git-cliffmatrix.python-version in cache key$/await syntax support for sending edit request to clientNotebookDocumentSyncOptionsinlay_hints.py serverPositionEncoding client capabilityblack formatting.git-blame-ignore-revs fileWorkspace backwards compatexamples/serversjson-vscode-extension/ -> vscode-playgroundClient -> JsonRPCClientLanguageClient -> BaseLanguageClient<verb>_document to <verb>_text_documentPosition classtypes moduledefault argument mandatory, add type annotationsLanguageClient with LSP methods autogenerated from type annotations in lsprotocol (#328)Client with support for running servers in a subprocess and communicating over stdio. (#328)textDocument/inlayHint and inlayHint/resolve requests (#342)pygls no longer overrides the event loop for the current thread when given an explicit loop to use. (#334)MethodTypeNotRegisteredError when registering a TEXT_DOCUMENT_DID_SAVE feature with options. (#338)LanguageServer type annotations when using string-based annotations. ([#352])Update typeguard to 3.x ([#327])
site-packages folder when installing pygls ([#232])
[#232]: https://github.com/openlawlibrary/pygls/issues/232Fix progress example in json extension. ([#230])
AttributeErrors in get_configuration_async, get_configuration_callback, get_configuration_threaded commands in json extension. (#307)get_configuration_async and get_configuration methods on LanguageServer and LanguageServerProtocol objects (#307)version param for publishing diagnostics (#303)<4 (#318)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →